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

 
//+------------------------------------------------------------------+
//|                                                   Normalizer.mq4 |
//|                                          Copyright © 2008, al_su |
//|                                                  al_su31@mail.ru |
//+------------------------------------------------------------------+
//mod Normalizer_3param.mq4 
#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;
extern int     mode=0;
extern int     param1=12;//Íó èëè 9, íå âàæíî...
extern int     param2=26;
extern int param3=9;//Ñêîêà íàäî ïàðàìåòðîâ, ñòîêà è çàäàåì
//---- buffers 
double Normalizer[];
double characteristic_period;
double sigma;
//-------------------------------------------------------------------------------
double Indyuk(int shift)
{
   return (iCustom(0,0,Indicator,param1,param2,param3,/* è ò.ä.:)*/mode,shift));
}
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);
  }
//+------------------------------------------------------------------+
 

спасибо, Alsu; мода Normalizer_3param.mq4 проверил на минутах - вроде бы нормально, на тостере тоже, так что...

 
//+------------------------------------------------------------------+
//|                                                          111.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
//MUV%.mq4 (3.7 Kb) svm-d (09.11.2008 09:29)http://codebase.mql4.com/ru/4826 
//Normalizer.mq4 (3.5 Kb)alsu (18.11.2008 10:19) http://codebase.mql4.com/ru/4876
//mod Normal_MUV.mq4
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Yellow
#property indicator_level1 0.25
#property indicator_level2 0.5
#property indicator_level3 0.75
#property indicator_levelcolor C'74,85,96'//SlateGray
//extern int MAMetod = 0;
//extern int MAPeriod = 14;
extern int KPeriod = 14;
extern bool ShowDif = true;
extern bool ShowMUV = true;
extern string  Indicator= "MACD";//èëè rsi ... ëþáîå
extern int     mode=0;
extern int     param1=12;  //Íó èëè 9, íå âàæíî...
extern int     param2=26;
extern int     param3=9;   //Ñêîêà íàäî ïàðàìåòðîâ, ñòîêà è çàäàåì
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double K0[];
double K1[];
double Indyuk(int shift)
{
   return (iCustom(0,0,Indicator,param1,param2,param3,/* è ò.ä.:)*/mode,shift));
}
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
IndicatorBuffers(4); 
   if (ShowDif) SetIndexStyle(0,DRAW_LINE); else SetIndexStyle(0,DRAW_NONE); 
   if (ShowMUV) SetIndexStyle(1,DRAW_LINE); else SetIndexStyle(1,DRAW_NONE);
//   if (ShowMUV) {SetIndexStyle(0,DRAW_LINE); SetIndexStyle(1,DRAW_NONE);} 
//   else {SetIndexStyle(0,DRAW_NONE); SetIndexStyle(3,DRAW_LINE);}   
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexBuffer(2,K0);   
   SetIndexBuffer(3,K1); 
SetIndexLabel(0,"IndDiff");
SetIndexLabel(1,"Ind");
   IndicatorShortName("NormalMUV "+Indicator);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
//----
  for (int i = Bars-counted_bars;i >=0; i--)
  {
  K0[i] = Indyuk(i)-Indyuk(i+1);
  K1[i] = Indyuk(i);
//  K0[i] = iCustom(NULL,0,"MUV",MAPeriod,0,1,i)-iCustom(NULL,0,"MUV",MAPeriod,0,1,i+1);
//  K2[i] = iCustom(NULL,0,"MUV",MAPeriod,0,1,i);
  
  double K0mx = K0[ArrayMaximum(K0,KPeriod,i)];
  double K0mm = K0[ArrayMinimum(K0,KPeriod,i)]; 
    
  double K1mx = K1[ArrayMaximum(K1,KPeriod,i)];
  double K1mm = K1[ArrayMinimum(K1,KPeriod,i)];
    
  
  if ((K0mx - K0mm)>0) double k0 = 1-((K0mx-K0[i])/(K0mx-K0mm)); else k0 = 1;        
  if ((K1mx - K1mm)>0) double k1 = 1-((K1mx-K1[i])/(K1mx-K1mm)); else k1 = 1;
  ExtMapBuffer1[i] = k0;
  ExtMapBuffer2[i] = k1;
  }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

а терь дави ливер* на прикол - если взять вместе (бандой) - MUV%.mq4 (svm-d), MUVSatop, Normalizer(Alsu) - и все типа намешать - то получим шота типа как Шкаф : ( ... -индюк Шафа (шкаф) - Schaff TC ... нормально? - NormalMUV... : (((( ...

* "дави ливер" в современном научном языке может уротребляться как "обратите, пожалуйста, внимание на интересный феномен" - в сочетаниях с некоторыми выражениями (малонаучными) [прим.ред]б

p.s. - данное понятие только обогащает современный научный язык и не имеет ничего общего с толчком (кроме разве что выражения морды лица) [прим]б

 

Спасибо Алсу! Нормальный индикатор, для нормальных пацанов!

 
fxxx:

Спасибо Алсу! Нормальный индикатор, для нормальных пацанов!

Люди у меня почему то индюк не рисует линию, причем использовал код даже тот что уже под макд. У вас на картинках есть, у меня пусто:((

 

fxxx писал: (бампнуто с первой страницы)

автор только что это четко изложил - в разделе "Описалово".

string Indicator - собственно индюк, который потом передается в функцию iCustom(),... имя (macd, cci...) - писАть(руками)

int mode - номер нужной нам линии исходного индикатора ... буфер # (см. где цвет, табло) 0...7
int param1 ---------
int param2 - ... и его параметры. (если нету - то ставь нуля!)

Indicator - "МАСД" (...cci...- любэ - но шоб на нуль пересекало!!

mode - "0"
param1 -12
param2 - --26 или типа: Indicator - rsi mode 0, param1- 14, param2-0....

- а индюк QQE он не кушает? ...

- Кушает все - индюк которого "нормально" - шоб был с Нольом !

если нет - то коцай тот шо есть (изменяй) - т.па руби все шо ненадо под ноль rsi, sto -50; мом.-100; wpr +50 -- тогда нормально на нуля пересекает (как МАСД)

 
fxxx:

fxxx писал: (бампнуто с первой страницы)

автор только что это четко изложил - в разделе "Описалово".

string Indicator - собственно индюк, который потом передается в функцию iCustom(),... имя (macd, cci...) - писАть(руками)

int mode - номер нужной нам линии исходного индикатора ... буфер # (см. где цвет, табло) 0...7
int param1 ---------
int param2 - ... и его параметры. (если нету - то ставь нуля!)

Indicator - "МАСД" (...cci...- любэ - но шоб на нуль пересекало!!

mode - "0"
param1 -12
param2 - --26 или типа: Indicator - rsi mode 0, param1- 14, param2-0....

- а индюк QQE он не кушает? ...

- Кушает все - индюк которого "нормально" - шоб был с Нольом !

если нет - то коцай тот шо есть (изменяй) - т.па руби все шо ненадо под ноль rsi, sto -50; мом.-100; wpr +50 -- тогда нормально на нуля пересекает (как МАСД)

fxxx пришли мне плиз шаблон, если можно с твоим макдом нормализованным на без пробелов mas76 @ mail.ru буду признателен.Спасибо

 
mas:
fxxx:

fxxx писал: (бампнуто с первой страницы)

автор только что это четко изложил - в разделе "Описалово".

string Indicator - собственно индюк, который потом передается в функцию iCustom(),... имя (macd, cci...) - писАть(руками)

int mode - номер нужной нам линии исходного индикатора ... буфер # (см. где цвет, табло) 0...7
int param1 ---------
int param2 - ... и его параметры. (если нету - то ставь нуля!)

Indicator - "МАСД" (...cci...- любэ - но шоб на нуль пересекало!!

mode - "0"
param1 -12
param2 - --26 или типа: Indicator - rsi mode 0, param1- 14, param2-0....

- а индюк QQE он не кушает? ...

- Кушает все - индюк которого "нормально" - шоб был с Нольом !

если нет - то коцай тот шо есть (изменяй) - т.па руби все шо ненадо под ноль rsi, sto -50; мом.-100; wpr +50 -- тогда нормально на нуля пересекает (как МАСД)

fxxx пришли мне плиз шаблон, если можно с твоим макдом нормализованным на без пробелов mas76 @ mail.ru буду признателен.Спасибо

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

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

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