Пытаюсь задать разницу между двуми линиями индикатора, но все тщетно!!! - страница 2

 
Думаю, ещё можно ставить OrderTakeProfit() вместо TP, если он не изменяется.
 
WindSW >>:

Вы все оказались правы по поводу определения конкретного ордера.

Сделал так

, как и советовали. Ошибка 4051 действительно пропала, но появилась безобидная ошибка 1 :) Как мне теперь от нее избавиться?

Кстати, после изчезновения ошибки 4051, которая перла без остановки, исчезла проблема с разницей между линиями индикатора!!! Код сразу стал работоспособный!!!

Н о все таки, как теперь искоренить ошибку 1? Пишет следующее: 2009.06.25 23:20:41 2009.06.19 14:39 StohSig(4) GBPUSD,H1: OrderModify error 1 и так каждую секунду, но все выполняет как надо

Правка: хотя некоторые ордера не всегда модифицирует!


Если в качестве параметров функции передать неизмененные значения, то в этом случае будет сгенерирована ошибка 1 (ERR_NO_RESULT).

 

Попробовал изменить таким образом:

      if ((Bid-Price)>=(TS*Point))
         {
          SL=Price;
          if (OrderSelect(Ticket,SELECT_BY_TICKET)==true) 
            OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0);
         }

Ошибок меньше не стало. У меня есть подозрение что этот блок как-то конфликтует с блоком перебора ордеров. Кому не трудно, проверьте правильность этого кода (точнее есть ли здесь конфликт между блоками):

 

    // Учёт ордеров
   Symb=Symbol();  
   Total=0;
   for(int i=1; i<=OrdersTotal(); i++) 
     {
      if (OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true) 
        { 
         if (OrderSymbol()!=Symb)continue;  
         Total++;  
         if (Total>1)  
           {
            Alert("Несколько рыночных ордеров. Эксперт не работает.");
            return;       
           }
         Ticket=OrderTicket(); 
         Tip   =OrderType(); 
         Price =OrderOpenPrice();
         SL    =OrderStopLoss(); 
         TP    =OrderTakeProfit();
         Lot   =OrderLots();
        }
     }
//------------------------------ SL modify -------------------------------------

double TS=Lewel;
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);
if (TS<Min_Dist)
TS=Min_Dist;

if (Tip==0)//тип buy
   if (SL<Price)
      if ((Bid-Price)>=(TS*Point))
         {
          SL=Price;
          if (OrderSelect(Ticket,SELECT_BY_TICKET)==true) 
            OrderModify(Ticket,Price,SL,OrderTakeProfit(),0);
         }
   if (SL==Price)
      if ((Bid-Price)>=((TS*2)*Point))
         {
          SL=Price+TS*Point;
          if (OrderSelect(Ticket,SELECT_BY_TICKET)==true) 
            OrderModify(Ticket,Price,SL,OrderTakeProfit(),0);
         }
   if (Lewel_3rd==true)
      if (SL>Price)
         if ((Bid-Price)>=((TS*2)+(TS/2))*Point)
            {
             SL=Price+(TS*2)*Point;
             if (OrderSelect(Ticket,SELECT_BY_TICKET)==true) 
               OrderModify(Ticket,Price,SL,OrderTakeProfit(),0);
            }
if (Tip==1)//тип sell
   if (SL>Price)
      if ((Price-Ask)>=(TS*Point))
         {
          SL=Price;
          if (OrderSelect(Ticket,SELECT_BY_TICKET)==true) 
            OrderModify(Ticket,Price,SL,OrderTakeProfit(),0);
         }
   if (SL==Price)
      if ((Price-Ask)>=((TS*2)*Point))
         {
          SL=Price-TS*Point;
          if (OrderSelect(Ticket,SELECT_BY_TICKET)==true) 
            OrderModify(Ticket,Price,SL,OrderTakeProfit(),0);
         }
   if (Lewel_3rd==true)
      if (SL==Price)
         if ((Price-Ask)>((TS*2)+(TS/2))*Point)
            {
             SL=Price-(TS*2)*Point;
             if (OrderSelect(Ticket,SELECT_BY_TICKET)==true) 
               OrderModify(Ticket,Price,SL,OrderTakeProfit(),0);
            }


Заранее благодарен!!!

 

А так не пробовали?

      if ((Bid-Price)>=(TS*Point))
         {
          SL=Price;
          if (OrderSelect(Ticket,SELECT_BY_TICKET)==true) 
            OrderModify(Ticket,OrderOpenPrice(),SL,OrderTakeProfit(),0,0);
         }
 
WindSW >>:

Попробовал изменить таким образом:

Ошибок меньше не стало. У меня есть подозрение что этот блок как-то конфликтует с блоком перебора ордеров. Кому не трудно, проверьте правильность этого кода (точнее есть ли здесь конфликт между блоками):

 


Заранее благодарен!!!



Была ведь одна ошибка1, а сейчас ОШИБОК меньше не стало. Откуда взялись другие ошибки, не пойму?

 
FOReignEXchange >>:

Была ведь одна ошибка1, а сейчас ОШИБОК меньше не стало. Откуда взялись другие ошибки, не пойму?

Присутствует одна ошибка - Error 1, но эта ошибка повторяется все время, пока работает эксперт

Причина обращения: