Друзья, подскажите, инициализирую массив типа double в эксперте (в индикаторе это был буффер вывода по которому рисовался индик), делаю расчет переменной double и присваиваю ее значение i-ому элементу массива.
Вывожу значение через Print/Comment - значение переменной выводит, а значение любого из элементов массива всегда нулевое. Почему?
{
double HH, LL;
double best[];
double best_MA;
int n=0;
for(int s=k; s < BESTperiod+k; s++)
{
n++;
HH = High[s] - High[s+1];
LL = Low[s] - Low[s+1];
double pp = (HH + LL)/Point;
ArrayResize(best,n);
best[n-1] = pp;
//Print("pp[", s, "]: ", pp);
// Print("best[", s, "]: ", best[s]);
}
Comment(
"\n\n best: ", best[0]
);
best_MA = iMAOnArray(best,0,BESTperiod,0,MODE_SMA,k);
return(best_MA);
}
{
double HH, LL;
double best[];
double best_MA;
int n=0;
for(int s=k; s < BESTperiod+k; s++)
{
n++;
HH = High[s] - High[s+1];
LL = Low[s] - Low[s+1];
double pp = (HH + LL)/Point;
ArrayResize(best,n);
best[n-1] = pp;
//Print("pp[", s, "]: ", pp);
// Print("best[", s, "]: ", best[s]);
}
Comment(
"\n\n best: ", best[0]
);
best_MA = iMAOnArray(best,0,BESTperiod,0,MODE_SMA,k);
return(best_MA);
}
Только добрался до кода.
Попробовал поменять - лучше не стало. В массив заносятся непонятно какие данные, с данными индюка при тех же параметрах не сходятся.
Только добрался до кода.
Попробовал поменять - лучше не стало. В массив заносятся непонятно какие данные, с данными индюка при тех же параметрах не сходятся.
Похоже, Ваш индикатор считает такую функцию
{
double HH, LL;
double best_MA;
HH = High[k] + High[k+1] - High[k+BESTperiod-1] - High[k+BESTperiod];
LL = Low[k] + Low[k+1] - Low[k+BESTperiod-1] - Low[k+BESTperiod];
best_MA = 0.5 * ( HH + LL ) / Point / ( BESTperiod - 1 );
return(best_MA);
}
Похоже, Ваш индикатор считает такую функцию
{
double HH, LL;
double best_MA;
HH = High[k] + High[k+1] - High[k+BESTperiod-1] - High[k+BESTperiod];
LL = Low[k] + Low[k+1] - Low[k+BESTperiod-1] - Low[k+BESTperiod];
best_MA = 0.5 * ( HH + LL ) / Point / ( BESTperiod - 1 );
return(best_MA);
}
Нет, у меня формула иная. А что это за формула, откуда?
Нет, у меня формула иная. А что это за формула, откуда?
Я просто преобразовал Вашу скользящую среднюю, зная алгоритм ее вычисления. На примере. Пусть BESTperiod = 4. Будем вычислять составляющую НН.
Если бы мы писали это в массив, то увидели бы 4 значения:
(H1 - H2); (H2 - H3); (H3 - H4); (H4 - H5), где H - это High[]
Скользящая средняя с периодом BESTperiod вычисляется по формуле:
( 0.5 * (H1 - H2) + (H2 - H3) + (H3 - H4) + 0.5 *(H4 - H5) ) / ( BESTperiod - 1 )
Раскройте скобки в числителе, и получите ту формулу, которую я привел.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Друзья, подскажите, инициализирую массив типа double в эксперте (в индикаторе это был буффер вывода по которому рисовался индик), делаю расчет переменной double и присваиваю ее значение i-ому элементу массива.
Вывожу значение через Print/Comment - значение переменной выводит, а значение любого из элементов массива всегда нулевое. Почему?
{
double HH, LL;
double best[];
double best_MA;
for(int s=k; s < BESTperiod+k; s++)
{
HH = High[s] - High[s+1];
LL = Low[s] - Low[s+1];
double pp = (HH + LL)/Point;
best[s] = pp;
//Print("pp[", s, "]: ", pp);
Print("best[", s, "]: ", best[s]);
}
Comment(
"\n\n best: ", best[0]
);
best_MA = iMAOnArray(best,0,BESTperiod,0,MODE_SMA,k);
return(best_MA);
}