А в журнале тестера ошибок нет?
TimeCurrent() некорректно работает в тестере когда рынок закрыт, лучше использовать Time[0] или iTime(Symbol(),PERIOD_M1,0):
datetime expiration = iTime(Symbol(),PERIOD_M1,0) + 60*LifeTimeMinutes;
А в журнале тестера ошибок нет?
TimeCurrent() некорректно работает в тестере когда рынок закрыт, лучше использовать Time[0] или iTime(Symbol(),PERIOD_M1,0).
Вообще никаких ошибок. Вес прекрасно работает - ордера открываются, модифицируются. Никаких ЧП в журнале нет.
Да и рынок не закрыт сегодня...
Спасибо, сейчас попробую
А в журнале тестера ошибок нет?
TimeCurrent() некорректно работает в тестере когда рынок закрыт, лучше использовать Time[0] или iTime(Symbol(),PERIOD_M1,0):
Странно. И Ваш код не работает(
Может эту
datetime expiration = iTime(Symbol(),PERIOD_M1,0) + 60*LifeTimeMinutes;
не вставлять после start() а куда нибудь в другое место? МОжет она с каждым тиком отодвигает время экспирации?
Странно. И Ваш код не работает(
Может эту
не вставлять после start() а куда нибудь в другое место? МОжет она с каждым тиком отодвигает время экспирации?
Отодвигает, только не с каждым тиком а поминутно, да и отодвигает только до выставления отложки, саму отложку эта переменная ведь не трогает. Использовать можно внутри функции Start() или в любой пользовательской функции вызваемой оттуда на каждом тике. А вот почему не работает сказать не могу без исходников.
Может это фишка альпарёв? У меня на f4u работает, выставляет корректно как в тестере, так и в реальном времени.
Хотя может и в коде где-то ошибка затаилась.
Может это фишка альпарёв? У меня на f4u работает, выставляет корректно как в тестере, так и в реальном времени.
Хотя может и в коде где-то ошибка затаилась.
У меня вот сейчас если ставлю больше суток значение - все работает. Если меньше - как то через раз, то работает то нет. Странно как-то.
И еще - если сработала экспирация, значит на этом ордере не было модификации. Например - ставю маленький стоп-лосс, который не разрешен, то модификация выдает ошибку 130 и тогда работает экспирация. Если модификация прошла - экспирация не работает. Она как сбрасывается. Надо в этом направлении покопать!
У меня вот сейчас если ставлю больше суток значение - все работает. Если меньше - как то через раз, то работает то нет. Странно как-то.
И еще - если сработала экспирация, значит на этом ордере не было модификации. Например - ставю маленький стоп-лосс, который не разрешен, то модификация выдает ошибку 130 и тогда работает экспирация. Если модификация прошла - экспирация не работает. Она как сбрасывается. Надо в этом направлении покопать!
ДОШЛО!!!! Я вставлял экспирация в ордерсенд а потом модифицировал без нее!!! Изордер-сенда ее убрал и поставил в OrderModify - ВСЕ ПРЕКРАСНО РАБОТАЕТ!
evillive: Спасибо что составил компанию для рассуждений! Сам бы я наверное долго еще додумывался!
Встроил в MACD Sample код с временем, у меня всё работает в таком виде...
ДОШЛО!!!! Я вставлял экспирация в ордерсенд а потом модифицировал без нее!!! Изордер-сенда ее убрал и поставил в OrderModify - ВСЕ ПРЕКРАСНО РАБОТАЕТ!
evillive: Спасибо что составил компанию для рассуждений! Сам бы я наверное долго еще додумывался!
P.S.: А, ну тогда понятно, не в эспирации всё-таки дело было ;)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Доброго всем дня!
Как всегда, ниоткуда возникла проблема. При установке отложенного ордера, на мой взгляд корректно установлено значение экспирации, т.е. времени, по истечение которого отложенный ордер должен быть удален. Но, в тестере стратегий он не удаляется! Брокер - Альпари. Если просто ставить ручной отложенный ордер - дата экспирации возможна, она устанавливается и никаких ошибок и запретов на это нет. В тестере - она просто не работает. В чем может быть причина? Прилагаю код:
Внешняя переменная:
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);