Есть следующий вопрос.
Когда ордер ставится - пишется время его выставления.
Когда он срабатывает - сие время меняется на время срабатывания.
Как мне получить в отчете и время выставления и время срабатывания?
Или я не там ищу...
Когда ордер ставится - пишется время его выставления.
Когда он срабатывает - сие время меняется на время срабатывания.
Как мне получить в отчете и время выставления и время срабатывания?
Или я не там ищу...
Вот так...
//+------------------------------------------------------------------------------------------------+
//| Определение факта срабатывания отложенного ордера
//+------------------------------------------------------------------------------------------------+
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() - так Вы всегда будете знать когда выставлен ордер.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Когда ордер ставится - пишется время его выставления.
Когда он срабатывает - сие время меняется на время срабатывания.
Как мне получить в отчете и время выставления и время срабатывания?
Или я не там ищу...