Время работы советника. Подскажите. - страница 2 123 Новый комментарий Tretyakov Rostyslav 2008.01.24 13:33 #11 Еще раз хочу Всех поблагодарить, особенно Andy_Kon Его код и простой и дает то, что мне нужно было. Теперь советник работает в строго установленное время, но я добавил функцию удалять отложные ордера после окончания рабочего времени //---- if(Hour() > EndHour && total>0) { OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES); { if(OrderType()==OP_BUYSTOP) { OrderDelete(ticket,CLR_NONE); } } } if(Hour() > EndHour && total>0) { OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES); { if(OrderType()==OP_SELLSTOP) { OrderDelete(ticket,CLR_NONE); } } } //---- В тестере иногда все великолепно, а иногда выдает ошибку и останавливается тестирование 2008.01.24 16:48:20 2007.04.12 23:26 Time GBPJPY,M5: unknown ticket 10 for OrderDelete function 2008.01.24 16:48:20 2007.04.12 23:26 Time GBPJPY,M5: OrderDelete error 4108 Возможно глюк тестера, потому что только в некоторые дни выдает такие ошибки. Если кто знает в чем проблема подскажите пожалуста. Спрашивайте! Система ASCTrend Любые вопросы новичков по Andrey Khatimlianskii 2008.01.24 13:43 #12 Надо проверять OrderCloseTime(). Если больше 0, не удалять. Tretyakov Rostyslav 2008.01.24 13:46 #13 komposter: Надо проверять OrderCloseTime(). Если больше 0, не удалять. Извени я не понял, что это значит Andrey Khatimlianskii 2008.01.24 13:49 #14 MakarFX: Извени я не понял, что это значит if ( OrderSelect(ticket,SELECT_BY_TICKET) ) { if ( OrderCloseTime() <= 0 ) { if(OrderType()==OP_BUYSTOP) { OrderDelete(ticket,CLR_NONE); } } } Tretyakov Rostyslav 2008.01.24 13:56 #15 komposter: MakarFX: Извени я не понял, что это значит if ( OrderSelect(ticket,SELECT_BY_TICKET) ) { if ( OrderCloseTime() <= 0 ) { if(OrderType()==OP_BUYSTOP) { OrderDelete(ticket,CLR_NONE); } } } Я сделал вот так, но результат тот же if(Hour() > EndHour && total>0) { OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES); { if (OrderSelect(ticket,SELECT_BY_TICKET)) { if (OrderCloseTime() <=0) { if(OrderType()==OP_BUYSTOP) { OrderDelete(ticket,CLR_NONE); } } } } } if(Hour() > EndHour && total>0) { OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES); { if (OrderSelect(ticket,SELECT_BY_TICKET)) { if (OrderCloseTime() <=0) { if(OrderType()==OP_SELLSTOP) { OrderDelete(ticket,CLR_NONE); } } } } } //---- Andrey Khatimlianskii 2008.01.24 14:22 #16 MakarFX: Я сделал вот так, но результат тот же Ну, тогда ошибка не здесь. Без полного кода помочь не смогу. Tretyakov Rostyslav 2008.01.24 14:50 #17 komposter: MakarFX: Я сделал вот так, но результат тот же Ну, тогда ошибка не здесь. Без полного кода помочь не смогу. Спасибо, я разобрался. Ошибка выскакивает если нет полной истории за этот день PSmith 2008.01.24 14:51 #18 А я задаю expiration = TimeCurrent() + (EndHour-Hour())*3600+(25-Minute())*60 при установке отложенника и он сам удаляется, если не сработал ;-) Tretyakov Rostyslav 2008.01.24 14:59 #19 PSmith: А я задаю expiration = EndHour+25*60 при установке отложенника и он сам удаляется, если не сработал ;-) А можно подробнее, на каком-то примере. "Я не волшебник, я только учусь", т.е. я совсем слабо разбираюсь в MQL4 PSmith 2008.01.24 15:08 #20 Вернее будет так Expiration = TimeCurrent() + (EndHour-Hour())*3600+(25-Minute())*60 TimeCurrent() - Hour()*3600 - Minute()*60 = это начало дня + секунды + EndHour*3600 + 25*60 = это время истечения ордера + 25 минут запаса + те же секунды А дальше OrderSend(Symbol(),OP_BUYSTOP,..............., Magic, Expiration); либо OrderSend(Symbol(),OP_SELLSTOP,..............., Magic, Expiration); аналогично лимитники Magic - магический номер советника Expiration - см выше [АРХИВ]Любой вопрос новичка, чтоб Дата экспирации и тестер Спрашивайте! 123 Новый комментарий
Еще раз хочу Всех поблагодарить, особенно Andy_Kon
Его код и простой и дает то, что мне нужно было.
Теперь советник работает в строго установленное время, но
я добавил функцию удалять отложные ордера после окончания рабочего времени
В тестере иногда все великолепно, а иногда выдает ошибку и останавливается тестирование
2008.01.24 16:48:20 2007.04.12 23:26 Time GBPJPY,M5: unknown ticket 10 for OrderDelete function
2008.01.24 16:48:20 2007.04.12 23:26 Time GBPJPY,M5: OrderDelete error 4108
Возможно глюк тестера, потому что только в некоторые дни выдает такие ошибки.
Если кто знает в чем проблема подскажите пожалуста.
Надо проверять OrderCloseTime(). Если больше 0, не удалять.
Извени я не понял, что это значит
Извени я не понял, что это значит
Извени я не понял, что это значит
Я сделал вот так, но результат тот же
Я сделал вот так, но результат тот же
Без полного кода помочь не смогу.
Я сделал вот так, но результат тот же
Без полного кода помочь не смогу.
Спасибо, я разобрался.
Ошибка выскакивает если нет полной истории за этот день
А я задаю expiration = EndHour+25*60 при установке отложенника и он сам удаляется, если не сработал ;-)
А можно подробнее, на каком-то примере.
"Я не волшебник, я только учусь", т.е. я совсем слабо разбираюсь в MQL4
Вернее будет так
Expiration = TimeCurrent() + (EndHour-Hour())*3600+(25-Minute())*60
TimeCurrent() - Hour()*3600 - Minute()*60 = это начало дня + секунды
+ EndHour*3600 + 25*60 = это время истечения ордера + 25 минут запаса + те же секунды
А дальше
OrderSend(Symbol(),OP_BUYSTOP,..............., Magic, Expiration);
либо
OrderSend(Symbol(),OP_SELLSTOP,..............., Magic, Expiration);
аналогично лимитники
Magic - магический номер советника
Expiration - см выше