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_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);
}
чёт не совсем понял...
это отдельный индикатор?
а в эксперте это как изложить?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Привет Всем,
При задании скользящего среднего интерактивно у нас есть опция "First Indicator's Data", когда цена применяется не к цене закрытия, а, Например, к другому индикатору. Я не видел подобной опции в функции iMA?! - Знает ли кто-нибудь как применить iMA к какому-нибудь индикатору, Например iRSI и т.д.? (т.е. привести пример как это сделать).
Спасибо!