Индикаторы: Normalizer - страница 4

 
fxxx:
mas писал(а): не знаю почему он не работает у меня взял код fxxx НЕ РАБОТАЕТ, мать перемать

ладно, сброшу на Альпари, выложу линк

буду признателен

 

ок,- индюки Normalizer_3param.mq4 Normal_MUVm.mq4 и шаблоны выложены на Альпари:

http://forum.alpari-idc.ru/showpost.php?p=1232641&postcount=2758

Программное обеспечение Индикаторы и советники для МТ4 пост 2758 (ветка, стр.276 пост 2758)

прямые ссылки:

Normalizer_3param.mq4 (3.9 Кб,
Normal_MUVm.mq4 (4.2 Кб,)
normal_muv_tpl.zip (2.3 Кб,)

 
fxxx:

ок,- индюки Normalizer_3param.mq4 Normal_MUVm.mq4 и шаблоны выложены на Альпари: http://forum.alpari-idc.ru/showpost.php?p=1232641&postcount=2758

Программное обеспечение
Индикаторы и советники для МТ4
(ветка, стр.276 пост 2758) пост 2758

прямые ссылки

Normalizer_3param.mq4 (3.9 Кб,
Normal_MUVm.mq4 (4.2 Кб,)
normal_muv_tpl.zip (2.3 Кб,)

вот спасибо, но когда качнул все равно не показывал, решилась проблема переустановкой терминала и все заработало.

 
Bazila:

Алексей, замечательный индикатор. Честно, долго ковырялся в коде, а индюк QQE он не кушает? и еще... можно ознокомится с индикатором market activity ?

Кажись идея породила бурное движение народных масс... А я-то думал, что просто вспомогательный инструмент выложил...

Bazila, market activity считается до крайности просто: берем скользящее среднее от объемов за 34 периода (я обычно использую гауссовы коэффициенты для гладкости) и вычитаем из него скользящее среднее, скажем, за 13 периодов. А пунктирные линии - вспомогательные уровни, по которым определяется текущее состояние, они высчитываются как +- скользящее среднее от квадрата индикатора за какой-то длительный промежуток (в данном варианте, по-моему, 3*больший период MACD). Собственно, эти линии и навели на мысль о написании Normilizer'а.

 
fxxx:

Алексей, строка 110:

for(i=Bars-counted_bars-characteristic_period-1;i>=0;i--)
я покоцал (//) и всунул байду:

if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit=Bars-counted_bars;
limit=MathMax(limit,characteristic_period-1);
for (i=limit; i>=0; i--)

шоб все нормално - хиляет на тостере ништяк, не знаю проканает ли в натуре (я типа выражаясь современным научным языком, понял?)

Маладэц

 
alsu:
Bazila:

Алексей, замечательный индикатор. Честно, долго ковырялся в коде, а индюк QQE он не кушает? и еще... можно ознокомится с индикатором market activity ?

Кажись идея породила бурное движение народных масс... А я-то думал, что просто вспомогательный инструмент выложил...

Bazila, market activity считается до крайности просто: берем скользящее среднее от объемов за 34 периода (я обычно использую гауссовы коэффициенты для гладкости) и вычитаем из него скользящее среднее, скажем, за 13 периодов. А пунктирные линии - вспомогательные уровни, по которым определяется текущее состояние, они высчитываются как +- скользящее среднее от квадрата индикатора за какой-то длительный промежуток (в данном варианте, по-моему, 3*больший период MACD). Собственно, эти линии и навели на мысль о написании Normilizer'а.


Я как до дома доберусь, код выложу.

 

для нормальных пацанов - молотит все подряд тепер (если нормально нехочет - неважно, заставим)

типаЖ такая мода - конкретный Нормализатор с типа среднего уровня попадалово (с IndMidLevel)

кароче - надо тебе стакан или ВПР - сразу смотреш где у него пополам - и резко записуеш - типа оба-на, стакан! - по пийсят! - сразу выставляем:

Indicator: stochastic (ну или wpr, momentum - любое по барабану) param1=14 param2=3; param3=3 (для sto14,3,3); mode=0; (это какой буфер, понял, уже было обясненно давно (на научном языке) IndMidLevel= 50 ( рси:50; wpr: -50, momentum: сразу по сто (100) ) ;

//+------------------------------------------------------------------+
//|                                                   Normalizer.mq4 |
//|                                          Copyright © 2008, al_su |
//|Normalizer_3param_ML                              al_su31@mail.ru |
//+------------------------------------------------------------------+
//mod Normalizer_3param_ML (midlevel)
#property copyright "Copyright © 2008, al_su"
#property link      "al_su31@mail.ru"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DodgerBlue
#property indicator_maximum 1
#property indicator_minimum -1
#property indicator_level1 0.25
#property indicator_level2 0.5
#property indicator_level3 0.75
#property indicator_level4 -0.25
#property indicator_level5 -0.5
#property indicator_level6 -0.75
#property indicator_levelcolor C'74,85,96'//SlateGray
//---- input parameters
#define PERIODS_CHARACTERISTIC 7
extern string  Indicator="macd";//macd, cci ... 
extern int     param1=12;//Íó èëè 9, íå âàæíî...
extern int     param2=26;
extern int     param3=9;//Ñêîêà íàäî ïàðàìåòðîâ, ñòîêà è çàäàåì
extern int     mode=0;
extern double  IndMidLevel=0;
extern string  note ="type-in Indicator FileName & params: macd, cci ... ";
//---- buffers 
double Normalizer[];
double characteristic_period;
double sigma;
//-------------------------------------------------------------------------------
double Indyuk(int shift)
{
   return (iCustom(0,0,Indicator,param1,param2,param3,/* è ò.ä.:)*/mode,shift)-IndMidLevel);
}
double MathTanh(double x)
{ 
   double exp;
   if(x>0)  {exp=MathExp(-2*x);return ((1-exp)/(1+exp));}
   else {exp=MathExp(2*x);return ((exp-1)/(1+exp));}
}
double ArrayAverage(double a[])
{
   int i;
   double s;
   if(ArraySize(a)<1) return (0);
   s=0;
   for(i=0;i<ArraySize(a);i++)  s+=a[i];
   return (s/ArraySize(a));
}
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorShortName("Normalized "+Indicator);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,Normalizer);
   
   int i;
   int count, count_zeros;
   count=0;
   count_zeros=0;
   double periods[];
   for(i=Bars-2;i>=0;i--)
   {
      if(Indyuk(i)*Indyuk(i+1)<0)//ïåðåõîä ÷åðåç 0
         {
            count++;
            ArrayResize(periods,count);
            periods[ArraySize(periods)-1]=0;
         }
      if(ArraySize(periods)>0) periods[ArraySize(periods)-1]++;
   }
   characteristic_period=2*PERIODS_CHARACTERISTIC*ArrayAverage(periods);
   
   SetIndexDrawBegin(0,characteristic_period);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int   i,j, counted_bars=IndicatorCounted();
   double S;
//----
//   for(i=Bars-counted_bars-characteristic_period-1;i>=0;i--)
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   int  limit=Bars-counted_bars;
   limit=MathMax(limit,characteristic_period-1);
   for (i=limit; i>=0; i--)
   {
      S=0;
      for(j=0;j<characteristic_period;j++) S+=MathPow(Indyuk(i+j),2);
      S/=characteristic_period;
      S=MathSqrt(S);
      if(S!=0) Normalizer[i]=Indyuk(i)/S;
      Normalizer[i]=MathTanh(Normalizer[i]);
   } 
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

fxxx, кодеры рулят даже на форексе 'о_О'

 

мля, тока щас заметил, что описание кто-то на английский перевел... причем весьма качественно...

гюльчатай, открой личико внатуре!

 
зачем такое усложнение ? Можно нормировать таким образом - (value - min) / (max - min), min и max максимальное и минимальное значения за определенный период, будет быстрее считаться и проще. Пример тут http://codebase.mql4.com/ru/code/10723