Индикаторы: sumMA

 

sumMA:

усредненная сумма разнопериодных скользящих средних.

Author: Виктор

 

Не перевелись на Руси еще кулибины... Но зачем же велосипед?

Среднее значение между двумя диапазонами 10 и 20 будет 15. Так в чем же отличие от простой машки со значением 15??? Принципиальных отличий не вижу.

 

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

 

нельзя ли его немножко модернизировать: сделать так что бы такие параметры как: метод сглаживания скользящей, сдвиг скользящей, и цена по которой строится скользящая, для каждой из двух изначально задаваемых МА вводились отдельно т.е. другими словами для каждой скользящей отдельно вводились бы свои параметры. Буду вам очень благодарен если вы поможете, поскольку в коде программирования МТ4 я не разбираюсь и внести эти изменения сам не смогу.

Спасибо

 
RAKETA:

нельзя ли его немножко модернизировать: сделать так что бы такие параметры как: метод сглаживания скользящей, сдвиг скользящей, и цена по которой строится скользящая, для каждой из двух изначально задаваемых МА вводились отдельно т.е. другими словами для каждой скользящей отдельно вводились бы свои параметры. Буду вам очень благодарен если вы поможете, поскольку в коде программирования МТ4 я не разбираюсь и внести эти изменения сам не смогу.

Спасибо


Это можно сделать, скажем для двух-десяти скользящих. Индикатор же считает сумму всех скользящих диапазона. И если диапазон, например, от 10 до 100 периода, то это придется задавать переменные для 90 скользящих. Для 2 скользящих сделать это легко. Позже выложу.

 
//+------------------------------------------------------------------+
//|                                                   sumTWOma.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "jax1000"
#property link      "jax1000@list.ru"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
extern int period1=20;//период MA1
extern int period2=100;//период MA2
extern int MA_Method1=0;//метод сглаживания MA1
extern int Price1=0;//цена MA1
extern int shift1=0;//сдвиг MA1, относительно номера бара
extern int MA_Method2=0;//метод сглаживания MA2
extern int Price2=0;//цена MA2
extern int shift2=0;//сдвиг MA2, относительно номера бара
extern int width=1;//толщина линии индикатора
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
double Buffer[];
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   
   SetIndexStyle(0,0,0,width);
   SetIndexBuffer(0,Buffer);
   SetIndexLabel(0,"SUM/MA");
       
   
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
    {
     int limit;
     int counted_bars=IndicatorCounted();
  //---- последний посчитанный бар будет пересчитан
     if(counted_bars>0) counted_bars--;
     limit=Bars-counted_bars;
  //---- основной цикл
     for(int i=0; i<limit; i++)
       {string symbol=Symbol();
     Buffer[i]=(Ma(symbol,0,period1,shift1,MA_Method1,Price1,i)+Ma(symbol,0,period2,shift2,MA_Method2,Price2,i))/2;
   
    }
     
   return(0);
  }
//+------------------------------------------------------------------+
//функция расчета скользящей средней
double Ma(string valuta, int frame, int period, int shift, int MA_Method, int Price, int z)
  {
   double res1=0;
   res1=iMA(valuta,frame,period,shift,MA_Method,Price,z);
   return(res1);
  } 

это код для суммы двух МА. В настройках можно выбрать тип сглаживания, цену, сдвиг и период для них отдельно.

 

спасибо, огромное при огромное, очень благодарен

 

Арифметику не плохо бы вспомнить.

Возьмем средние от 2 до 10.

(2+3+4+5+6+7+8+9+10) /9=54/9=6

Теперь считаем (2+10)/2=6

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