Вопрос по отчетности

 
Есть следующий вопрос.
Когда ордер ставится - пишется время его выставления.
Когда он срабатывает - сие время меняется на время срабатывания.
Как мне получить в отчете и время выставления и время срабатывания?
Или я не там ищу...
 
Есть следующий вопрос.
Когда ордер ставится - пишется время его выставления.
Когда он срабатывает - сие время меняется на время срабатывания.
Как мне получить в отчете и время выставления и время срабатывания?
Или я не там ищу...

Вот так...
//+------------------------------------------------------------------------------------------------+
//| Определение факта срабатывания отложенного ордера                                          
//+------------------------------------------------------------------------------------------------+
   if((CountBuyStop>CalculationOfWarrants(Symbol(),0,4,0))||
      (CountSellStop>CalculationOfWarrants(Symbol(),0,5,0)))
   {//1
      int resSS=0,resSB=0,intSize=0;
      size=ArrayRange(InfoOpenOrders,0);
      for(i=0;i<size;i++)
      {//2
         if(OrderSelect(InfoOpenOrders[i][0],SELECT_BY_TICKET))
         {//3
            if(OrderType()==InfoOpenOrders[i][2]) continue;
            else
            {//4
               switch(OrderType())
               {//5
                  case OP_BUY:
                  CountOperations++;
                  WriteLineInFile(FileNameOfReport,GetCurRusTime()+"Торговая операция №"+CountOperations);
                  WriteLineInFile(FileNameOfReport,GetCurRusTime()
                  +"Сработал ордер BuyStop тикет "+DoubleToStr(InfoOpenOrders[i][0],0)
                  +" внутренний №"+DoubleToStr(InfoOpenOrders[i][1],0)+" на отметке: "
                  +DoubleToStr(InfoOpenOrders[i][3],Digits));
                  WriteLineInFile(FileNameOfReport,GetCurRusTime()
                  +"Открыта позиция Buy тикет "+DoubleToStr(InfoOpenOrders[i][0],0)
                  +" внутренний №"+DoubleToStr(InfoOpenOrders[i][1],0)+" по цене: "
                  +DoubleToStr(InfoOpenOrders[i][3],Digits));  
                  InfoOpenOrders[i][2]=OP_BUY;
                  FlagFractal="buy";
                  CountBuyStop--;
                  UseOfDeposit=UseOfDeposit+((NormalizeDouble(Ask,Digits)*1000)*OrderLots());
                  if(ToExposeContrwarrants&&AllowTrade)
                  {//6
                     WriteLineInFile(FileNameOfReport,"Разрешено выставление контрордеров!");
                     CountOrders++;
                     resSS=PerformanceOpenSellStop(Symbol(),Lots,(FractalDn-(Limit*Point)),5,StopLoss,TakeProfit,
                     CountOrders+" SellStop "+NameOfExpert,magicNumber,UseSoundInOperations,SoundOpenSellStop);
                     if(resSS>0)
                     {//7
                        CountSellStop++;TotalSellStop++;
                        intSize=ArrayRange(InfoOpenOrders,0);
                        ArrayResize(InfoOpenOrders,size+1);
                        InfoOpenOrders[intSize][0]=resSS;
                        InfoOpenOrders[intSize][1]=CountOrders;
                        InfoOpenOrders[intSize][2]=OP_SELLSTOP;            
                        InfoOpenOrders[intSize][3]=NormalizeDouble((FractalDn-(Limit*Point)),Digits);  
                     }//7
                     else
                     {//8
                        WriteLineInFile(FileNameOfReport,GetCurRusTime()+"Не удалось выставить отложенный контрордер!");
                        CountOrders--;
                     }//8
                  }//6
                  WriteLineInFile(FileNameOfReport,"");
                  break; 
                  case OP_SELL:
                  CountOperations++;
                  WriteLineInFile(FileNameOfReport,GetCurRusTime()+"Торговая операция №"+CountOperations);
                  WriteLineInFile(FileNameOfReport,GetCurRusTime()
                  +"Сработал ордер SellStop тикет "+DoubleToStr(InfoOpenOrders[i][0],0)
                  +" внутренний №"+DoubleToStr(InfoOpenOrders[i][1],0)+" на отметке: "
                  +DoubleToStr(InfoOpenOrders[i][3],Digits));
                  WriteLineInFile(FileNameOfReport,GetCurRusTime()
                  +"Открыта позиция Sell тикет "+DoubleToStr(InfoOpenOrders[i][0],0)
                  +" внутренний №"+DoubleToStr(InfoOpenOrders[i][1],0)+" по цене: "
                  +DoubleToStr(InfoOpenOrders[i][3],Digits));  
                  InfoOpenOrders[i][2]=OP_SELL;
                  FlagFractal="sell";
                  CountSellStop--;
                  UseOfDeposit=UseOfDeposit+((NormalizeDouble(Bid,Digits)*1000)*OrderLots());
                  if(ToExposeContrwarrants&&AllowTrade)
                  {//9
                     WriteLineInFile(FileNameOfReport,"Разрешено выставление контрордеров!");
                     CountOrders++;
                     resSB=PerformanceOpenBuyStop(Symbol(),Lots,(FractalUp+(Limit*Point)),5,StopLoss,TakeProfit,
                     CountOrders+" SellStop "+NameOfExpert,magicNumber,UseSoundInOperations,SoundOpenBuyStop);
                     if(resSB>0)
                     {//10
                        CountBuyStop++;TotalBuyStop++;
                        intSize=ArrayRange(InfoOpenOrders,0);
                        ArrayResize(InfoOpenOrders,size+1);
                        InfoOpenOrders[intSize][0]=resSB;
                        InfoOpenOrders[intSize][1]=CountOrders;
                        InfoOpenOrders[intSize][2]=OP_BUYSTOP;            
                        InfoOpenOrders[intSize][3]=NormalizeDouble(FractalUp+(Limit*Point),Digits);  
                     }//10
                     else
                     {//11
                        WriteLineInFile(FileNameOfReport,GetCurRusTime()+"Не удалось выставить отложенный контрордер!");
                        CountOrders--;
                     }//11
                  }//9
                  WriteLineInFile(FileNameOfReport,"");
                  break;                   
                  default:
                  WriteLineInFile(FileNameOfReport,GetCurRusTime()+"Путаница в ордерах на сервере!");
                  Print("Путаница в ордерах на сервере!");
                  break;
               }//5
            }//4
         }//3
         else
         {//4
            WriteLineInFile(FileNameOfReport,GetCurRusTime()+"Не удалось выбрать ордер "+ InfoOpenOrders[i][0]
            +" внутренний №"+InfoOpenOrders[i][1]+", причина: "+ErrorDescription(GetLastError()));      
            Print("Не удалось выбрать ордер "+ InfoOpenOrders[i][0]+" внутренний №"+InfoOpenOrders[i][1]
            +", причина: "+ErrorDescription(GetLastError()));
         }//4 
      }//2
   }//1

//+------------------------------------------------------------------------------------------------+
//| Конец определения факта срабатывания отложенного ордера                                          
//+------------------------------------------------------------------------------------------------+
 
2 Registr
Как самому записать это в лог - оно давно и так понятно.
Вопрос был по встроенному отчету самого терминала...
Потому как, если не стоит эксперта - то и некому записывать лог. :)
 
2 Registr
Как самому записать это в лог - оно давно и так понятно.
Вопрос был по встроенному отчету самого терминала...
Потому как, если не стоит эксперта - то и некому записывать лог. :)

К сожалению, в ордере не сохраняется время первичной установки.
Можно только внешним контролем решить вопрос.

Или писать в MagicNumber CurTime() - так Вы всегда будете знать когда выставлен ордер.
Причина обращения: