Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Только что поставил MetaTrader 5? Изучи его подробно!
pechenuga
125
pechenuga 2013.10.15 13:02 

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

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();

}

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

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

o_O
Модератор
23319
o_O 2013.10.15 13:13  
а чему равны tradeAllowed, startTrade, endTrade, TimeCurrent ?
pechenuga
125
pechenuga 2013.10.15 13:31  
sergeev:
а чему равны tradeAllowed, startTrade, endTrade, TimeCurrent ?

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

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

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


Artyom Trishkin
69147
Artyom Trishkin 2013.10.15 14:18  
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);
pechenuga
125
pechenuga 2013.10.15 14:29  
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

Vitalie Postolache
11136
Vitalie Postolache 2013.10.15 14:32  
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(), с поправкой на время сервера... Но в выходные всё равно будет время неправильное, особенно в тестере.
Artyom Trishkin
69147
Artyom Trishkin 2013.10.15 14:36  
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() и задавайте время начала и конца торговли по времени вашего терминала.
Artyom Trishkin
69147
Artyom Trishkin 2013.10.15 14:39  
evillive:

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


Спасибо!
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий