Комментарий (может быть изменён сервером), магик (неудобно по отношению к другим советникам), глобальные переменные (удаляются через некоторое время, если не использовались (вроде 30 дней было)), файл. Без кода не понятно, что именно не получается
int start() { //нужна эта строчка ниже if(профит<0) balans=print();// если последняя сделка закрылась с минусом,то балансу присвоим прошлый баланс ticket1 = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0,"", Magic, 0, Blue); if (ticket1 > 0) { Print("Баланс на время открытия ордера",AccountBalance()); } return(0); } //+------------------------------------------------------------------+ string print() { datetime time=0; for(int f=OrdersHistoryTotal()-1; f>=0; f--) { if(OrderSelect(f,SELECT_BY_POS,MODE_HISTORY)) { if(OrderSymbol()==Symbol()) { if(OrderMagicNumber()==Magic)// || Magic==-1) { if(OrderCloseTime()>time) { time=OrderCloseTime(); string print=OrderPrint(); // для профита так double profit=OrderProfit(); } } } } } return(print); } //-----------------------------------------------------------
ticket1 = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "" , Magic, 0, Blue);
Так вы ведь не задали баланс при выставлении ордера. Вставьте вместо кавычек что-то вроде (выделяем чем-то, что-бы суметь вытащить, если ДЦ поменяет комментарий):
"_" + DoubleToStr(AccountBalance() + "_"
ну и найти значение из OrderComment():
comment = OrderComment(); int firstTag = StringFind(comment, "_"); int finishTag = StringFind(comment, "_", firstTag + 1); double positionBalance = 0; if (finishTag > firstTag) { positionBalance = StrToDouble(StringSubstr(comment, firstTag + 1, finishTag - firstTag - 1); } else { positionBalance = 0;//не удалось найти }P. S. Накидал на глаз, не проверял, но суть должна быть ясна и для дебага информация тоже есть
Так вы ведь не задали баланс при выставлении ордера. Вставьте вместо кавычек что-то вроде (выделяем чем-то, что-бы суметь вытащить, если ДЦ поменяет комментарий):
ну и найти значение из OrderComment():
P. S. Накидал на глаз, не проверял, но суть должна быть ясна и для дебага информация тоже естьВообще, баланс счета на момент открытия любого ордера можно посчитать по истории. Если она доступна полностью, конечно.
Вообще, баланс счета на момент открытия любого ордера можно посчитать по истории. Если она доступна полностью, конечно.
Не понял Разве люди здесь не говорят об МТ4
Где примерной код?
А то в МТ4 такое чудище:
printf("ACCOUNT_BALANCE = %G",AccountInfoDouble(ACCOUNT_BALANCE));
нигде не найдёшь.
Не понял Разве люди здесь не говорят об МТ4
Где примерной код?
А то в МТ4 такое чудище:
printf("ACCOUNT_BALANCE = %G",AccountInfoDouble(ACCOUNT_BALANCE));
нигде не найдёшь.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте.
При переборе ордеров в архиве определяю профит,объём,и никак не могу найти какой был баланс, на момент открытия выбранного ордера,который в убыток попал.Пытался: записать его в комент, и через OrderComment() вытащить, не получилось; при открытии ордера в Print записать, через OrderPrint() из журнала тоже достать не смог.