Тестер МТ4 не отдает инфу с других тайм-фреймов - страница 7

 
vladv002 >>:

Я извиняюсь, но тему я начал с того что в советнике на тесте данные не те, потому стал проверять что там и где,
в итоге оказывается что неверные данные в тестере хоть в индикаторе хоть в советнике.
Это я проверял и на своем коде и на готовых индикаторах поставленных на эксперта в режиме тестирования,
НО увы результат - только с одного ТФ.
iCustom() - Это первое что я применял, потом перебрал почти все из справки, резутьтат тот же!


Код свой покажи. Да и индикатор надо было бы посмотреть

 
Rosh писал(а) >>
Вызывайте индикатор из советника и убеждайтесь, что все работает правильно. Хватит троллить, будет бан.

В чём троллизм? Идёт попытка разобраться с ситуацией.
Если мы не правы - помогите.
Но если использовать код советника Виктора, вызвать invert и посмотреть в файле с чем он работает - выводы не изменятся.
Поправьте или баньте ;)

//+------------------------------------------------------------------+
//| VininE_test |
//| Copyright © 2010, Victor Nicolaev |
//| e-mail: vinin@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, Victor Nicolaev"
#property link "e-mail: vinin@mail.ru"


//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {return(0);}

//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {return(0); }


//+------------------------------------------------------------------+
//Работа по отдельной ТС
//+------------------------------------------------------------------+
int start() {
static int prevtime=0;
if (Time[0]==prevtime) return(0);
if (prevtime==0) {
prevtime=Time[0];
return(0);
}
prevtime=Time[0];

switch (Period()) {
case PERIOD_M1: myPrint(PERIOD_M1);
case PERIOD_M5: myPrint(PERIOD_M5);
case PERIOD_M15: myPrint(PERIOD_M15);
case PERIOD_M30: myPrint(PERIOD_M30);
case PERIOD_H1: myPrint(PERIOD_H1);
case PERIOD_H4: myPrint(PERIOD_H4);
case PERIOD_D1: myPrint(PERIOD_D1);
case PERIOD_W1: myPrint(PERIOD_W1);
case PERIOD_MN1: myPrint(PERIOD_MN1);
}
return(0);
}

void myPrint(int TimeFrame){
Print(PeriodToStr(TimeFrame)+": ",
TimeToStr(iTime( NULL, TimeFrame, 0),TIME_DATE)," ",
TimeToStr(iTime( NULL, TimeFrame, 0),TIME_MINUTES), "; ",
iOpen( NULL, TimeFrame, 0), "; ",
iHigh( NULL, TimeFrame, 0), "; ",
iLow( NULL, TimeFrame, 0), "; ",
iClose(NULL, TimeFrame, 0),"; ",
iCustom(NULL,TimeFrame,"invert",0,0));

}

string PeriodToStr(int TimeFrame){
switch (TimeFrame){
case PERIOD_M1 : return("M1");
case PERIOD_M5 : return("M5");
case PERIOD_M15: return("M15");
case PERIOD_M30: return("M30");
case PERIOD_H1 : return("H1");
case PERIOD_H4 : return("H4");
case PERIOD_D1 : return("D1");
case PERIOD_W1 : return("W1");
case PERIOD_MN1: return("MN1");
}
}
Файлы:
invert_2.mq4  4 kb
 
Vinin >>:


При правильном подходе все работает нормально.

верно - подтверждаю

 
YuraZ >>:

верно - подтверждаю


Вы заметили в логе Виктора, что месячный ТФ выдает 0?

Почему?

 
avatara >>:

Вы заметили в логе Виктора, что месячный ТФ выдает 0?

Почему?


Количества баров не хватает для расчёта значений, полагаю такой вариант.
 
yuripk >>:


Количества баров не хватает для расчёта значений, полагаю такой вариант.

для опена и другой корректной на тот момент инфо достаточно. или ждать конца бара?

 
avatara писал(а) >>
В чём троллизм? Идёт попытка разобраться с ситуацией.
Если мы не правы - помогите.
Но если использовать код советника Виктора, вызвать invert и посмотреть в файле с чем он работает - выводы не изменятся.
Поправьте или баньте ;)


Ты свой индикатор на график выкладывал?
Я возьму только пару строк

for (i=Period()-1; i>=0; i--)
          Value=iClose(PARA,0,i+k*Period());
i+k*Period());
Фактически ты ищешь бар с номером Period()^2 (по максимуму), а столько баров в истории может и не быть
 
vladv002 >>:

Ваш код как есть запустил - работает НО данные по всем строкам одинаковые!!! Т.е. с одного ТФ!
Минутку, у Вас все цыфиры по ТФ разные и меняются? Может что с моим МТ4, здесь вер-220.
Пожалуйста проверьте на счет цыфир, а еще лучше смените вывод на[0][0]:
"\n", " -----------1------ = ",arr1[0][1]," - ", arr1[0][1], Хотя разницы особо нет.
Подставил Ваши блоки - меняются цыфиры только того ТФ на котором идет тест!
Но всеравно спасибо.


Повнимательней погоняй всё меняется как положено. Я привел рабочий пример дальше сам меняй что надо и разберись с ArrayCopyRates, можно не только получать значения с других таймфреймов но и с других инструментов.

 
Vinin >>:


Ты свой индикатор на график выкладывал?

да.

Не знаю... что-то не так. попробуйте повторить. может с историей глюк?

Или билд новый.

но у меня М1 нулевой бар - последний пришедший 2/04/2010. И хоть тресни.

 
avatara писал(а) >>

да.

Не знаю... что-то не так. попробуйте повторить. может с историей глюк?

Или билд новый.

но у меня М1 нулевой бар - последний пришедший 2/04/2010. И хоть тресни.

Я поправился постом выше.
Лучше скажи что хотел получить?
Причина обращения: