функция в советник

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

С этим вопросом вы явно не по адресу.

Тут надо "брать за яйки" представителей вашего ДЦ !

Тогда "результат будет тот"

 
   for(int cnt=0;cnt<OrdersTotal();cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if( OrderSymbol()==Symbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
            if(Bid > OrderTakeProfit())
                {
                 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
                 return(0); // exit
                }
           }
         }
      }
 
satop >>:

распишите пожалуйстаь, что и к чему, что бы я смог подставить к своему советнику

 
   for(int cnt=0;cnt<OrdersTotal();cnt++)// Перебираем все ордера
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)//ордер выбирается среди открытых и отложенных ордеров
      if( OrderSymbol()==Symbol())// Совпадает ли символ ордера( Здесь по надобности ещё магик можно проверить)
        {
         if(OrderType()==OP_BUY)//Отбираем позицию бай
           {
            if(Bid > OrderTakeProfit())//Если цена ушла выше ТП ордера
              {
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем ордер
               return(0); // выходим
              }
           }
         }
      }
 
if(OrderType()==OP_BUY)   // long position is opened
в этой функции можно изменить на OP_SELL или добавить нужно как то. или нужно две таки функции в советник вставить: один на BUY, а другую на SELL??
 
if( OrderSymbol()==Magic)// Совпадает ли символ ордера( Здесь по надобности ещё магик можно проверить)
вот так??
 
   for(int cnt=0;cnt<OrdersTotal();cnt++)// Перебираем все ордера
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)//ордер выбирается среди открытых и отложенных ордеров
      if( OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)// Совпадает ли символ ордера( Здесь по надобности ещё магик можно проверить)
        {
         if(OrderType()==OP_BUY)//Отбираем позицию бай
           {
            if(Bid > OrderTakeProfit())//Если цена ушла выше ТП ордера
              {
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем ордер
               return(0); // выходим
              }
           }
          if(OrderType()==OP_BUY)//Отбираем позицию селл
           {
            if(Ask < OrderTakeProfit())//Если цена ушла ниже ТП ордера
              {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем ордер
               return(0); // выходим
              }
           }
         }
      }
 

спасибо огромное!!!!

 

выдает ошибку

'if' - semicolon expected C:\Program Files\MetaTrader - FXstart\experts\Паутина SELL.mq4 (267, 7)


 
   for(int cnt=0;cnt<OrdersTotal();cnt++)// Перебираем все ордера
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);//ордер выбирается среди открытых и отложенных ордеров
      if( OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)// Совпадает ли символ ордера( Здесь по надобности ещё магик можно проверить)
        {
         if(OrderType()==OP_BUY)//Отбираем позицию бай
           {
            if(Bid > OrderTakeProfit())//Если цена ушла выше ТП ордера
              {
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем ордер
               return(0); // выходим
              }
           }
          if(OrderType()==OP_BUY)//Отбираем позицию селл
           {
            if(Ask < OrderTakeProfit())//Если цена ушла ниже ТП ордера
              {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем ордер
               return(0); // выходим
              }
           }
         }
      }
Причина обращения: