Разобрался в чем дело! У меня значение переменной TimeFrame = 1, то есть минутный график, а тестирую я на М5. Запустил тест на М1, все заработало. Но все же, в чем дело? ведь таймфрейм прописан в size+=(iHigh(Symbol(),TimeFrame,i)-iLow(Symbol(),TimeFrame,i))/Point;
Nikolay Bosuy: Разобрался в чем дело! У меня значение переменной TimeFrame = 1, то есть минутный график, а тестирую я на М5. Запустил тест на М1, все заработало. Но все же, в чем дело? ведь таймфрейм прописан в size+=(iHigh(Symbol(),TimeFrame,i)-iLow(Symbol(),TimeFrame,i))/Point;
Так верней будет. И ошибка не здесь, а там где вызываете. Если в индикаторе, то через сравнение загруженных и посчитанных баров отмечать появление нового и вызывать расчетную функцию, если в советнике, то через сравнение времени открытия нулевого бара фиксить появление нового бара и вызывать Вашу функцию.
Типа такого для любого периода
bool FlagNewBarF(int prd, datetime &ArgBarTime,bool &FlagNbar) // prd - период и аргументы времени открытия бара и возвращаемого флага
{
FlagNbar=false;
if(ArgBarTime!=iTime(NULL,prd,0))
{
ArgBarTime=iTime(NULL,prd,0);
FlagNbar=true;
}
return(FlagNbar);
}
//вызов типа такого
if(FlagNewBarF(1, BarTime1,FlagNewBar1))
{
Alert("FlagNbar1 ",FlagNewBar1,"BarTime1 ",TimeToStr(BarTime1,TIME_DATE|TIME_SECONDS));
}
Так верней будет. И ошибка не здесь, а там где вызываете. Если в индикаторе, то через сравнение загруженных и посчитанных баров отмечать появление нового и вызывать расчетную функцию, если в советнике, то через сравнение времени открытия нулевого бара фиксить появление нового бара и вызывать Вашу функцию.
Типа такого для любого периода
или для текущего периода в теле советника
Спасибо! Для советника делаю. Вызов это уже вторая задача. Вопрос был в работоспособности. Беда теперь в том, что не могу заставить брать данные с М1 при работе на М5 или выше
Спасибо! Для советника делаю. Вызов это уже вторая задача. Вопрос был в работоспособности. Беда теперь в том, что не могу заставить брать данные с М1 при работе на М5 или выше
все Вы можете))) надо только документацию правильно понять.)
//======== Средняя величина бара в пипсах ================double AverageBar(int countCandles, TimeFrameF)// сделайте период входным параметров функции и
//вызывайте ее с появлением свечи соответствующего периода
{
double size=0;
double returnSize=0;
for(int i=1; i<countCandles; i++)
{
size+=iHigh(Symbol(),TimeFrameF,i)-iLow(Symbol(),TimeFrameF,i);
returnSize=size/countCandles;
}
return(returnSize/Point);
}
Как понять?
size+=(iHigh(Symbol(),TimeFrame,i)-iLow(Symbol(),TimeFrame,i))/Point;
Как понять?
Каждую минуту новое значение. Среднее по 10 барам.
Разобрался в чем дело! У меня значение переменной TimeFrame = 1, то есть минутный график, а тестирую я на М5. Запустил тест на М1, все заработало. Но все же, в чем дело? ведь таймфрейм прописан в
size+=(iHigh(Symbol(),TimeFrame,i)-iLow(Symbol(),TimeFrame,i))/Point;
Так верней будет. И ошибка не здесь, а там где вызываете. Если в индикаторе, то через сравнение загруженных и посчитанных баров отмечать появление нового и вызывать расчетную функцию, если в советнике, то через сравнение времени открытия нулевого бара фиксить появление нового бара и вызывать Вашу функцию.
Типа такого для любого периода
или для текущего периода в теле советника
Так верней будет. И ошибка не здесь, а там где вызываете. Если в индикаторе, то через сравнение загруженных и посчитанных баров отмечать появление нового и вызывать расчетную функцию, если в советнике, то через сравнение времени открытия нулевого бара фиксить появление нового бара и вызывать Вашу функцию.
Типа такого для любого периода
или для текущего периода в теле советника
Спасибо! Для советника делаю. Вызов это уже вторая задача. Вопрос был в работоспособности. Беда теперь в том, что не могу заставить брать данные с М1 при работе на М5 или выше
Спасибо! Для советника делаю. Вызов это уже вторая задача. Вопрос был в работоспособности. Беда теперь в том, что не могу заставить брать данные с М1 при работе на М5 или выше
все Вы можете))) надо только документацию правильно понять.)
все Вы можете))) надо только документацию правильно понять.)
Спасибо!