Странно работает индикатор при визуальном тестировании, и если просто бросить его на график.
Вот код:
Вот код:
//+------------------------------------------------------------------+
//| 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 в работе тестера вообще не используются?