Решил протестировать его не по ценам открытия , а по всем тикам. Получил совсем несуразные результаты. Начал анализировать - советник стал открывать позиции в любое время, а у меня должен только в начале дня, то есть стоит условие: if ( curhour == 0) curhour вычисляется : curhour=TimeHour(Time[0]);
Подскажите пож-ста почему так происходит ?
Time[0] - это время открытия нулевого бара. TimeHour(Time[0]); - это час, в который открылся нулевой бар. Дневной бар открывается в полночь, Час=0. Ваше условие всегда выполняется. Правильно рассуждаю?
void OnStart() { Alert(TimeHour(Time[0])); }
советник стал открывать позиции в любое время, а у меня должен только в начале дня
Попробуйте исправить на сравнение времени вначале дня
if(iTime(NULL,1,0)==iTime(NULL,1440,0)) {curhour=iTime(NULL,1,0);} else curhour=0; if(curhour==iTime(NULL,1,0)) { //то работаем, условия для открытия }
Т.е. сигнал будет действителен только 1-ну минуту в начале торгового дня
Если надо 1 час для получения сигнала и т.д. то так:
if(iTime(NULL,60,0)==iTime(NULL,1440,0)) {curhour=iTime(NULL,60,0);} else curhour=0; if(curhour==iTime(NULL,60,0)) { //то работаем, условия для открытия }
Попробуйте исправить на сравнение времени вначале дня
Т.е. сигнал будет действителен только 1-ну минуту в начале торгового дня
Похоже, ему нужен первый час после полуночи - время, когда спред максимальный. Может быть ему нужно срочно слить депозит?
Ну можно спред отрегулировать и не лезть когда расширяется))
extern int MaxSpread = 12; //-----------------------+ void start() { if(((Ask-Bid)/Point)<=MaxSpread) { //Работаем
Вы правы, все можно предусмотреть. Но... Если торговать только первый час но с малым спредом, а в первый час спред большой - торг всегда будет запрещен. Надо проверять TimeHour(TimeCurrent()) - время сервера или TimeHour(TimeLocal()) - время компьютера
Поясняю. Советник универсальный, есть параметр час открытия TimeOpen. В данном случае рассматриваем таймфрейм dayly.
Задаем TimeOpen=0 и открываем позицию в случае если TimeOpen==TimeHour(Time[0]), то есть в начале дня.
При тестировании по ценам открытия советник замечательно работает. Ордера открываются в 0 часов. Решил проверить результаты,
используя режим все тики - и получил ерунду - некоторые ( не все) ордера открываются не в 0 часов, а в произвольное время, например в 11-00.
При работе этого же советника на других таймфреймах ордера открываются в нужный мне час, то есть критерий открытия работает верно.
Поясняю. Советник универсальный, есть параметр час открытия TimeOpen. В данном случае рассматриваем таймфрейм dayly.
Задаем TimeOpen=0 и открываем позицию в случае если TimeOpen==TimeHour(Time[0]), то есть в начале дня.
При тестировании по ценам открытия советник замечательно работает.
некоторые ( не все) ордера открываются не в 0 часов, а в произвольное время, например в 11-00.
При работе этого же советника на других таймфреймах ордера открываются в нужный мне час, то есть критерий открытия работает верно.
Если текущий график D1 дневной то TimeHour(Time[0]) будет всегда =0 (Time[0]) это бар D1)
по цене открытия это в 00 что то открылось и прыгнули на следующую цену открытия следующего дня, а по всем тикам это условие 24 часа работает и т.к. 0 = 00 то сигнал будет задействован в любое время этих 24-х часов, поэтому и открытия в 11-00 и в 16 и в любое время будет т.к. условие совпадает с TimeOpen==TimeHour(Time[0]) это 0 = 00
делайте тогда так:
if(Hour()==TimeOpen){ то работаем
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день.
Есть советник, работающий на таймфрейме Daily
Решил протестировать его не по ценам открытия , а по всем тикам. Получил совсем несуразные результаты. Начал анализировать - советник стал открывать позиции в любое время, а у меня должен только в начале дня, то есть стоит условие: if ( curhour == 0)
curhour вычисляется : curhour=TimeHour(Time[0]);
Подскажите пож-ста почему так происходит ?