Скачать MetaTrader 5

НЕ Работа функций CurTime(), Seconds(), Minute()... в теле индикаторов при тестировании

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Forex Trader
114277
Forex Trader  
Пишем эксперт с применением индикатора iCustom... ,
в теле индикатора есть функции типа CurTime(), Seconds(), Minute()...
При тестировании такого эксперта, функции этого семейства из индикатора неизменно дают сведения о самом первом тике.
Т.е. при вызове их из эксперта непосредственно все ок, а из индикатора в эксперте - нет.

Вот маленький тестовый набор.

// Эксперт:
int init()
{
}
//+-+
int start()
{ string tmpS;
double ii1,ii2,ii3;

if (CurTime()<StrToTime("2006.04.07 00:00") || CurTime()>StrToTime("2006.04.07 01:00")) return(0);

ii1=iCustom( NULL,PERIOD_M1,"ind1",0,0);
ii2=iCustom( NULL,PERIOD_M1,"ind1",1,0);
ii3=iCustom( NULL,PERIOD_M1,"ind1",2,0);

tmpS=Seconds()+" | "+Minute()+" | "+CurTime() +" :: "+ ii1 +" | "+ ii2 +" | "+ ii3;
Print(tmpS);
return(0);
}
//+-+
int deinit()
{
return(0);
}


// Индикатор ind1.mq4:
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_color3 Aqua
//---- indicator buffers
double Ind1[];
double Ind2[];
double Ind3[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{ int i, tmp;

//---- additional buffers are used for counting
IndicatorBuffers(3);
//---- indicator buffers mapping
SetIndexBuffer(0, Ind1);
SetIndexBuffer(1, Ind2);
SetIndexBuffer(2, Ind3);
//---- line names
SetIndexLabel( 0,"Ind1") ;
SetIndexLabel( 1,"Ind2") ;
SetIndexLabel( 2,"Ind3") ;
//---- drawing settings
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexStyle(2,DRAW_HISTOGRAM);
//----
IndicatorDigits(6);
SetIndexDrawBegin(0,30);
SetIndexDrawBegin(1,30);
SetIndexDrawBegin(2,30);
return(0);
}
//+------------------------------------------------------------------+
//| Accelerator/Decelerator Oscillator |
//+------------------------------------------------------------------+
int start()
{ int limit, TimeOfCurBar, VPTimeBar, RelPeriodMax;
int counted_bars=IndicatorCounted();

//---- check for possible errors
if(counted_bars<0) return(-1);
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- counted in the 1-st additional buffer
for(int i=0; i<limit; i++)
{ Ind1[i]=Seconds();
Ind2[i]=Minute();
Ind3[i]=CurTime();
}
return(0);
}
//+------------------------------------------------------------------+
Forex Trader
114277
Forex Trader  
Спасибо. Исправим.
Forex Trader
114277
Forex Trader  
Добрый день!

У меня эта проблемма осталась, и билд вроде 193. Функция CurTime() при тестировании по прежнему возвращает не то время.
Forex Trader
114277
Forex Trader  
Добрый день!

У меня эта проблемма осталась, и билд вроде 193. Функция CurTime() при тестировании по прежнему возвращает не то время.

Что значит "не то время"?
Forex Trader
114277
Forex Trader  
При тестировании стратегии функиция:
int init

{
Print(Timetostr(Curtime()));
return(0);
}



оставляет запись с временем последней реально полученной котировки, т.е. если я работал в выходные она пишет дату пятницы 23:59.

Как ни странно перед тем как писать ответ еще раз посмотрел и все заработало, извините будем разбираться...

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий