MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 720

 
Tüm çizimleri mumların üstüne değil de göstergede arka plan olarak nasıl ayarlayacağımı söyleyebilir misiniz?
 
Roman Sharanov :
Tüm çizimleri mumların üzerine değil de göstergede arka plan olarak nasıl ayarlayacağımı söyleyebilir misiniz?

Grafik özelliği ayarını kullanın: ChartSetInteger(chart_id, CHART_FOREGROUND ,değer);

Sadece göstergeler için değil.

 

Merhaba! Bir Pulse Flat histogram göstergesi var, onu histogramlardan lineer olana dönüştürmek istiyorum. Nereden başlamalı?

 //+------------------------------------------------------------------+
//|                                             FM Signal Filter.mq4 |
//|                                                 Copyright © 2008 |
//|                                                 enhanced version |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008 Arney Derick"
#property link        "http://metatrader.com/"

#property indicator_separate_window
#property indicator_buffers 6
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 DarkBlue
#property indicator_color4 Maroon
#property indicator_color5 Lime
#property indicator_color6 Yellow

//---- input parameters
extern int        bolPrd= 20 ;
extern double     bolDev= 2.0 ;
extern int        keltPrd= 20 ;
extern double     keltFactor= 1.5 ;
extern int        momPrd= 12 ;
//---- buffers
double upB[];
double upB2[];
double loB[];
double loB2[];
double upK[];
double loK[];

int i,j,slippage= 3 ;
double breakpoint= 0.0 ;
double ema= 0.0 ;
int peakf= 0 ;
int peaks= 0 ;
int valleyf= 0 ;
int valleys= 0 , limit= 0 ;
double ccis[ 61 ],ccif[ 61 ];
double delta= 0 ;
double ugol= 0 ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle ( 0 , DRAW_HISTOGRAM , EMPTY , 3 );
   SetIndexBuffer ( 0 ,upB);
   SetIndexEmptyValue ( 0 , EMPTY_VALUE );

   SetIndexStyle ( 1 , DRAW_HISTOGRAM , EMPTY , 3 );
   SetIndexBuffer ( 1 ,loB);
   SetIndexEmptyValue ( 1 , EMPTY_VALUE );

   SetIndexStyle ( 4 , DRAW_ARROW , EMPTY , 3 );
   SetIndexBuffer ( 4 ,upK);
   SetIndexEmptyValue ( 4 , EMPTY_VALUE );
   SetIndexArrow ( 4 , 159 );
   SetIndexStyle ( 5 , DRAW_ARROW , EMPTY , 1 );
   SetIndexBuffer ( 5 ,loK);
   SetIndexEmptyValue ( 5 , EMPTY_VALUE );
   SetIndexArrow ( 5 , 159 );

   SetIndexStyle ( 2 , DRAW_HISTOGRAM , EMPTY , 3 );
   SetIndexEmptyValue ( 2 , EMPTY_VALUE );
   SetIndexBuffer ( 2 ,upB2);

   SetIndexStyle ( 3 , DRAW_HISTOGRAM , EMPTY , 3 );
   SetIndexEmptyValue ( 3 , EMPTY_VALUE );
   SetIndexBuffer ( 3 ,loB2);

//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 

//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars= IndicatorCounted ();
   int shift,limit;
   double diff,d,dPrev,std,bbs;

   if (counted_bars< 0 ) return (- 1 );
   if (counted_bars> 0 ) counted_bars--;
   limit= Bars - 31 ;
   if (counted_bars>= 31 ) limit= Bars -counted_bars- 1 ;

   for (shift=limit;shift>= 0 ;shift--) 
     {
       //d=iMomentum(NULL,0,momPrd,PRICE_CLOSE,shift);
      d=LinearRegressionValue(bolPrd,shift);
      dPrev=LinearRegressionValue(bolPrd,shift+ 1 );
       if (d> 0 ) 
        {
         if ((dPrev> 0 ) && (dPrev>d)){ upB2[shift]=d; upB[shift]= 0 ; } else { upB[shift]=d; upB2[shift]= 0 ; }
         //upB[shift]=0;
         loB[shift]= 0 ;
         loB2[shift]= 0 ;
           } else {
         if ((dPrev< 0 ) && (dPrev<d)){ loB2[shift]=d; loB[shift]= 0 ; } else { loB[shift]=d; loB2[shift]= 0 ; }
         upB[shift]= 0 ;
         upB2[shift]= 0 ;
         //loB[shift]=d;
        }
      diff= iATR ( NULL , 0 ,keltPrd,shift)*keltFactor;
      std = iStdDev ( NULL , 0 ,bolPrd, MODE_SMA , 0 , PRICE_CLOSE ,shift);
      bbs = bolDev * std / diff;
       if (bbs< 1 ) 
        {
         upK[shift]= 0 ;
         loK[shift]= EMPTY_VALUE ;
           } else {
         loK[shift]= 0 ;
         upK[shift]= EMPTY_VALUE ;
        }
     }
   return ( 0 );
  }
//+------------------------------------------------------------------+

double LinearRegressionValue( int Len, int shift) 
  {
   double SumBars= 0 ;
   double SumSqrBars= 0 ;
   double SumY = 0 ;
   double Sum1 = 0 ;
   double Sum2 = 0 ;
   double Slope= 0 ;

   SumBars=Len *(Len- 1 )* 0.5 ;
   SumSqrBars=(Len- 1 )*Len *( 2 *Len- 1 )/ 6 ;

   for ( int x= 0 ; x<=Len- 1 ;x++) 
     {
       double HH = Low [x+shift];
       double LL = High [x+shift];
       for ( int y=x; y<=(x+Len)- 1 ; y++) 
        {
         HH = MathMax (HH, High [y+shift]);
         LL = MathMin (LL, Low [y+shift]);
        }
      Sum1 += x* ( Close [x+shift]-((HH+LL)/ 2 + iMA ( NULL , 0 ,Len, 0 , MODE_EMA , PRICE_CLOSE ,x+shift))/ 2 );
      SumY += ( Close [x+shift]-((HH+LL)/ 2 + iMA ( NULL , 0 ,Len, 0 , MODE_EMA , PRICE_CLOSE ,x+shift))/ 2 );
     }
   Sum2=SumBars*SumY;
   double Num1 = Len * Sum1 - Sum2;
   double Num2 = SumBars * SumBars-Len * SumSqrBars;

   if (Num2!= 0.0 ) 
     {
      Slope=Num1/Num2;
        } else {
      Slope= 0 ;
     }

   double Intercept=(SumY-Slope*SumBars)/Len;
   double LinearRegValue=Intercept+Slope *(Len- 1 );

   return (LinearRegValue);

  }
//+------------------------------------------------------------------+

 

DRAW-HISTOGRAM'ı DRAW_LINE ile değiştirdi ve çizgiyi 0 seviyesinde çizen son 2 tamponu sildi ve olan buydu.


oldu - oldu

Dosyalar:
26.png  27 kb
27.png  29 kb
 
Kos Mos :

DRAW-HISTOGRAM'ı DRAW_LINE ile değiştirdi ve çizgiyi 0 seviyesinde çizen son 2 tamponu sildi ve olan buydu.


oldu - oldu

Anladım :)

 
Artyom Trishkin :

Anladım :)

Evet))), korkunç görünüyor, çünkü 4 tampon kaldı, anladığım kadarıyla 2 veya 1 olması gerekiyor, doğru mu düşünüyorum?!

 

Örneğin, son gün değil, mumların nasıl yazılacağını size kim söyleyecek, ancak önceki gün, vb. kılavuz. İşte geçen günden bir örnek:

#özellik göstergesi_chart_window

extern bool Show_LABELS=true;

harici int Shift_Prev_LABEL=10; // sayı yatay ofset anlamına gelir

çift DHi,DLo;

//---- Öncesi

DHi =iYüksek(NULL, PERIOD_D1 ,1);

DLo =iLow(NULL,PERIOD_D1,1);

if (Show_LABELS==true)

{

if(ObjectFind("Pre_Day_Max")!=0)

{

ObjectCreate("Prev_max_day", OBJ_TEXT, 0, Time[Shift_Prev_LABEL+196], DHi);

ObjectSetText("Prev_Day_Max", "Önceki_D1"+DoubleToStr(DHi,Rakamlar)+" ", 9, "Arial", Macenta);

}

başka

{

ObjectMove("Prev_day_max", 0, Time[Shift_Prev_LABEL+196], DHi);

}

if(ObjectFind("Pre_Day_Min")!=0)

{

ObjectCreate("Gün Öncesi_Dakika", OBJ_TEXT, 0, Zaman[Shift_Prev_LABEL+196], DLo);

ObjectSetText("Önceki_Day_Dk", "Önceki_D1"+DoubleToStr(DLo,Rakamlar)+" ", 9, "Arial", LawnGreen);

}

başka

{

ObjectMove("Prev_Day_Min", 0, Time[Shift_Prev_LABEL+196], DLo);

}

}

Kodu init, deinite ve start'a yazmadım.

çift DHi,DLo; //   Görünüşe göre buradan başlaman gerekiyor, ama tam olarak ne olduğunu bilmiyorum ve sonra her şeyi kendim yazardım.

 
Artyom Trishkin :

Anladım :)

Hey ! Lütfen bana çizginin sağlam olması için nasıl yapacağımı söyle.

 
koctja :

DHi =iYüksek(NULL, PERIOD_D1 ,1);

DLo =iLow(NULL,PERIOD_D1,1);


çift DHi,DLo; //   Görünüşe göre buradan başlaman gerekiyor, ama tam olarak ne olduğunu bilmiyorum ve sonra her şeyi kendim yazardım.

Yardımla başlayın! Sayıyı sadece gerekli çubuk kaydırma ile değiştirmek yeterlidir iHigh(NULL, PERIOD_D1 , 1 );

 
Kos Mos :

Hey ! Lütfen bana çizginin sağlam olması için nasıl yapacağımı söyle.

"indicator_style" ile ilgili yardımı okuyun

gösterge_stilN

int

ENUM_LINE_STYLE değerinden bir değerle belirtilen grafik serisindeki çizgi stili. N - 1'den başlayarak numaralandırma grafik dizisi sayısı