Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Узнай, как установить MetaTrader на Mac OS
Igor Knyazkov
767
Igor Knyazkov 2016.07.23 19:02 

Здравствуйте. Не могу понять, почему выходит ошибка №1 от OrderModify()? Сами ордера модифицируются.  И еще...В тестере эта ошибка выходит по несколько раз в секунду тем самым раздувая файл журнала. Будет ли происходить тоже самое на реальном счете?

 for ( int j = OrdersTotal() - 1; j >= 0; j -- )
    {
    
        
        if(OrderSelect(j,SELECT_BY_POS))
      { 
    
    
    if(OrderType()==OP_BUY) 
    { 
       
  
     if(OrderStopLoss()<OrderOpenPrice()+delta*Point)
      {
        if(Bid-OrderOpenPrice()>=OrderOpenPrice()-OrderStopLoss())
           { 
            OrderModify(OrderTicket(),NormalizeDouble(OrderOpenPrice(),Digits), NormalizeDouble(OrderOpenPrice()+delta*Point,Digits),OrderTakeProfit(),0,clrAqua);
            
           }
      }
    } 
    
     if(OrderType()==OP_SELL) 
       {  
        if(OrderStopLoss()>OrderOpenPrice()-delta*Point)
            {
           
            if(OrderOpenPrice()-Ask>=OrderStopLoss()-OrderOpenPrice())
               { 
               
                 OrderModify(OrderTicket(),NormalizeDouble(OrderOpenPrice(),Digits), NormalizeDouble(OrderOpenPrice()-delta*Point,Digits),OrderTakeProfit(),0,clrAqua);
                
               }
            }   
       
       }
Mislaid
557
Mislaid 2016.07.24 05:55  
Ermak1243:

Здравствуйте. Не могу понять, почему выходит ошибка №1 от OrderModify()? Сами ордера модифицируются.  И еще...В тестере эта ошибка выходит по несколько раз в секунду тем самым раздувая файл журнала. Будет ли происходить тоже самое на реальном счете?

На реале вам могут отключить автоторговлю за слишком частые торговые приказы.

Стоп уже стоит, а вы пытаетесь его воткнуть по той же цене. Отсюда и ошибка, которая кроется в операторе

if(OrderStopLoss()>OrderOpenPrice()-delta*Point)

Можно исправить так

if(OrderStopLoss()>OrderOpenPrice()-delta*Point + 0.1*Point )
Igor Knyazkov
767
Igor Knyazkov 2016.07.24 09:36  
Mislaid:

На реале вам могут отключить автоторговлю за слишком частые торговые приказы.

Стоп уже стоит, а вы пытаетесь его воткнуть по той же цене. Отсюда и ошибка, которая кроется в операторе

Можно исправить так



Ошибки №1 уже нет, но теперь выходит ошибка №130...Как быть?
Mislaid
557
Mislaid 2016.07.24 10:15  
Ermak1243:
Ошибки №1 уже нет, но теперь выходит ошибка №130...Как быть?
Я вам уже писал "... нужно проверить допустимость уровня выставляемого стоплосса."
Igor Knyazkov
767
Igor Knyazkov 2016.07.24 10:18  
Mislaid:
Я вам уже писал "... нужно проверить допустимость уровня выставляемого стоплосса."
Упустил из виду)
Igor Knyazkov
767
Igor Knyazkov 2016.07.24 10:48  
Ermak1243:
Упустил из виду)
Вы имели ввиду так:      "if(!OrderModify(OrderTicket(),NormalizeDouble(OrderOpenPrice(),Digits), NormalizeDouble(OrderOpenPrice()-delta*Point,Digits),OrderTakeProfit(),0,clrAqua)) break;" ?    
Mislaid
557
Mislaid 2016.07.24 13:13  
Ermak1243:
Вы имели ввиду так:      "if(!OrderModify(OrderTicket(),NormalizeDouble(OrderOpenPrice(),Digits), NormalizeDouble(OrderOpenPrice()-delta*Point,Digits),OrderTakeProfit(),0,clrAqua)) break;" ?    

Совсем не так. Уровень стопа должен быть выше Ask, увеличенного, как минимум, на величину спреда. Конкретная величина зависит от ДЦ. В идеале, ее можно узнать с помощью MarketInfo(), но, не всегда.

Вообще, плохая идея ставить стоп близко к Ask.

Igor Knyazkov
767
Igor Knyazkov 2016.07.25 07:13  
Mislaid:

Совсем не так. Уровень стопа должен быть выше Ask, увеличенного, как минимум, на величину спреда. Конкретная величина зависит от ДЦ. В идеале, ее можно узнать с помощью MarketInfo(), но, не всегда.

Вообще, плохая идея ставить стоп близко к Ask.

Сделал как Вы сказали. Все работает!) Спасибо)
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий