Странно работает индикатор при визуальном тестировании, и если просто бросить его на график.
Вот код:
Вот код:
//+------------------------------------------------------------------+ //| Intra_Day.mq4 | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, klot." #property link "klot@mail.ru" #property indicator_chart_window #property indicator_color1 Aqua //---- indicator parameters extern int Hour_Begin_Day=21; //---- indicator buffers int begin,end; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicator short name IndicatorShortName("Intra_Day"); //---- initialization done ObjectCreate("Begin",OBJ_VLINE,0,0,0); ObjectCreate("Open",OBJ_TREND,0,0,0); ObjectSet("Open",OBJPROP_RAY,false); ObjectCreate("End",OBJ_VLINE,0,0,0); ObjectCreate("High_asian",OBJ_TREND,0,0,0,0,0); ObjectSet("High_asian",OBJPROP_RAY,false); ObjectCreate("Low_asian",OBJ_TREND,0,0,0,0,0); ObjectSet("Low_asian",OBJPROP_RAY,false); return(0); } int deinit() { //---- ObjectDelete("Begin"); ObjectDelete("Open"); ObjectDelete("End"); ObjectDelete("High_asian"); ObjectDelete("Low_asian"); //---- return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { int asia_b,t,h,i; datetime begin_time,end_time,asia_t; double curlow,curhigh; begin_time=iTime(NULL,PERIOD_D1,1)+(Hour_Begin_Day*3600); asia_t=iTime(NULL,PERIOD_D1,0)+(6*3600); end_time=iTime(NULL,PERIOD_D1,0)+(Hour_Begin_Day*3600); asia_b=iBarShift(NULL,0,asia_t); begin=iBarShift(NULL,0,begin_time); end=iBarShift(NULL,0,end_time); ObjectSet("Begin",OBJPROP_TIME1,begin_time); ObjectSet("Open",OBJPROP_TIME1,begin_time); ObjectSet("Open",OBJPROP_PRICE1,Open[begin]); ObjectSet("Open",OBJPROP_TIME2,Time[0]); ObjectSet("Open",OBJPROP_PRICE2,Open[begin]); ObjectSet("End",OBJPROP_TIME1,end_time); curlow=Low[Lowest(NULL,0,MODE_LOW,(begin-asia_b),asia_b)]; curhigh=High[Highest(NULL,0,MODE_HIGH,(begin-asia_b),asia_b)]; ObjectSet("High_asian",OBJPROP_TIME1,begin_time); ObjectSet("High_asian",OBJPROP_PRICE1,curhigh); ObjectSet("High_asian",OBJPROP_TIME2,Time[0]); ObjectSet("High_asian",OBJPROP_PRICE2,curhigh); ObjectSet("Low_asian",OBJPROP_TIME1,begin_time); ObjectSet("Low_asian",OBJPROP_PRICE1,curlow); ObjectSet("Low_asian",OBJPROP_TIME2,Time[0]); ObjectSet("Low_asian",OBJPROP_PRICE2,curlow); return(0); } //+------------------------------------------------------------------+
Тогда подскажите еще, в каком случае конструкция типа
Pmax=MathMax(iHigh(Symbol(),PERIOD_M30,1),iHigh(Symbol(),PERIOD_M30,2))
может давать Pmax=0?
Вычисляю, вывожу, получаю "0". Но ведь так не бывает! :-(
Дополнение к последнему сообщению
GetLastError()=0
Причем, начиная с некоторой даты в процессе тестирования указанная в предыдущем посте конструкция начинает давать осмысленный ненулевой результат... :-(
Попробуйте вывести значение iBars(Symbol(),PERIOD_M30)
Вполне возможно, что на какую-то дату у Вас просто нет тридцатиминуток. Поэтому и выдаются нули
Вполне возможно, что на какую-то дату у Вас просто нет тридцатиминуток. Поэтому и выдаются нули
Результат:
iBars(Symbol(),PERIOD_M30)=437
что явно мало для тестирования с начала года. И мы снова возвращаемся к первому вопросу:
КАК МНЕ ДОБИТЬСЯ, ЧТОБЫ ВСЕ НЕОБХОДИМЫЕ КОТИРОВКИ У ТЕСТЕРА БЫЛИ В НАЛИЧИИ?
Результат:
iBars(Symbol(),PERIOD_M30)=437
что явно мало для тестирования с начала года. И мы снова возвращаемся к первому вопросу:
КАК МНЕ ДОБИТЬСЯ, ЧТОБЫ ВСЕ НЕОБХОДИМЫЕ КОТИРОВКИ У ТЕСТЕРА БЫЛИ В НАЛИЧИИ?
Вручную пройтись по графикам и докачать сколько можно. Если данных нет, то и результат будет 0.
Подгрузил данные M30 на график. Проблема с этим символом пропала.
ЗНАЧИТ ВСЕ-ТАКИ ТЕСТЕР ИСПОЛЬЗУЕТ ФАЙЛЫ *.HST???
ЗНАЧИТ ВСЕ-ТАКИ ТЕСТЕР ИСПОЛЬЗУЕТ ФАЙЛЫ *.HST???
Подгрузил данные M30 на график. Проблема с этим символом пропала.
ЗНАЧИТ ВСЕ-ТАКИ ТЕСТЕР ИСПОЛЬЗУЕТ ФАЙЛЫ *.HST???
ЗНАЧИТ ВСЕ-ТАКИ ТЕСТЕР ИСПОЛЬЗУЕТ ФАЙЛЫ *.HST???
Конечно использует. Но также и моделирует развитие баров внутри других таймфреймов.
То есть, не "строит M30 из М1", а "берет базы М30 из истории, а потом моделирует развитие этих М30 баров синхронно с развитием М1".
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Мой советник, который я пытаюсь протестировать на M5, кроме текущих цен, использует значения индикатора с W1 (скажем,
).
Как поступает тестер, когда я запускаю тестирование:
-подгружает все необходимые M5 и W1?
-подгружает все необходимые M5, а W1 расчитывает по M5?
-подгружает все необходимые M5, а W1 игнорирует?
Как мне поступить, чтобы быть уверенным, что тестер имеет все необходимые котировки?
Правильно ли я понимаю, что файлы *.HST в работе тестера вообще не используются?