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

 
eddy:
148380:

Гистограмму можно убрать, закрыв в коде буферы гистограмм парой символов //

мне нужен не пример.. я не знаю где буфер гистограмм и как искать

мне над заменённое


 Extremum без гистограмм - Extremum_2

//+------------------------------------------------------------------+
//|                                                   Extremum_2.mq4 |
//|                                                             Egor |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Egor"
#property link      ""
//---- indicator settings
#property indicator_separate_window
#property  indicator_buffers 8
#property  indicator_color1  Yellow
#property  indicator_color2  Lime
#property  indicator_color3  Lime
#property  indicator_color4  Lime
#property  indicator_color5  Red
#property  indicator_color6  Yellow
#property  indicator_color7  Red
#property  indicator_color8  Magenta
//---- indicator parameters
extern int NBars=20;
//---- indicator buffers
double     MNKBuffer[];
double     MNKBuffer1[];
double     MNKBuffer2[];
double     MNKBuffer3[];
double     MNKBuffer4[]; 
double     MNKBuffer5[];
double     MNKBuffer6[];
double     MNKBuffer7[];
double     MNKBuffer8[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(8);
//---- drawing settings
   SetIndexStyle(0,DRAW_LINE,0,1);
   SetIndexStyle(1,DRAW_LINE,0,1);
   SetIndexStyle(2,DRAW_HISTOGRAM,0,2);
   SetIndexStyle(3,DRAW_HISTOGRAM,0,5);
   SetIndexStyle(4,DRAW_LINE,0,1);
   SetIndexStyle(5,DRAW_HISTOGRAM,0,2);
   SetIndexStyle(6,DRAW_HISTOGRAM,0,4);
   SetIndexStyle(7,DRAW_HISTOGRAM,0,2);
   SetIndexDrawBegin(0,NBars);
   SetIndexDrawBegin(1,NBars);
   SetIndexDrawBegin(2,NBars);
   SetIndexDrawBegin(3,NBars);
   SetIndexDrawBegin(4,NBars);
   SetIndexDrawBegin(5,NBars);
   SetIndexDrawBegin(6,NBars);
   SetIndexDrawBegin(7,NBars);
   IndicatorDigits(Digits+4);
//---- indicator buffers mapping
   SetIndexBuffer(0,MNKBuffer);
   SetIndexBuffer(1,MNKBuffer1);
   SetIndexBuffer(2,MNKBuffer2);
   SetIndexBuffer(3,MNKBuffer3);
   SetIndexBuffer(4,MNKBuffer4);
   SetIndexBuffer(5,MNKBuffer5);
   SetIndexBuffer(6,MNKBuffer6);
   SetIndexBuffer(7,MNKBuffer7);
 //---- name for DataWindow and indicator subwindow label
   IndicatorShortName("Extremum_2("+NBars+")");
   SetIndexLabel(0,"MNK");
   SetIndexLabel(1,"MNK1");
   SetIndexLabel(2,"MNK2");
   SetIndexLabel(3,"MNK3");
   SetIndexLabel(4,"MNK4");
   SetIndexLabel(5,"MNK5");
   SetIndexLabel(6,"MNK6");
   SetIndexLabel(7,"MNK7");
 //----
   return(0);
  }
 //+------------------------------------------------------------------+
//| Extremum_2                                                       |
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   int    counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//----
    for( int k=0; k<limit; k++)
       { 
    double n=0;
    for(int i=0+k;i<NBars+k; i++) 
      {    
      if(iHigh(NULL,0,k)>iHigh(NULL,0,i) && iHigh(NULL,0,k)-iHigh(NULL,0,i)>n)
        {
      n=iHigh(NULL,0,k)-iHigh(NULL,0,i);  
        }
      }  
    double m=0;
    for( i=0+k;i<NBars+k; i++) 
      {    
      if(iLow(NULL,0,k)<iLow(NULL,0,i) && iLow(NULL,0,k)-iLow(NULL,0,i)<m)
        {
      m= iLow(NULL,0,k)-iLow(NULL,0,i);  
        }
      }
     //Линия гистограммы
       MNKBuffer[k]=n+m;
     //Нижняя линия волатильности
       MNKBuffer1[k]=m-n;
     //Верхняя линия волатильности
       MNKBuffer4[k]=n-m;
     //Гистограмма,экстремум медвежий  
      if((n+m)==(m-n))
       {
       //MNKBuffer2[k]=-(n+m)/2;
       }
     //Гистограмма,экстремум бычий
      if((n+m)==(n-m))
       {
       //MNKBuffer2[k]=-(n+m)/2;
       }
     //Гистограмма "-"
       if((n+m)<0)
       {
       //MNKBuffer5[k]=n+m;
       }
     //Гистограмма "+"  
       if((n+m)>0)
       {
       //MNKBuffer7[k]=n+m;
       }
     }
    return(0);
  }
 

Fox_RM писал(а):

какие параметры у стоха?

и что за индюк рисует цифры? типа зига

 
eddy:

Fox_RM писал(а):

какие параметры у стоха?

и что за индюк рисует цифры? типа зига

У стоха 4-е стоха в одном 21, 55, 89, 233 (1, 1). Это фракталы разных ТФ.

 
Fox_RM:

eddy писал(а):

и что за индюк рисует цифры? типа зига

Это фракталы разных ТФ.

кул. а есть ли зиг который по ним рисуется? было б шикарно

 
eddy:
Fox_RM:

eddy писал(а):

и что за индюк рисует цифры? типа зига

Это фракталы разных ТФ.

кул. а есть ли зиг который по ним рисуется? было б шикарно

Нет, к сожалению нет. Все делаю в ручную. Но в этой базе находил похожий индюк симофор вроде назывался.

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

 

Нет, к сожалению нет. Все делаю в ручную. Но в этой базе находил похожий индюк симофор вроде назывался.

Вот картинка со светафором,

 
Fox_RM:
eddy:
Fox_RM:

eddy писал(а):

и что за индюк рисует цифры? типа зига

Это фракталы разных ТФ.

кул. а есть ли зиг который по ним рисуется? было б шикарно

Нет, к сожалению нет. Все делаю в ручную. Но в этой базе находил похожий индюк симофор вроде назывался.

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


Можно попробовать. Только, при наложении разнопериодных индикаторов, для каждого следует задать одинаковое максимальное и минимальное значение во вкладке "Общие" окна настроек индикатора.

Н-р: для GBPAUD,Daily min: -0.35, max: +0.35  (для каждого символа и ТФ требуется индивидуалиный подбор).

 
148380:
Fox_RM:
eddy:
Fox_RM:

eddy писал(а):

и что за индюк рисует цифры? типа зига

Это фракталы разных ТФ.

кул. а есть ли зиг который по ним рисуется? было б шикарно

Нет, к сожалению нет. Все делаю в ручную. Но в этой базе находил похожий индюк симофор вроде назывался.

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


Можно попробовать. Только, при наложении разнопериодных индикаторов, для каждого следует задать одинаковое максимальное и минимальное значение во вкладке "Общие" окна настроек индикатора.

Н-р: для GBPAUD,Daily min: -0.35, max: +0.35 (для каждого символа и ТФ требуется индивидуалиный подбор).

Я пробовал, когда практиковал такое со стохастиком. Погрешность всеравно есть. Когда они на одной системе лучше. Я сам пробовал написать, но сложно в чужом коде разобраться и буфер полностью заполнен...;(

 

Вот промежуточный результат по работе с этим индикатором, небольшой комментарий на рисунке. Эксперемент планирую продолжить.

Добавлю еще столбцы гистограммы. Код ниже.

//+------------------------------------------------------------------+
//| Extremum.mq4 |
//| Egor |
//| |
//+------------------------------------------------------------------+
#property copyright "Egor"
#property link ""


#property indicator_separate_window
#property indicator_buffers 6

#property indicator_color1 Red
#property indicator_color2 DarkGray
#property indicator_color3 DarkGray
#property indicator_color4 Blue
#property indicator_color5 Lime
#property indicator_color6 Lime
#property indicator_style2 1
#property indicator_style3 1
#property indicator_style5 2
#property indicator_style6 2
//---- indicator parameters
extern int NBars=21;

extern int NBars4=89;
//---- indicator buffers
double MNKBuffer[];
double MNKBuffer1[];
double MNKBuffer2[];
double MNKBuffer3[];
double MNKBuffer4[];
double MNKBuffer5[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(6);


//---- drawing settings
SetIndexStyle(0,DRAW_LINE,0,1);
SetIndexStyle(1,DRAW_LINE,0,1);
SetIndexStyle(2,DRAW_LINE,0,1);
SetIndexStyle(5,DRAW_LINE,0,1);
SetIndexStyle(6,DRAW_LINE,0,1);
SetIndexStyle(7,DRAW_LINE,0,1);

SetIndexDrawBegin(0,NBars);
SetIndexDrawBegin(1,NBars);
SetIndexDrawBegin(2,NBars);
SetIndexDrawBegin(5,NBars4);
SetIndexDrawBegin(6,NBars);
SetIndexDrawBegin(7,NBars);

IndicatorDigits(Digits+4);
//---- indicator buffers mapping
SetIndexBuffer(0,MNKBuffer);
SetIndexBuffer(1,MNKBuffer1);
SetIndexBuffer(2,MNKBuffer2);
SetIndexBuffer(3,MNKBuffer3);
SetIndexBuffer(4,MNKBuffer4);
SetIndexBuffer(5,MNKBuffer5);

//---- name for DataWindow and indicator subwindow label
IndicatorShortName("Extremum("+NBars+")");

SetIndexLabel(0,"MNK");
SetIndexLabel(1,"MNK1");
SetIndexLabel(2,"MNK2");
SetIndexLabel(3,"MNK3");
SetIndexLabel(4,"MNK4");
SetIndexLabel(5,"MNK5");
//---- indicators
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;

//---- macd counted in the 1-st buffer

for( int k=0; k<limit; k++)
{

double n=0;
for(int i=0+k;i<NBars+k; i++)
{
if(iHigh(NULL,0,k)>iHigh(NULL,0,i) && iHigh(NULL,0,k)-iHigh(NULL,0,i)>n)
{
n=iHigh(NULL,0,k)-iHigh(NULL,0,i);
}
}
double m=0;
for( i=0+k;i<NBars+k; i++)
{
if(iLow(NULL,0,k)<iLow(NULL,0,i) && iLow(NULL,0,k)-iLow(NULL,0,i)<m)
{
m= iLow(NULL,0,k)-iLow(NULL,0,i);
}
}

MNKBuffer[k]=n+m;
MNKBuffer4[k]=m-n;
MNKBuffer5[k]=n-m;
//--------------------


n=0;
for( i=0+k;i<NBars4+k; i++)
{
if(iHigh(NULL,0,k)>iHigh(NULL,0,i) && iHigh(NULL,0,k)-iHigh(NULL,0,i)>n)
{
n=iHigh(NULL,0,k)-iHigh(NULL,0,i);
}
}
m=0;
for( i=0+k;i<NBars4+k; i++)
{
if(iLow(NULL,0,k)<iLow(NULL,0,i) && iLow(NULL,0,k)-iLow(NULL,0,i)<m)
{
m= iLow(NULL,0,k)-iLow(NULL,0,i);
}
}
MNKBuffer3[k]=n+m;
MNKBuffer1[k]=m-n;
MNKBuffer2[k]=n-m;




}

return(0);
}

 
Fox_RM:

Вот промежуточный результат ...

кто-нибудь мне объяснит что происходит?:)

fox, если ты соединил 2 екс-а в 1, то почему он отличается от 2х екс2?

или ты сделал от одного всё кроме канала, а от второго тока канал и тяжёлую?

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