Скачать MetaTrader 5

Дата экспирации и тестер стратегий

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Evgeniy Zhdan
6064
Evgeniy Zhdan  

Доброго всем дня!

Как всегда, ниоткуда возникла проблема. При установке отложенного ордера, на мой взгляд корректно установлено значение экспирации, т.е. времени, по истечение которого отложенный ордер должен быть удален. Но, в тестере стратегий он не удаляется! Брокер - Альпари. Если просто ставить ручной отложенный ордер - дата экспирации возможна, она устанавливается и никаких ошибок и запретов на это нет. В тестере - она просто не работает. В чем может быть причина? Прилагаю код:

Внешняя переменная:

extern int LifeTimeMinutes= 20; // время жизни в минутах

После функции start():

datetime expiration = TimeCurrent() + 60*LifeTimeMinutes; // в expiration будет время удаления ордера.

После условий на открытие ордера:

ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots, pricesell,slippage,0,0,name,magic,expiration,Red);

Vitalie Postolache
12425
Vitalie Postolache  

А в журнале тестера ошибок нет?

TimeCurrent() некорректно работает в тестере когда рынок закрыт, лучше использовать Time[0] или iTime(Symbol(),PERIOD_M1,0):

datetime expiration = iTime(Symbol(),PERIOD_M1,0) + 60*LifeTimeMinutes;
Evgeniy Zhdan
6064
Evgeniy Zhdan  
evillive:

А в журнале тестера ошибок нет?

TimeCurrent() некорректно работает в тестере когда рынок закрыт, лучше использовать Time[0] или iTime(Symbol(),PERIOD_M1,0).


Вообще никаких ошибок. Вес прекрасно работает - ордера открываются, модифицируются. Никаких ЧП в журнале нет.

Да и рынок не закрыт сегодня...

Спасибо, сейчас попробую

Evgeniy Zhdan
6064
Evgeniy Zhdan  
evillive:

А в журнале тестера ошибок нет?

TimeCurrent() некорректно работает в тестере когда рынок закрыт, лучше использовать Time[0] или iTime(Symbol(),PERIOD_M1,0):


Странно. И Ваш код не работает(

Может эту

datetime expiration = iTime(Symbol(),PERIOD_M1,0) + 60*LifeTimeMinutes;

не вставлять после start() а куда нибудь в другое место? МОжет она с каждым тиком отодвигает время экспирации?

Vitalie Postolache
12425
Vitalie Postolache  
remon:

Странно. И Ваш код не работает(

Может эту

не вставлять после start() а куда нибудь в другое место? МОжет она с каждым тиком отодвигает время экспирации?

Отодвигает, только не с каждым тиком а поминутно, да и отодвигает только до выставления отложки, саму отложку эта переменная ведь не трогает. Использовать можно внутри функции Start() или в любой пользовательской функции вызваемой оттуда на каждом тике. А вот почему не работает сказать не могу без исходников.

Evgeniy Zhdan
6064
Evgeniy Zhdan  
Ну чтож, придется прибегнуть к сторонней функции удаления отложенных ордеров, раз экспирация не работает
Vitalie Postolache
12425
Vitalie Postolache  

Может это фишка альпарёв? У меня на f4u работает, выставляет корректно как в тестере, так и в реальном времени.


Хотя может и в коде где-то ошибка затаилась.

Evgeniy Zhdan
6064
Evgeniy Zhdan  
evillive:

Может это фишка альпарёв? У меня на f4u работает, выставляет корректно как в тестере, так и в реальном времени.


Хотя может и в коде где-то ошибка затаилась.


У меня вот сейчас если ставлю больше суток значение - все работает. Если меньше - как то через раз, то работает то нет. Странно как-то.

И еще - если сработала экспирация, значит на этом ордере не было модификации. Например - ставю маленький стоп-лосс, который не разрешен, то модификация выдает ошибку 130 и тогда работает экспирация. Если модификация прошла - экспирация не работает. Она как сбрасывается. Надо в этом направлении покопать!

Evgeniy Zhdan
6064
Evgeniy Zhdan  
remon:


У меня вот сейчас если ставлю больше суток значение - все работает. Если меньше - как то через раз, то работает то нет. Странно как-то.

И еще - если сработала экспирация, значит на этом ордере не было модификации. Например - ставю маленький стоп-лосс, который не разрешен, то модификация выдает ошибку 130 и тогда работает экспирация. Если модификация прошла - экспирация не работает. Она как сбрасывается. Надо в этом направлении покопать!


ДОШЛО!!!! Я вставлял экспирация в ордерсенд а потом модифицировал без нее!!! Изордер-сенда ее убрал и поставил в OrderModify - ВСЕ ПРЕКРАСНО РАБОТАЕТ!

evillive: Спасибо что составил компанию для рассуждений! Сам бы я наверное долго еще додумывался!

Vitalie Postolache
12425
Vitalie Postolache  

Встроил в MACD Sample код с временем, у меня всё работает в таком виде...

remon:


ДОШЛО!!!! Я вставлял экспирация в ордерсенд а потом модифицировал без нее!!! Изордер-сенда ее убрал и поставил в OrderModify - ВСЕ ПРЕКРАСНО РАБОТАЕТ!

evillive: Спасибо что составил компанию для рассуждений! Сам бы я наверное долго еще додумывался!

P.S.: А, ну тогда понятно, не в эспирации всё-таки дело было ;)

Файлы:
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий