Объясните мне зачем и почему (про OrderSelect()) - страница 4

 
Korey:
         t=OrderCloseTime();
         if(...&&t==0) 

Это лишнее.

 

to komposter

У меня так, проверял на смеси. Иначе не получается. Т.е. "не доверяю" MODE_TRADES,
да и описании где то есть - проверяйте де мол время закрытия.

 
Korey:
В цикле выбираю по позиции и проверяю время. Только Так.
void OrderTrailingStop(int MagicNumber)
  { 
if(TrailingStop>=10)
   {
     for(int i=0;i<OrdersTotal();i++)
      {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
        {
//================================================Безубыток=============================================  
      if(UseLossless)
      {
        if(OrderType()==OP_BUY && 
           Bid-OrderOpenPrice()>Point*(MarketStopLevel+MarketSpread+TrailingStep) && OrderStopLoss()<OrderOpenPrice())
           {
            ErrorCheckOut(OrderModify(OrderTicket(),0,Bid-Point*(MarketStopLevel+MarketSpread),OrderTakeProfit(),0,Blue));
            PlaySound("ok.wav");
           }      
        if(OrderType()==OP_SELL && 
           OrderOpenPrice()-Ask > Point*(MarketStopLevel+MarketSpread+TrailingStep)&& OrderStopLoss()>OrderOpenPrice())
           {
            ErrorCheckOut(OrderModify(OrderTicket(),0,Ask+Point*(MarketStopLevel+MarketSpread),OrderTakeProfit(),0,Blue));
            PlaySound("ok.wav");
           }       
      }
//================================================Трал=============================================
            if(OrderType()==OP_BUY)
            {
             if(Bid-OrderOpenPrice()>Point*(TrailingStop+TrailingStep) && OrderStopLoss()<Bid-Point*(TrailingStop+TrailingStep)&& CDeMFastC<=CDeMFastP)
              {
               ErrorCheckOut(OrderModify(OrderTicket(),0,Bid-Point*TrailingStop,OrderTakeProfit(),0,Blue));
               PlaySound("ok.wav");
              }
            }

//=================================================
            if(OrderType()==OP_SELL)
            {
             if(OrderOpenPrice()-Ask > Point*(TrailingStop+TrailingStep) && OrderStopLoss()> Ask+Point*(TrailingStop+TrailingStep)&& CDeMFastC>=CDeMFastP)
              {
               ErrorCheckOut(OrderModify(OrderTicket(),0,Ask+Point*TrailingStop,OrderTakeProfit(),0,Blue));
               PlaySound("ok.wav");
              }
            }
            
//=================================================================================================
            if(OrderType()==OP_BUYSTOP && CTaichiFUP>0)
              {
               if(CTaichiFDN>Ask && OrderOpenPrice()>CTaichiFUP && CTaichiFUP-Ask>MarketStopLevel*Point)
               {
                  ErrorCheckOut(OrderModify(OrderTicket(),CTaichiFUP,CTaichiFUP-Point*StopLoss,CTaichiFUP+Point*TakeProfit,TimeCurrent()+86400,Blue));
               }    
              }

//=================================================================================================
            if(OrderType()==OP_SELLSTOP && CTaichiFDN>0)
              {
              if(CTaichiFUP<Bid && OrderOpenPrice()<CTaichiFDN && Bid-CTaichiFDN>MarketStopLevel*Point)
               {
                  ErrorCheckOut(OrderModify(OrderTicket(),CTaichiFDN,CTaichiFDN+Point*StopLoss,CTaichiFDN-Point*TakeProfit,TimeCurrent()+86400,Red));
               }  

              }
            
        }
      }
    }
//----
  }
А можно и так... Вопрос только в логике применения и целях конкретной ситуации
 
Korey:

У меня так, проверял на смеси. Иначе не получается. Т.е. "не доверяю" MODE_TRADES,
да и описании где то есть - проверяйте де мол время закрытия.

Повторюсь, обычному (незацикленному, работающему меньше секунды) эксперту проверка OrderCloseTime() не нужна.
Если без нее не работает, ошибка в логике программы.

 

to komposter

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

 
Korey:

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

Тогда проверка нужна только в случае близких стопов или вмешательства со стороны.
Иначе ордера сами не закрываются ;)

 

to komposter

1.если бы OrderCloseTime() обращалась к серверу, то Ваше возражение серьезное,
иначе,без обращения этой функции в серверу - (даже) "лишняя проверка" не помешает.
2.Если же эта проверка прячет дефект моего алгоритма, ... но опять же все ровно...

3. OrderCloseTime() понадобилась чтобы отсеять отложенныео рдера выбранные по номеру позиции, а иначе они проходили на закрытие через OP_BUY