Indicators: XMA

 

XMA:

This Moving Average indicator has digital filter to detect trend and flat states of the market.

Author: Rustamzhan Salidzhanov

 

Симпатичный алгоритм

 

Вот если-бы ей цвет ещё добавить )))......

 

Весьма интересный подход.

Ещё один есть в книге Ю.П.Лукашина "Адаптивные методы краткосрочного прогнозирования временных рядов". Интересный момент про контрольный сигнал (сглаженная ошибка деленная на сглаженный модуль ошибки; сглаживание - экспоненциальное). Если заинтересуетесь - попробуйте использовать такой вид контрольного сигнала для управления чувствительностью индикатора.

 
JS_Sergey:

Вот если-бы ей цвет ещё добавить )))......

Цвет добавить не долго, вот толку от этого не вижу, хотя....
lea
писал(а):

Весьма интересный подход.

Ещё один есть в книге Ю.П.Лукашина "Адаптивные методы краткосрочного прогнозирования временных рядов". Интересный момент про контрольный сигнал (сглаженная ошибка деленная на сглаженный модуль ошибки; сглаживание - экспоненциальное). Если заинтересуетесь - попробуйте использовать такой вид контрольного сигнала для управления чувствительностью индикатора.


Спасибо попробую

 
JS_Sergey:

Вот если-бы ей цвет ещё добавить )))......

Как два пальца, и ходить далеко не надо. Берем индикатор xrust'а и цепляем к нему блок цветности от индикаторов Vinin'а.

Правда, Рустам прав, толку от этого немного.

#property copyright "#Copyright © 2008, XrustSolution.#"
#property link      "#http://www.xrust.ucoz.net#"
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Yellow
#property indicator_color2 Aqua
#property indicator_color3 Red
extern int period=12;
extern int porog =3;
extern int metod =1;
extern int metod2=1;
extern int prise =0;
extern bool _Color=true;
//---- buffers
double Signal[];
double Up[];
double Dn[];
bool up=false,dn=false;
//+------------------------------------------------------------------+
void init(){
   SetIndexStyle(0,DRAW_LINE);
   SetIndexDrawBegin(0,0);
   SetIndexBuffer(0,Signal);
   
   SetIndexStyle(1,DRAW_LINE);
   SetIndexDrawBegin(0,0);
   SetIndexBuffer(1,Up);
   
   SetIndexStyle(2,DRAW_LINE);
   SetIndexDrawBegin(0,0);
   SetIndexBuffer(2,Dn);
   IndicatorShortName("Xma_color"+period+porog);
return;} 
//+------------------------------------------------------------------+
int start() {
   int limit;
   //bool up,dn;
   double tmp1,tmp2;
   int counted_bars=IndicatorCounted();
   int i;
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   for (i = limit;i>=0;i--){
     tmp1=iMA(Symbol(),0,period,0,metod,prise,i);
     tmp2=iMA(Symbol(),0,period,1,metod2,prise,i);
     if(MathAbs(tmp1-tmp2)>=porog*Point){
       Signal[i]=tmp2;
     }else{
       Signal[i]=Signal[i+1];
     }
   }
   if (_Color) {
      for (i = limit;i>=0;i--) {      
         Up[i]=EMPTY_VALUE;
         Dn[i]=EMPTY_VALUE;
         if (Signal[i]>Signal[i+1]) {Up[i]=Signal[i];Up[i+1]=Signal[i+1];up=true;dn=false;}
         if (Signal[i]<Signal[i+1]) {Dn[i]=Signal[i];Dn[i+1]=Signal[i+1];dn=true;up=false;}
         if (Signal[i]==Signal[i+1] && up) Up[i]=Signal[i];
         else if (Signal[i]==Signal[i+1] && dn) Dn[i]=Signal[i];
      }
   }
   return(0);}
 

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

 
xrust:

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

Тем не менее при работе вручную хорошо выделяет флет, что очень помогает.

 

Спасибо за индикатор. +10

 
granit77:
JS_Sergey:

Вот если-бы ей цвет ещё добавить )))......

Как два пальца, и ходить далеко не надо. Берем индикатор xrust'а и цепляем к нему блок цветности от индикаторов Vinin'а.

Правда, Рустам прав, толку от этого немного.


два пальца - так два пальца; толку немного - потому что ты опять шото не то или не туда прицепил

у тебя вверх - красный, вниз - красный, всторону - то желтый, то ...

п.с. ну тыб granit77...- и такой индикатор испортил, и два пальца зря ...

 

алгоритм - красивый, спасибо