Почему советник не закрывает ордера в нужное время?

 

Здравствуйте! В советнике, перед начислением свопа, необходимо закрыть часть ордеров, чтобы сократить убытки. Код такой:

extern string _timeStart = "21:30";//////////

extern string _timeStop = "21:58";//////////

...

//--------------------------------------------------------------------------------------------

datetime _endTrade, _startTrade;//////

_startTrade=StrToTime(_timeStart);/////

_endTrade=StrToTime(_timeStop);//////

bool _tradeAllowed=(TimeCurrent()>_startTrade && TimeCurrent()<_endTrade);////////

if (_tradeAllowed)

{

Close();

}

//-------------------------------------------------------------------------------

В тестере закрывает нормально, а на реале нет. Подскажите, где ошибка?

 
а чему равны tradeAllowed, startTrade, endTrade, TimeCurrent ?
 
sergeev:
а чему равны tradeAllowed, startTrade, endTrade, TimeCurrent ?

Я тут почитал:
datetime TimeCurrent( )
Возвращает последнее известное время сервера (время прихода последней котировки) в виде количества секунд, прошедших после 00:00 1 января 1970 года.

Замечание: при тестировании последнее известное время сервера моделируется.
и ничего не понял, т.к. в программировании особо не силен... Может подскажете правильный код, чтобы закрывал с 21.30 до 21.58 (перед свопом)?
 
чему у вас равны tradeAllowed, startTrade, endTrade, TimeCurrent в нужное время?
 

sergeev:
чему у вас равны tradeAllowed, startTrade, endTrade, TimeCurrent в нужное время?

Вот сейчас в терминале время 15.00. Я выставляю

extern string _timeStart = "15:00";//////////

extern string _timeStop = "15:30";////////// и получаю такой результат:

2013.10.16 00:02:37 2013torg EURUSD,M1: TimeCurrent()= 1381849389_startTrade=1381935600,_endTrade=1381937400,_tradeAllowed=0


 
pechenuga:

Вот сейчас в терминале время 15.00. Я выставляю

extern string _timeStart = "15:00";//////////

extern string _timeStop = "15:30";////////// и получаю такой результат:

2013.10.16 00:02:37 2013torg EURUSD,M1: TimeCurrent()= 1381849389_startTrade=1381935600,_endTrade=1381937400,_tradeAllowed=0


Когда выводите время в журнал, используйте TimeToStr(TimeCurrent()); TimeToStr(_startTrade); TimeToStr(_endTrade);
 
artmedia70:
Когда выводите время в журнал, используйте TimeToStr(TimeCurrent()); TimeToStr(_startTrade); TimeToStr(_endTrade);

Получается что TimeCurrent() возвращает время на 24 часа назад... надеюсь, вы меня поняли. Как сделать, чтобы реальное время выводилось?
2013.10.16 00:27:36 2013torg EURUSD,M1: TimeCurrent()= 2013.10.15 15:28_startTrade=2013.10.16 15:00,_endTrade=2013.10.16 15:30,_tradeAllowed=0

 
pechenuga:
Получается что TimeCurrent() возвращает время на 24 часа назад... надеюсь, вы меня поняли. Как сделать, чтобы реальное время выводилось?
2013.10.16 00:27:36 2013torg EURUSD,M1: TimeCurrent()= 2013.10.15 15:28_startTrade=2013.10.16 15:00,_endTrade=2013.10.16 15:30,_tradeAllowed=0


А TimeLocal(), с поправкой на время сервера... Но в выходные всё равно будет время неправильное, особенно в тестере.
 
pechenuga:
Получается что TimeCurrent() возвращает время на 24 часа назад... надеюсь, вы меня поняли. Как сделать, чтобы реальное время выводилось?
2013.10.16 00:27:36 2013torg EURUSD,M1: TimeCurrent()= 2013.10.15 15:28_startTrade=2013.10.16 15:00,_endTrade=2013.10.16 15:30,_tradeAllowed=0

Чтобы выводилось время вашего терминала, вместо TimeCurrent() используйте TimeLocal() и задавайте время начала и конца торговли по времени вашего терминала.
 
evillive:

А TimeLocal(), с поправкой на время сервера... Но в выходные всё равно будет время неправильное, особенно в тестере.
А время в тестере всё-равно моделируется. Да и в выходные торговля на форексе всё-равно нафиг не надо... ;)
 
artmedia70:
Чтобы выводилось время вашего терминала, вместо TimeCurrent() используйте TimeLocal() и задавайте время начала и конца торговли по времени вашего терминала.


Спасибо!
Причина обращения: