Вот попытка проапгрейдить тестер до режима мультифреймности.
При тестировании нужно указывать период M15, все тики.
//+-------------------------------------------------------------------------------+
//| MultiframeTester.mqh |
//| Мультифреймовый тестер |
//| Предназначен для тестирования экспертов, работающих на нескольких таймфреймах |
//+-------------------------------------------------------------------------------+
int MultiframeTester()
{
double arr_M15[][6];
double arr_M30[][6];
double arr_H1[][6];
double arr_H4[][6];
double arr_D1[][6];
ArrayCopyRates(arr_M15,Symbol(), PERIOD_M15);
ArrayCopyRates(arr_M30,Symbol(), PERIOD_M30);
ArrayCopyRates(arr_H1,Symbol(), PERIOD_H1);
ArrayCopyRates(arr_H4,Symbol(), PERIOD_H4);
ArrayCopyRates(arr_D1,Symbol(), PERIOD_D1);
//время нулевого бара на разных таймфреймах
datetime zbt_M15=arr_M15[0][0];
datetime zbt_M30=arr_M30[0][0];
datetime zbt_H1=arr_H1[0][0];
datetime zbt_H4=arr_H4[0][0];
datetime zbt_D1=arr_D1[0][0];
//начальные значения open, low, high, close
double open=arr_M15[0][1];
double low=arr_M15[0][2];
double high=arr_M15[0][3];
double close=arr_M15[0][4];
//обновление значений нулевых баров больших таймфреймов
int i=0;
while (zbt_M15>=zbt_D1)
{
zbt_M15=arr_M15[i][0];
open=arr_M15[i][1];
if (low>arr_M15[i][2]) low=arr_M15[i][2];
if (high<arr_M15[i][3]) high=arr_M15[i][3];
//обновление 30-минуток
if (zbt_M30==zbt_M15) {arr_M30[0][1]=open; arr_M30[0][2]=low; arr_M30[0][3]=high;}
//обновление 60-минуток
if (zbt_H1==zbt_M15) {arr_H1[0][1]=open; arr_H1[0][2]=low; arr_H1[0][3]=high;}
//обновление 4-х-часовок
if (zbt_H4==zbt_M15) {arr_H4[0][1]=open; arr_H4[0][2]=low; arr_H4[0][3]=high;}
//обновление дневок
if (zbt_D1==zbt_M15) {arr_D1[0][1]=open; arr_D1[0][2]=low; arr_D1[0][3]=high;}
i++;
}
//обновление цен закрытия на всех таймфреймах
arr_M30[0][4]=close;
arr_H1[0][4]=close;
arr_H4[0][4]=close;
arr_D1[0][4]=close;
return(0);
}
1. Создаем в каталоге Include файл filename.mqh
2. Копируем код в файл
3. Вставляем в тексте эксперта команду #include <filename.mqh>
4. В начале процедуры int Start() эксперта вызываем функцию MultiframeTester()
Enjoy.
Вот так некоторые пользователи извращаются если нет нормального тестера :)
При тестировании нужно указывать период M15, все тики.
//+-------------------------------------------------------------------------------+ //| MultiframeTester.mqh | //| Мультифреймовый тестер | //| Предназначен для тестирования экспертов, работающих на нескольких таймфреймах | //+-------------------------------------------------------------------------------+ int MultiframeTester() { double arr_M15[][6]; double arr_M30[][6]; double arr_H1[][6]; double arr_H4[][6]; double arr_D1[][6]; ArrayCopyRates(arr_M15,Symbol(), PERIOD_M15); ArrayCopyRates(arr_M30,Symbol(), PERIOD_M30); ArrayCopyRates(arr_H1,Symbol(), PERIOD_H1); ArrayCopyRates(arr_H4,Symbol(), PERIOD_H4); ArrayCopyRates(arr_D1,Symbol(), PERIOD_D1); //время нулевого бара на разных таймфреймах datetime zbt_M15=arr_M15[0][0]; datetime zbt_M30=arr_M30[0][0]; datetime zbt_H1=arr_H1[0][0]; datetime zbt_H4=arr_H4[0][0]; datetime zbt_D1=arr_D1[0][0]; //начальные значения open, low, high, close double open=arr_M15[0][1]; double low=arr_M15[0][2]; double high=arr_M15[0][3]; double close=arr_M15[0][4]; //обновление значений нулевых баров больших таймфреймов int i=0; while (zbt_M15>=zbt_D1) { zbt_M15=arr_M15[i][0]; open=arr_M15[i][1]; if (low>arr_M15[i][2]) low=arr_M15[i][2]; if (high<arr_M15[i][3]) high=arr_M15[i][3]; //обновление 30-минуток if (zbt_M30==zbt_M15) {arr_M30[0][1]=open; arr_M30[0][2]=low; arr_M30[0][3]=high;} //обновление 60-минуток if (zbt_H1==zbt_M15) {arr_H1[0][1]=open; arr_H1[0][2]=low; arr_H1[0][3]=high;} //обновление 4-х-часовок if (zbt_H4==zbt_M15) {arr_H4[0][1]=open; arr_H4[0][2]=low; arr_H4[0][3]=high;} //обновление дневок if (zbt_D1==zbt_M15) {arr_D1[0][1]=open; arr_D1[0][2]=low; arr_D1[0][3]=high;} i++; } //обновление цен закрытия на всех таймфреймах arr_M30[0][4]=close; arr_H1[0][4]=close; arr_H4[0][4]=close; arr_D1[0][4]=close; return(0); }1. Создаем в каталоге Include файл filename.mqh
2. Копируем код в файл
3. Вставляем в тексте эксперта команду #include <filename.mqh>
4. В начале процедуры int Start() эксперта вызываем функцию MultiframeTester()
Enjoy.
Вот так некоторые пользователи извращаются если нет нормального тестера :)