Скачать MetaTrader 5

ошибка в расчетах индикатора iMA

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
savabaka
133
savabaka 2012.12.27 10:04 

Пытаюсь создать индикатор.

Делаю вычисления

ExtFastMaHandle = iMA(NULL, 0, 12, 0, MODE_EMA, PRICE_CLOSE);

ExtSlowMaHandle = iMA(NULL, 0, 26, 0, MODE_EMA, PRICE_CLOSE); 

CopyBuffer(ExtFastMaHandle, 0, 0, rates_total, ExtFastMaBuffer);

CopyBuffer(ExtSlowMaHandle, 0, 0, rates_total, ExtSlowMaBuffer); 

затем использую данные вычисления  в

ExponentialMAOnBuffer(rates_total,prev_calculated,0,12,ExtFastMaBuffer,ExtFastResMaBuffer);

ExponentialMAOnBuffer(rates_total,prev_calculated,0,26,ExtSlowMaBuffer,ExtSlowResMaBuffer); 

то все данные обрабатывается нормально и график выводиться, а если за место MODE_EMA и  ExponentialMAOnBuffer использовать другой метод расчета скользящей средней, например MODE_SMA и SimpleMAOnBuffer то значения получаются неадекватными и с ними нельзя ничего сделать. Подскажите как решить данную проблему.

 

o_o
Модератор
23861
o_o 2012.12.27 10:29  

savabaka:

значения получаются неадекватными и с ними нельзя ничего сделать. Подскажите как решить данную проблему.

проинициализировать массив нулями перед вычислением.
savabaka
133
savabaka 2012.12.27 10:40  

for (int b = 0; b < rates_total; b++) {ExtFastMaBuffer[b] = 0; ExtSlowMaBuffer[b] = 0;} 

проинициализировал, не помогло.

price[i] 

нельзя проинициализировать нулями, так как это константа и ее нельзя модифицировать;
o_o
Модератор
23861
o_o 2012.12.27 10:43  
savabaka:
нельзя проинициализировать нулями, так как это константа и ее нельзя модифицировать;
значит смотрите выше - откуда она приходит в функцию.
savabaka
133
savabaka 2012.12.27 10:50  

вот описал же

ExtFastMaHandle = iMA(NULL, 0, 12, 0, MODE_EMA, PRICE_CLOSE); 

CopyBuffer(ExtFastMaHandle, 0, 0, rates_total, ExtFastMaBuffer); 

ExponentialMAOnBuffer(rates_total,prev_calculated,0,12,ExtFastMaBuffer,ExtFastResMaBuffer); 

все приходит от индикатора iMA. То есть цены это буфер ExtFastMaBuffer. Его я уже попробовал обнулить нулями как вы говорили, это не помогло.

Документация по MQL5: Технические индикаторы / iMA
Документация по MQL5: Технические индикаторы / iMA
  • www.mql5.com
Технические индикаторы / iMA - Документация по MQL5
o_o
Модератор
23861
o_o 2012.12.27 11:31  
savabaka:

вот описал же

все приходит от индикатора iMA. То есть цены это буфер ExtFastMaBuffer. Его я уже попробовал обнулить нулями как вы говорили, это не помогло.

это все филькина грамота, что вы скрины и строки показываете.

Проблема у вас в коде. вы не обнуляете массивы или не проверяете корректность результаты вызовов функций.

посему вам только тут помочь смогут

Клуб Телепатов - MQL4 форум
  • www.mql5.com
Клуб Телепатов - MQL4 форум
savabaka
133
savabaka 2012.12.27 11:44  
sergeev:

это все филькина грамота, что вы скрины и строки показываете.

Проблема у вас в коде. вы не обнуляете массивы или не проверяете корректность результаты вызовов функций.

посему вам только тут помочь смогут

Я не скрывал код, думал информации предоставил достаточно. Вот весь код индикатора, может с ним будет понятнее.
Файлы:
1_test.mq5 8 kb
o_o
Модератор
23861
o_o 2012.12.27 12:07  

проверьте CopyBuffer на наличие всех rates_total

и  почему вы думаете что индикатор iMA возле начала баров расчитан?  вам необходимо пропустить первые невалидные бары

savabaka
133
savabaka 2012.12.27 12:57  

Сделал проверку на CopyBuffer, там оказалось все нормально.

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

ExponentialMAOnBuffer(rates_total,prev_calculated,0,12,ExtFastMaBuffer,ExtFastResMaBuffer);  

на

ExponentialMAOnBuffer(rates_total,prev_calculated,12,12,ExtFastMaBuffer,ExtFastResMaBuffer);  

и все заработало.

Премного благодарен за квалифицированную помощь.

Документация по MQL5: Технические индикаторы / iMA
Документация по MQL5: Технические индикаторы / iMA
  • www.mql5.com
Технические индикаторы / iMA - Документация по MQL5
Rashid Umarov
Админ
11989
Rashid Umarov 2012.12.27 14:28  
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий