Доброго времени суток, господа программисты!
Прошу не судить строго, я еще не спец в программировании. Только учусь. Написал индюка. Но проблема в том, что он не обновляется. То есть новые свечи появляются, а индюк их не обрабатывает. Надо сменить таймфрейм или переключиться между инструментами, тогда индикатор дорисуется. Подскажите, в чем может быть проблема? И еще одна непонятка. Если хочу поменять местами инструменты или перевернуть индикатор (например использую Inst_1_1 = 1/Inst_1_1), то на некоторых таймфреймах перестает отрисовываться средняя на индикаторе (везде отрисовывается, а на H4 и D1 - нет). Может кто то подскажет что это может быть? :/ Вроде ерунда, две строчки кода эта средняя, но никак не могу понять что с ней не так :/
Вот код:
int OnCalculate (const int rates_total,
const int prev_calculated,
const datetime& time[],
const double& open[],
const double& high[],
const double& low[],
const double& close[],
const long& tick_volume[],
const long& volume[],
const int& spread[])
{
int i,limit;
limit = rates_total - prev_calculated;
if(prev_calculated > 0)
limit++;
for(i = 0; i < limit; i++)
{
double Inst_1_1 = iClose(Instrument_1_1, 0, i);
if(Inst_Per_1_1 == true) Inst_1_1 = 1/Inst_1_1;
double Inst_1_2 = iClose(Instrument_1_2, 0, i);
if(Inst_Per_1_2 == true) Inst_1_2 = 1/Inst_1_2;
Korel_Buffer[ i ]=Inst_1_1 / Inst_1_2;
if(Buffers == 2)
{
double Inst_2_1 = iClose(Instrument_2_1, 0, i);
if(Inst_Per_2_1 == true) Inst_2_1 = 1/Inst_2_1;
double Inst_2_2 = iClose(Instrument_2_2, 0, i);
if(Inst_Per_2_2 == true) Inst_2_2 = 1/Inst_2_2;
Korel_Buffer2[ i ]=(Inst_2_1 / Inst_2_2) + Podnyat_Graf;
}
}
if(Ris_Srednyaya == true)
{
for(i = 0; i < limit; i++)
{
int j = 0;
double Summa = 0;
for(j = 0; j < Max_Sred; j++)
{
Summa = Summa + Korel_Buffer[i+j];
}
Srednyaya[ i ] = Summa/j;
}
}
return(rates_total);
}