Скачать MetaTrader 5

Как модифицировать советник под рыночное исполнение сделок?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нужен торговый робот? Закажи его в сервисе Фриланс!
Vladimir
46
Vladimir 2011.08.08 13:32 
Vladimir
46
Vladimir 2011.08.08 13:37  
Советник перестал работать, после перевода брокером открытие ордеров на рыночное исполнение сделок!!! Как изменить код? Написано следующее: void OpenMarketOrders() { int cnt=0; if (myOrderType==1 &&ContinueOpening) { if ((Bid-LastPrice)>=Pips*Point || OpenOrders 12) { mylotsi=NormalizeDouble(mylotsi*multiply,2); } else { mylotsi=NormalizeDouble(mylotsi*multiply,2); } } } else { mylotsi=lotsi; } if (mylotsi>100) { mylotsi=100; } OrderSend(Symbol(),OP_SELL,mylotsi,SellPrice,slippage,sl,tp,"Roy_MM"+MagicNumber,MagicNumber,0,ArrowsColor); return(0); }
Vladimir
46
Vladimir 2011.08.08 13:40  
Поставил нули на месте стоп-лоса и тека ордера открываются, а как дальше модифицировать?
ilunga
744
ilunga 2011.08.08 13:42  
roy64:
Поставил нули на месте стоп-лоса и тека ордера открываются, а как дальше модифицировать?

Функция OrderModify()


Торговые приказы для модификации рыночных и отложенных ордеров формируются с помощью функции OrderModify().

bool OrderModify(int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE)

Функция изменяет параметры рыночных и отложенных ордеров. Функция возвращает TRUE при успешном исполнении торговой операции и FALSE при неудачном.

Параметры:

ticket - уникальный порядковый номер ордера.

price - новая заявленная цена для отложенного ордера или цена открытия рыночного ордера.

stoploss - новое значение StopLoss.

takeprofit - новое значение TakeProfit.

expiration - время истечения отложенного ордера.

arrow_color - цвет стрелок модификации StopLoss и/или TakeProfit на графике. Если параметр отсутствует или его значение равно CLR_NONE, то стрелки на графике не отображаются.

Замечания: цену открытия и время истечения можно изменять только для отложенных ордеров.

Vladimir
46
Vladimir 2011.08.08 13:43  
void OpenMarketOrders() { int cnt=0; if (myOrderType==1 &&ContinueOpening) { if ((Bid-LastPrice)>=Pips*Point || OpenOrders 12) { mylotsi=NormalizeDouble(mylotsi*multiply,2); } else { mylotsi=NormalizeDouble(mylotsi*multiply,2); } } } else { mylotsi=lotsi; } if (mylotsi>100) { mylotsi=100; } OrderSend(Symbol(),OP_SELL,mylotsi,SellPrice,slippage,sl,tp,"Roy_MM"+MagicNumber,MagicNumber,0,ArrowsColor); return(0); }
Vladimir
46
Vladimir 2011.08.08 13:48  
Как тут код прописать, чтобы нормально выглядел?))
Всеволод
648
Всеволод 2011.08.08 13:49  
roy64:
Как тут код прописать, чтобы нормально выглядел?))
Кнопочка SRC
Vladimir
46
Vladimir 2011.08.08 13:51  
применял, но модификация не происходит, где ошибка не пойму?
Vladimir
46
Vladimir 2011.08.08 13:55  


void OpenMarketOrders()
{         
   int cnt=0;      
      if (myOrderType==1 && ContinueOpening) 
      {       
             if ((Bid-LastPrice)>=Pips*Point || OpenOrders<1) 
             {                  
                    SellPrice=Bid;                              
                    LastPrice=0;
                    if (TakeProfit==0) { tp=0; }
                    else { tp=SellPrice-TakeProfit*Point; }     
                    if (StopLoss==0) { sl=0; }
                    else { sl=SellPrice+StopLoss*Point;  }
                    if (OpenOrders!=0) 
                    {
                              mylotsi=lotsi;                    
                              for(cnt=0;cnt<OpenOrders;cnt++)
                              {
                                     if (MaxTrades>12) { mylotsi=NormalizeDouble(mylotsi*multiply,2); }
                                     else { mylotsi=NormalizeDouble(mylotsi*multiply,2); }
                              }
                    } else { mylotsi=lotsi; }
                    if (mylotsi>100) { mylotsi=100; }                       
                    OrderSend(Symbol(),OP_SELL,mylotsi,SellPrice,slippage,sl,tp,"Roy_MM"+MagicNumber,MagicNumber,0,ArrowsColor);                                    
                    return(0);
             }
Vladimir
46
Vladimir 2011.08.08 13:58  
ilunga:

Функция OrderModify()


Торговые приказы для модификации рыночных и отложенных ордеров формируются с помощью функции OrderModify().

Функция изменяет параметры рыночных и отложенных ордеров. Функция возвращает TRUE при успешном исполнении торговой операции и FALSE при неудачном.

Параметры:

ticket - уникальный порядковый номер ордера.

price - новая заявленная цена для отложенного ордера или цена открытия рыночного ордера.

stoploss - новое значение StopLoss.

takeprofit - новое значение TakeProfit.

expiration - время истечения отложенного ордера.

arrow_color - цвет стрелок модификации StopLoss и/или TakeProfit на графике. Если параметр отсутствует или его значение равно CLR_NONE, то стрелки на графике не отображаются.

Замечания: цену открытия и время истечения можно изменять только для отложенных ордеров.


Никак не могу применить эту функцию, не работает:

void OpenMarketOrders()
{         
   int cnt=0;      
      if (myOrderType==1 && ContinueOpening) 
      {       
             if ((Bid-LastPrice)>=Pips*Point || OpenOrders<1) 
             {                  
                    SellPrice=Bid;                              
                    LastPrice=0;
                    if (TakeProfit==0) { tp=0; }
                    else { tp=SellPrice-TakeProfit*Point; }     
                    if (StopLoss==0) { sl=0; }
                    else { sl=SellPrice+StopLoss*Point;  }
                    if (OpenOrders!=0) 
                    {
                              mylotsi=lotsi;                    
                              for(cnt=0;cnt<OpenOrders;cnt++)
                              {
                                     if (MaxTrades>12) { mylotsi=NormalizeDouble(mylotsi*multiply,2); }
                                     else { mylotsi=NormalizeDouble(mylotsi*multiply,2); }
                              }
                    } else { mylotsi=lotsi; }
                    if (mylotsi>100) { mylotsi=100; }                       
                   OrderSend(Symbol(),OP_SELL,mylotsi,SellPrice,slippage,0,0,"Roy_MM"+MagicNumber,MagicNumber,0,ArrowsColor);
                                    {
           OrderModify(Symbol(),OrderOpenPrice(),sl,tp,0,Blue);                             
                    return(0);
                    }
                    
             }
             
Vladimir
46
Vladimir 2011.08.08 13:59  
roy64:


Никак не могу применить эту функцию, не работает:


что не так делаю!?((
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий