Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Зарегистрируйся на MQL5.community и оставляй комментарии!
gabaritufa
90
gabaritufa 2014.03.13 08:19 


 (MA2L_Main_1 > MA2L_Signal_1 // Синяя линия вверху красной.
if( (MA2L_Main_1 > MA2L_Signal_1) && CountTrades()==0)       
       {
         PriceNow = NormalizeDouble(Ask + Fix * Point,Digits);
         TP       = NormalizeDouble(PriceNow + Takeprofit * Point,Digits);
         SL       = NormalizeDouble(PriceNow - Stoploss * Point,Digits);
         OrderSend(Symbol(),OP_BUYSTOP,Lot,PriceNow,Slippage,SL,TP,Coment,Magic,0,Blue);
         
      }
  
 if(MA2L_Main_1 < MA2L_Signal_1)
   {
      for (trade = OrdersTotal()-1; trade>=0; trade--)
      {
         if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true)
         {
            if (OrderType()==OP_BUYSTOP)                   
                OrderClose(OrderTicket(), OrderLots(),Bid,Slippage, Black);
         }
      }   
   }
 
Victor Nikolaev
Модератор
14031
Victor Nikolaev 2014.03.13 08:23  
gabaritufa:


Отложенный ордер не закрывают, а удаляют

OrderDelete()
gabaritufa
90
gabaritufa 2014.03.13 08:36  
спасибо большое, чуть мозг не взорвался пока решение искал самостоятельно
gabaritufa
90
gabaritufa 2014.03.13 09:15  

Вопрос по тому же коду. Советник не открывает противоположный ордер, Buy открывает, а sell ни в какую, может функция count неправильная

 if( (MA2L_Main_1 > MA2L_Signal_1) && CountTrades()==0) 
   {  if(Blue_1!=Blue_0)
      {
         PriceNow = NormalizeDouble(Ask + Fix * Point,Digits);
         TP       = NormalizeDouble(PriceNow + Takeprofit * Point,Digits);
         SL       = NormalizeDouble(PriceNow - Stoploss * Point,Digits);
         OrderSend(Symbol(),OP_BUYSTOP,Lot,PriceNow,Slippage,SL,TP,Coment,Magic,0,Blue);
         
      }
   }
   
    if ((MA2L_Main_1 < MA2L_Signal_1) && CountTrades()==0)
   {     if(Red_1!=Red_0)
            {
              PriceLow = NormalizeDouble(Bid + Fix * Point,Digits);
              TP       = NormalizeDouble(PriceLow + Takeprofit * Point,Digits);
              SL       = NormalizeDouble(PriceLow - Stoploss * Point,Digits);
              OrderSend(Symbol(),OP_SELLSTOP,Lot,PriceLow,Slippage,SL,TP,Coment,Magic,0,Red); 
            }
   }  
  
int CountTrades()
{
     int count = 0;
     for(int i=OrdersTotal()-1; i>=0; i--)
     {
         if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
            count++;
            
         }
     }
            
     return(count);
}
Victor Nikolaev
Модератор
14031
Victor Nikolaev 2014.03.13 09:38  
gabaritufa:

Вопрос по тому же коду. Советник не открывает противоположный ордер, Buy открывает, а sell ни в какую, может функция count неправильная


Отложенный ордер
Отложенный ордер — это распоряжение брокерской компании купить или продать финансовый инструмент в будущем по заданной цене. Данный ордер используется для открытия торговой позиции при условии равенства будущих котировок установленному уровню. Существует четыре типа отложенных ордеров:

·Buy Limit — купить при равенстве будущей цены "Ask" установленному значению. При этом текущий уровень цен больше значения установленного ордера. Обычно ордера этого типа выставляются в расчете на то, что цена инструмента, опустившись до определенного уровня, начнет расти;

·Buy Stop — купить при равенстве будущей цены "Ask" установленному значению. При этом текущий уровень цен меньше значения установленного ордера. Обычно ордера этого типа выставляются в расчете на то, что цена инструмента преодолеет некий уровень и продолжит свой рост;

·Sell Limit — продать при равенстве будущей цены "Bid" установленному значению. При этом текущий уровень цен меньше значения установленного ордера. Обычно ордера этого типа выставляются в расчете на то, что цена инструмента, поднявшись до определенного уровня, начнет снижаться;

·Sell Stop — продать при равенстве будущей цены "Bid" установленному значению. При этом текущий уровень цен больше значения установленного ордера. Обычно ордера этого типа выставляются в расчете на то, что цена инструмента достигнет определенного уровня и продолжит снижаться.

PriceLow = NormalizeDouble(Bid - Fix * Point,Digits);
TP       = NormalizeDouble(PriceLow - Takeprofit * Point,Digits);
SL       = NormalizeDouble(PriceLow + Stoploss * Point,Digits);
gabaritufa
90
gabaritufa 2014.03.13 10:38  
Vinin:


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