10.11.2006=10.11.2006 00:00
Я так думаю это связано с тем что преобразовать к типу datatime Вам легче всего будет через функцию StrToTime, а она сделает следующее
Я так думаю это связано с тем что преобразовать к типу datatime Вам легче всего будет через функцию StrToTime, а она сделает следующее
var3=StrToTime("2003.8.12"); // возврат даты с полуночным временем "00:00"
Можно приведение типа писать самому и тогда время будет таким какое Вы сами сделаете.
Если Вы поставите это условие не позденее чем за 15 мин до его наступления (ближе не даст брокер), то ордер удалится в 10.11.2006 00:00
ЗЫ В эксперте я этим свойством ордера не пользуюсь, а использую OrderDelete().
Спасибо, розобрался!
Но сразу нашел баг в тестере!
При тестировании по сформировавшимся барам и выставлении лимитных (стоп не пробовал) ордеров со сроком истечения конец текущего дня (или бара, тоже пробовал: tExpiration=iTime(NULL,0,0)+(Period()*60)-1)
И ПРИ ДОСТИЖЕНИИ ЦЕНОЙ ОРДЕРА этот отрер НЕ СРАБАТЫВАЕТ.
А просто удаляется в конце бара и все!
Так не должно быть, т.к. ордер выставляется по первой цене (Open) и после этого тестер ДОЛЖЕН пройти OLHC.
РАЗРАБОТЧИКИ: ПОЖАЛУЙСТА ПРОВЕРЬТЕ!!!
Но сразу нашел баг в тестере!
При тестировании по сформировавшимся барам и выставлении лимитных (стоп не пробовал) ордеров со сроком истечения конец текущего дня (или бара, тоже пробовал: tExpiration=iTime(NULL,0,0)+(Period()*60)-1)
И ПРИ ДОСТИЖЕНИИ ЦЕНОЙ ОРДЕРА этот отрер НЕ СРАБАТЫВАЕТ.
А просто удаляется в конце бара и все!
Так не должно быть, т.к. ордер выставляется по первой цене (Open) и после этого тестер ДОЛЖЕН пройти OLHC.
РАЗРАБОТЧИКИ: ПОЖАЛУЙСТА ПРОВЕРЬТЕ!!!
Да , так и есть. Проверял на Фунте на D1 на всех моделях. Только на Open Price ордер не срабатывал .
//+------------------------------------------------------------------+ //| CheckExpiration.mq4 | //| Rosh | //| http://www.metaquotes.ru/forum/7860/ | //+------------------------------------------------------------------+ #property copyright "Rosh" #property link "http://www.metaquotes.ru/forum/7860/" //---- input parameters extern int DayOpen=26; extern int MonthOpen=10; extern int YearOpen=2006; extern double PriceLimitSell=1.891; bool OrderDone=false; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- datetime TimeExpiration; int ticket; if (Symbol()!="GBPUSD") return; if (TimeYear(Time[0])<YearOpen) return; if (TimeMonth(Time[0])<MonthOpen) return; if (TimeDay(TimeCurrent())<DayOpen) return; if (OrderDone) return; if (OrdersTotal()==0) { //TimeExpiration=iTime(NULL,0,0)+Period()*60-1; TimeExpiration=Time[0]+Period()*60-1; Print("Ставим ордер с истечением в ",TimeToStr(TimeExpiration,TIME_DATE|TIME_SECONDS)); ticket=OrderSend(Symbol(),OP_SELLLIMIT,0.1,PriceLimitSell,5,0,0,"SellLimit",0,TimeExpiration,Red); if (ticket>0) { Print("ордер установлен"); OrderDone=true; } } //---- return(0); } //+------------------------------------------------------------------+
[quote]Да , так и есть. Проверял на Фунте на D1 на всех моделях. Только на Open Price ордер не срабатывал .
[quote]Так это ошибка или такой замысел?
На реальных данных или в режиме с внутри барным моделированием срабатывать бутет конечно.
Но как же быть с оптимизацией по сформир.барам.
Это будет исправлено?
[quote]Так это ошибка или такой замысел?
На реальных данных или в режиме с внутри барным моделированием срабатывать бутет конечно.
Но как же быть с оптимизацией по сформир.барам.
Это будет исправлено?
Всё правильно. Предположим, время истечения попало на середину бара. Так как в модели "по ценам открытия" нет данных о движении цены внутри бара, то нельзя сделать вывод, сработали ли стопы до истечения или нет.
В тестере сначала проверяется время истечения, а потом уже стопы. Этот алгоритм менять не будем.
Если Вы используете такие тонкие настройки, как время истечения, то и тестируйте на более тонких моделях.
В тестере сначала проверяется время истечения, а потом уже стопы. Этот алгоритм менять не будем.
Если Вы используете такие тонкие настройки, как время истечения, то и тестируйте на более тонких моделях.
Можно ли задавать "время истечения" для ордеров OP_BUY(OP_SELL)?
В документации нет ничего запрещающего делать это.
Однако это не работает!
Хотя было бы круто чтобы после окончания "время истечения" выполнилась операция OrderClose(...) по рыночной цене!
В документации нет ничего запрещающего делать это.
Однако это не работает!
Хотя было бы круто чтобы после окончания "время истечения" выполнилась операция OrderClose(...) по рыночной цене!
Можно ли задавать "время истечения" для ордеров OP_BUY(OP_SELL)?
нет
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
- дату, по истечении которой ордер отменится?
- дату и время до секунд, по истечении которых ордер отменится?
В документации не понятно описано (до меня например не доходит..).
Если только дату, тогда как передать например 10.11.2006?
И что эта дата будет означать:
- отмена ордера по истечении этой даты
или
- отмена ордера если эта дата начинается(конец предыдущего дня)?
А если передается время с секундми, то разве есть такие типы ордеров?
Хотя если МТ работает именно так то это очень круто!