iMA с "First Indicator's Data"

 

Привет Всем,

При задании скользящего среднего интерактивно у нас есть опция "First Indicator's Data", когда цена применяется не к цене закрытия, а, Например, к другому индикатору. Я не видел подобной опции в функции iMA?! - Знает ли кто-нибудь как применить iMA к какому-нибудь индикатору, Например iRSI и т.д.? (т.е. привести пример как это сделать).

Спасибо!

 

double iMAOnArray( double array[], int total, int period, int ma_shift, int ma_method, int shift)

Расчет скользящего среднего на данных, хранящихся в массиве. В отличие от iMA(...) функция iMAOnArray не выбирает данные на основе названия инструмента, таймфрейма и используемой цены - ценовые данные должны быть подготовлены заранее. Расчет производится слева направо. Для организации доступа к элементам массива, как к таймсерии (то есть справа налево), необходимо использовать функцию ArraySetAsSeries.

Файлы:
 

Спасибо, StatBars!

Я обнаружил один Пример:

=====================================================================

double Stochastic_array[50];
int j=0;

while (j<50) {
Stochastic_array[j] = iStochastic(NULL, 0, Stochastic_period, 3,3, MODE_SMA,0,MODE_MAIN, j);
j++;
}

ArraySetAsSeries(Stochastic_array,true);
double MA_0 = iMAOnArray(Stochastic_array, 0, MA_period, 1, MODE_SMA, 0) ;
// double Stochastic_0 = iStochastic(NULL, 0, Stochastic_period, 3, 3, MODE_SMA, 0, MODE_MAIN, 0);
// double Stochastic_1 = iStochastic(NULL, 0, Stochastic_period, 3, 3, MODE_SMA, 0, MODE_MAIN, 1);
=====================================================================

Переделал его под RSI, где последняя строчка:

double ma_rsi = iMAOnArray(rsi_array, 0, ma_rsi_period, 1, MODE_EMA, 0);

В comments я вижу значение ma_rsi.

Но вот что совершенно непонятно - если "MODE_EMA", то все в порядке - допустим "ma_rsi = 42.1234",

а если MODE_SMA или другой, то значения "ma_rsi = 0"?!!! При этом значения rsi_array[...] ненулевые!!!

- Может кто подскажет в чем дело?

Спасибо!

 

..После обнуления шифта проблемы решились!

Еще раз Спасибо StatBars!

 

Помогите новичку!!! ОЧЕНЬ ПРОШУ!!!

Хочу добиться, чтобы при совмещении МА с X_CCI (прицеплен) значение МА было по Previous Indicator's Data, как на картинке:

Пытаюсь сделать что-то наподобие

//+------------------------------------------------------------------+
//| Indicators Data                                                  |
//+------------------------------------------------------------------+
double      M_A_1;       // полное значение MА
double      X_C_1;       // полное значение X_CCI
double      M_A;         // округлённое значение MА до целого
double      X_C;         // округлённое значение X_CCI до целого
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
//+------------------------------------------------------------------+
//| вычисление значений X_CCI и Moving Average                       |
//+------------------------------------------------------------------+
   X_C_1=iCustom(NULL, 0, "X_CCI_start",0,0);
   double M_A_1[100], CCI[100];
   int    i,limit=ArraySize(X_C_1);
     for(i=0; i<limit; i++)
         {      
            CCI[i]=iCustom(NULL, 0, "X_CCI_start",PRICE_CLOSE,0,i);
            M_A_1[i]=iMAOnArray(CCI,0,12,0,MODE_SMA,i);
         }
//+------------------------------------------------------------------+
//| приведение значений X_CCI и Moving Average к целому числу        |
//+------------------------------------------------------------------+
   M_A=NormalizeDouble(M_A_1, 0);
   X_C=NormalizeDouble(X_C_1, 0);
//+------------------------------------------------------------------+
//| вывод значений X_CCI и Moving Average на экран                   |
//+------------------------------------------------------------------+
   Comment("M_A_1: ", M_A_1, "  M_A: ", M_A, "  X_C_1: ", X_C_1, "  X_C: ", X_C);
//----
   return(0);
  }
//+------------------------------------------------------------------+

но ничего не получается... Многие мне уже советовали, всякое пробовал, но мало разбираюсь в MQL.

Напишите, плиз, конкретный код, ну ОЧЕНЬ ПЛИЗ !!!

Файлы:
 
#property indicator_separate_window
#property indicator_buffers 2
extern int MAPeriod=12;
int limitCCI;
int limitMA;
double CCI[];
double MA[];
//+------------------------------------------------------------------+
int init()
{
limitCCI=WindowFirstVisibleBar()+MAPeriod+1;
limitMA=limitCCI-MAPeriod;

SetIndexBuffer(0,CCI);

SetIndexBuffer(1,MA);

return(0);
}
//+------------------------------------------------------------------+
int start()
{
for(int i=0; i<limitCCI; i++) CCI[i]=iCustom(NULL,0,"X_CCI_start",PRICE_CLOSE,0,i);

for(i=0; i<limitMA; i++) MA[i]=iMAOnArray(CCI,0,12,0,MODE_SMA,i);

limitCCI=1;
limitMA=1;

return(0);
}
 

чёт не совсем понял...

это отдельный индикатор?

а в эксперте это как изложить?

Причина обращения: