Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 515

 
artmedia70:
С такими вопросами вам нужно идти в ветку с обсуждением 610-го билда - там разработчики рядом


Спасибо, ушел
 
Zolotai:

Да, но ведь. Нужно ковыряться в чужих кодах. Которые мне не понятны и уйдет куча времени. На то,чтобы разобраться в нем=(

Начинайте с Учебника, потом Документация и т.д. Другого пути нет! И сможете разбираться в чужих кодах и многому у них поучиться! Подсказки не учат, а развращают!
 

Вопрос насчет визуализации.

Создаю отложенный ордер командой типа

OrderSend(Symbol(), OP_BUYLIMIT, lot, price, 3, 0, take_profit, 999, 999, 0, Blue);

В тестере в виде стрелочек прослеживается весь его путь: постановка отложенного ордера ------> покупка --------------> продажа по тейк-профиту

А в реале появляется только синяя стрелочка при постановке ордера, а о покупке и тейкпрофите можно только догадываться по журналам. Есть ли какая-нить возможность видеть в реале на графике стрелочки так-же как и в тестере?

 
Denis111:

Вопрос насчет визуализации.

Создаю отложенный ордер командой типа

OrderSend(Symbol(), OP_BUYLIMIT, lot, price, 3, 0, take_profit, 999, 999, 0, Blue);

В тестере в виде стрелочек прослеживается весь его путь: постановка отложенного ордера ------> покупка --------------> продажа по тейк-профиту

А в реале появляется только синяя стрелочка при постановке ордера, а о покупке и тейкпрофите можно только догадываться по журналам. Есть ли какая-нить возможность видеть в реале на графике стрелочки так-же как и в тестере?


Для этого надо открывать без ТП, и потом при модификации тоже указать цвет, и будет вам трегольничек закрытия с пунктирной прямой от самого открытия!
 

Добрый день, написал простейший скрипт открытия отложенного ордера на бай. Скрипт успешно работает на ДЕМО счете, а на реальном счете выдает ошибку: 133, что означает торговля запрещена. Подскажите, в чем проблема? Из-за чего может выскакивать эта ошибка?


extern int orderSize = 50;
extern int SL = 20;
extern int TP = 20;

int start()
{
double correctPoint = 0.0001;
double priceOpen = iOpen( Symbol(), PERIOD_M5, 0 ); //записываем в переменную priceOpen цену открытия текущего пятиминутного бара

double priceBuy = priceOpen + (double)orderSize * correctPoint; //цена, на которую ставиться отложенный ордер
double priceTP = priceBuy + (double)TP * correctPoint;
double priceSL = priceBuy - (double)SL * correctPoint;

while( !IsTradeAllowed() )
Sleep( 100 );
int codeError = OrderSend( Symbol(), OP_BUYSTOP, 1.5, priceBuy, 100, priceSL, priceTP );
if( codeError == -1 )
Alert ( "Ошибка BuyStop: ", GetLastError() );

return(0);
}//±
 
И здесь оказывается есть такие, которые пол форума засерают одним вопросом.
 

хочу состряпать простенькую сову..... скрипт при выставлении 1-го ордера SL и TP выдает ошибку 130, и куда вставить код с Tralingstop???

//+------------------------------------------------------------------+
//| установка мышкой отложенных ордеров                              |
//|                               Copyright © 2012, Хлыстов Владимир |
//|                                                cmillion@narod.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Хлыстов Владимир"
#property link      "cmillion@narod.ru"
#property show_inputs

//--------------------------------------------------------------------
extern int     Stoploss          = 0,     //стоплосс ордеров
               Takeprofit        = 0;     //тейкпрофит ордеров
extern double  Lot               = 0.1;   //лот
extern int     Magic             = 0;     //уникальный номер ордеров этого советника
extern bool    comment           = true;  //выводить информацию на экран
//--------------------------------------------------------------------
int start()
{
   int n;
   double SL,TP;
   double Price = NormalizeDouble(WindowPriceOnDropped(),Digits);
   string txt=StringConcatenate("Скрипт выставления рыночного ордера, старт ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
   while(true)
   {
      RefreshRates();
      if(Price>Ask) 
      {
         if (Takeprofit!=0) TP = NormalizeDouble(Ask + Takeprofit * Point,Digits); else TP=0;
         if (Stoploss!=0)   SL = NormalizeDouble(Ask - Stoploss   * Point,Digits); else SL=0;
         if (OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),0,SL,TP,"StopOrders",Magic,0,CLR_NONE)!=-1)
              {txt = StringConcatenate(txt,"\nВыставлен BUY ",DoubleToStr(Ask,Digits));break;}
         else txt = StringConcatenate(txt,"\nОшибка ",GetLastError()," выставления BUY ");
      }
      if(Price<Bid) 
      {
         if (Takeprofit!=0) TP = NormalizeDouble(Bid - Takeprofit * Point,Digits); else TP=0;
         if (Stoploss!=0)   SL = NormalizeDouble(Bid + Stoploss   * Point,Digits); else SL=0;
         if (OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),0,SL,TP,"StopOrders",Magic,0,CLR_NONE)!=-1)
              {txt = StringConcatenate(txt,"\nВыставлен SELL ",DoubleToStr(Bid,Digits));break;}
         else txt = StringConcatenate(txt,"\nОшибка ",GetLastError()," выставления SELL ");
      }
      if (comment) Comment("Попытка ",n," ",txt);
      n++;
      if (n>10) break;
   }
   if (comment) Comment(txt,"\nСкрипт закончил свою работу ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
   return(0);
}
//--------------------------------------------------------------------
 
MyTHblu:

хочу состряпать простенькую сову..... скрипт при выставлении 1-го ордера SL и TP выдает ошибку 130, и куда вставить код с Tralingstop???


130 - стопы неправильные. Внимательно ещё раз торговые условия своего ДЦ почитать, а потом регулярно перечитывать, чтобы не забыть. Что вам всем так альпари-то нравится, как мёдом намазано...


А код трала можно и в старт вставить копипастом, а можно отдельной функцией, опять же из старта вызывать.

 
evillive:

130 - стопы неправильные. Внимательно ещё раз торговые условия своего ДЦ почитать, а потом регулярно перечитывать, чтобы не забыть. Что вам всем так альпари-то нравится, как мёдом намазано...


А код трала можно и в старт вставить копипастом, а можно отдельной функцией, опять же из старта вызывать.


Как он взял этот сов из КодоБазы, также может выбрать другой с тралом. А в Альпах нужно открывать без СЛ и ТП и тут же модифицировать ордер, поставив их. Почему не удосуживаются сами ознакомиться с условиями брокера, правилами форума, справкой в МТ4 и написанной и сто раз обсуждённой инфы тут на сайте, пользоваться поиском тут и в Гугле? Перед тем, как спрашивать элементарные вещи?
 

как соединить коды....вот trading stop... куда я его только не вставлял, может в нем ошибка, при компиляции пишет 'if' - expressions are not allowed on a global scop, это вроде значит что ошибка до if....так?

extern bool UseTrailing = true;
extern int lMinProfit = 30;
extern int sMinProfit = 30;
extern int lTrailingStop = 15;
extern int sTrailingStop = 15;
extern int lTrailingStep = 5;
extern int sTrailingStep = 5;
//-----

if (UseTrailing) TrailingPositions();  

void TrailingPositions() 
{
  int cnt = OrdersTotal();

  for (int i=0; i<cnt; i++) {
        if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
        if (OrderSymbol() != Symbol()) continue;                

        if (OrderType() == OP_BUY) {
        if (Bid-OrderOpenPrice() > lMinProfit*Point) {
                if (OrderStopLoss() < Bid-(lTrailingStop+lTrailingStep-1)*Point) {
                OrderModify(OrderTicket(), OrderOpenPrice(), Bid-lTrailingStop*Point, OrderTakeProfit(), 0, Blue);
                }
        }
        }

        if (OrderType() == OP_SELL) {
        if (OrderOpenPrice()-Ask > sMinProfit*Point) {
                if (OrderStopLoss() > Ask+(sTrailingStop+sTrailingStep-1)*Point || OrderStopLoss() == 0) {
                OrderModify(OrderTicket(), OrderOpenPrice(), Ask+sTrailingStop*Point, OrderTakeProfit(), 0, Blue);
                }
        }
        }
  }
  
}
Причина обращения: