void ЗакрытьЧерезХМинут(int min=0){ if(min==0){return;} if(Digits==5||Digits==3){double mno=10;}else{mno=1;} int slip=MarketInfo(Symbol(),MODE_SPREAD)*mno; for(int i=OrdersTotal()+1;i>=0;i--){ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){ if(OrderOpenTime()+min*60>TimeCurrent()){ if(OrderType()>1){ OrderDelete(OrderTicket()); }else{ if(OrderType()==0){color col=Blue;}else{col=Red;} OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(OrderClosePrice(),Digits),slip,col); } } } } return; }
Добрый день всем! :)
Помогите, пожалуйста, разобраться со странной проблемой...
Заметил, что ордера закрываются в неожиданный момент разом... Поставил перед закрытием Алерт, а он мне выдаёт отрицательное значение для max_holding!!!
Сообщение алерта: tc: 1257914946; >> OrderOpenTime(): 1257902950; ++ max_holding-1959738368
По такому куску кода разобраться невозможно. Причина где-то в другом месте. Кто-то прописывает память, занятую переменной max_holding (если, конечно, она явно не меняется в какой-либо другой функции)
Спасибо за помощь, разобрался =) Оказывается функция init() запускалась в ходе работы эксперта (кстати почему такое могло быть, вы не знаете?).
А в этой функции был перевод в минуты из секунд: max_holding *= 60;
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день всем! :)
Помогите, пожалуйста, разобраться со странной проблемой...
Заметил, что ордера закрываются в неожиданный момент разом... Поставил перед закрытием Алерт, а он мне выдаёт отрицательное значение для max_holding!!!
Сообщение алерта: tc: 1257914946; >> OrderOpenTime(): 1257902950; ++ max_holding-1959738368