iCustom'un ayrıntılı açıklaması - sayfa 2

 
NewCoder47 :


Bu RaptorUK için teşekkürler, ancak asıl zorluk çektiğim şey kodlama. MQL4'te çok yeniyim ve bunu sadece birkaç aydır yapıyorum ve hala öğreniyorum - bu yüzden kodlamanın basit bir açıklamasına ve göstergede nasıl kurulacağına ihtiyacım var.

Yazdıklarımı okumadın mı? " Göstergelerde herhangi bir değişiklik yapılmasına gerek yoktur... EA, ihtiyaç duyduğu vardiya değerlerinde ihtiyaç duyduğu arabelleklere basitçe erişir. "
 
dabbler :
Hayır, yapamazsın. Sadece denedim. Virgüller arasında boş bir yer bırakarak parametrelerden birini bırakırsanız derlenmez.
Son ifadeyi düzeltmem gerektiğini biliyordum. Parametreler için virgülleri kaldırın.
 
ubzen :
Son ifadeyi düzeltmem gerektiğini biliyordum. Parametreler için virgülleri kaldırın.

Bu Göstergeyi Gösterge Klasörümde TOR.mqh olarak uyguladım. Daha sonra aşağıdaki Kodu Expert Klasörüne yazdım.

 void start(){
     iCustom ( Symbol (), 0 , "TOR" , 0 , 1 );
}
Herhangi bir parametreyi geçmeden benim için iyi oldu.
 
ubzen :

Bu Göstergeyi Gösterge Klasörümde TOR.mqh olarak uyguladım. Daha sonra aşağıdaki Kodu Expert Klasörüne yazdım.

Herhangi bir parametre geçmeden benim için iyi derlendi .
Ama aslında işe yarıyor mu?
 
dabbler :
Ama aslında işe yarıyor mu?
Evet. Her zaman. Dış Değerlerden bahsediyorum. Ve sanırım Tamponlardan bahsediyorsunuz.
 

Yardımlarınız için teşekkürler arkadaşlar, yarın akşam bir bakacağım ve ne bulabileceğime bir bakayım.

teşekkürler

 

Hey Millet. Hala biraz zorluk çekiyor gibiyim.

İşte kod, göstergede ( Göstergede hiçbir şey değiştirmedim ), ilgili olduğunu düşündüğüm kısmı gösteriyorum. Lütfen bunların göstergede birbirini takip etmediğini unutmayın, soyduğum daha çok şey var.

 //---- indicator buffers
double      STDBuffer[];
double      stddevma[];


//---- macd counted in the 1-st buffer
   for ( int i=limit- 1 ; i>= 0 ; i--){
     STDBuffer[i]= iStdDev (Pair1, 0 ,StdDev.MA. Period , StdDev.MA.Shift, StdDev.MA.Method, StdDev.MA.Price, i);
     }
   for (i=limit- 1 ; i>= 0 ; i--){
     stddevma[i] = iMAOnArray (STDBuffer, 0 , MA.Fast. Period , MA.Fast.Shift, MA.Fast.Method, i);
     } 

Şimdi EA'daki kod burada

                 double FastMA = iMA ( NULL , 0 ,FastMAPeriod, 0 , 0 , 0 , 0 );
                 double SlowMA = iMA ( NULL , 0 ,SlowMAPeriod, 0 , 0 , 0 , 0 );
                 double      STDBuffer = iCustom (Null, 0 , "SFX" , , , 0 , 0 );
                 double      stddevma = iCustom (Null, 0 , "SFX" , , , 1 , 0 );
                

Anlamadığım şey parametreler kısmı. Buraya hangi değerleri koyacağım? Bu benim mücadele ettiğim kısım. EA'nın daha aşağısındaki bir testte STDBuffer ve stddevma değerlerini kullanmak istiyorum. Örneğin, Çift1'i dahil ediyor muyum (ki bu, Gösterge'nin başka bir yerinde mevcut grafik olarak beyan edilmiştir)? iCustom'un başlangıcında zaten Null olarak bildirildiği gibi.

Ayrıca, EA'ya hangi değerlerin gönderildiğini fiziksel olarak görmenin bir yolu var mı?

Herhangi bir yardım çok takdir edilecektir.

teşekkürler

 
NewCoder47 :

İşte kod, göstergede ( Göstergede hiçbir şey değiştirmedim ), ilgili olduğunu düşündüğüm kısmı gösteriyorum. Lütfen bunların göstergede birbirini takip etmediğini unutmayın, soyduğum daha çok şey var.

Şimdi EA'daki kod burada

Anlamadığım şey parametreler kısmı. Buraya hangi değerleri koyacağım? Bu benim mücadele ettiğim kısım. EA'nın daha aşağısındaki bir testte STDBuffer ve stddevma değerlerini kullanmak istiyorum. Örneğin, Çift1'i dahil ediyor muyum (ki bu, Gösterge'nin başka bir yerinde mevcut grafik olarak beyan edilmiştir)? iCustom'un başlangıcında zaten Null olarak bildirildiği gibi.

Göstergenin ilgili kısımlarını göstermediniz . Tüm extern ifadelerini VE bunların gerçekleştiği sırayı göstermeniz gerekir.

Tüm SetIndexBuffer deyimlerini göstermeniz gerekir. Bunları neden göstermeniz gerektiğini anladığınızda, muhtemelen ne yapmanız gerektiğini göreceksiniz.

Oh, ve iCustom ifadelerinde virgüller arasında boşluk bırakamazsınız; derlemeyecek.

Orijinal olarak Rusça olduğunu dikkate alarak iCustom belgelerini yeniden okumayı deneyin. Dikkatlice incelemelisin.

 
dabbler :

Göstergenin ilgili kısımlarını göstermediniz . Tüm extern ifadelerini VE bunların gerçekleştiği sırayı göstermeniz gerekir.

Tüm SetIndexBuffer deyimlerini göstermeniz gerekir. Bunları neden göstermeniz gerektiğini anladığınızda, muhtemelen ne yapmanız gerektiğini göreceksiniz.

Oh, ve iCustom ifadelerinde virgüller arasında boşluk bırakamazsınız; derlemeyecek.

Orijinal olarak Rusça olduğunu dikkate alarak iCustom belgelerini yeniden okumayı deneyin. Onu dikkatlice incelemelisin.

Teşekkürler Dabbler. Tam EA ve Göstergeyi ekledim. iCustom'daki açıklamaları okudum ve parametreler kısmı dışında her şeyi anladım, son derece belirsiz. EA, sadece mo'da test ettiğim için seni çok kısalttı.

Teşekkürler,

Mike.

Gösterge:

 //---- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 2
#property  indicator_color1  Yellow
#property  indicator_color2  Red
#property  indicator_width1   1

//---- indicator parameters
extern string PairName = "" ;   // Leave blank for the pair of the chart, enter other pair name to compare correlated pairs

extern int StdDev.MA. Period = 12 ;   // D1=20
extern int StdDev.MA.Shift= 0 ;     //
extern int StdDev.MA.Method = 0 ; // 0=SMA 1=EMA 2=Smoothed 3=Linear Weighted
extern int StdDev.MA.Price = 0 ;   // 0 Close price, 1 Open price, 2 High price, 3 Low price, 4 Median price, (high+low)/2, 5 Typical price, (high+low+close)/3, 6 Weighted close price, (high+low+close+close)/4

extern int MA.Fast. Period = 3 ;
extern int MA.Fast.Method = 2 ;   //  0=SMA 1=EMA 2=Smoothed 3=Linear Weighted
extern int MA.Fast.Shift = 0 ;

extern bool CheckOncePerBar = true;

int i, limit, counted_bars;
static string Pair1;

datetime CurrentTimeStamp;

//---- indicator buffers
double      STDBuffer[];
double      stddevma[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
  
   IndicatorDigits ( Digits + 1 );
     
//---- drawing settings
   SetIndexStyle ( 0 , DRAW_LINE ); // 
   SetIndexStyle ( 1 , DRAW_LINE );

      
//---- indicator buffers mapping
   SetIndexBuffer ( 0 , STDBuffer);
   SetIndexBuffer ( 1 , stddevma);

   
   if (PairName == "" ) Pair1 = Symbol ();
   else Pair1 = PairName;

//---- name for DataWindow and indicator subwindow label
   IndicatorShortName ( "SFX TOR: " +Pair1+ "(" +StdDev.MA. Period + ")" );
   SetIndexLabel ( 0 , "StdDev" );
   SetIndexLabel ( 1 , "StdDev MA" );

//---- initialization done
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
int start()
  {

   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 i=limit- 1 ; i>= 0 ; i--){
     STDBuffer[i]= iStdDev (Pair1, 0 ,StdDev.MA. Period , StdDev.MA.Shift, StdDev.MA.Method, StdDev.MA.Price, i);
     }
   for (i=limit- 1 ; i>= 0 ; i--){
     stddevma[i] = iMAOnArray (STDBuffer, 0 , MA.Fast. Period , MA.Fast.Shift, MA.Fast.Method, i);
     } 
    
//Execute on bar Open
     if ( CheckOncePerBar == true ){
       if ( CurrentTimeStamp == Time[ 0 ] )
         return ( 0 );
   }
   
   CurrentTimeStamp = Time [ 0 ];
   
          
//---- done
   return ( 0 );
  }

EA:

 //+------------------------------------------------------------------+
//|                                                       Simple.mq4 |
//|                                                       Mike Clegg |
//|                                                                  |
//+------------------------------------------------------------------+

#property copyright "Mike Clegg"


// External variables
extern double LotSize = 1 ;

extern int MagicNumber = 123 ;

extern int FastMAPeriod = 12 ;
extern int SlowMAPeriod = 26 ;


// Global variables
int BuyTicket;
int SellTicket;


// Start function
int start()
        {
                 // Moving averages
                 double FastMA = iMA ( NULL , 0 ,FastMAPeriod, 0 , 0 , 0 , 0 );
                 double SlowMA = iMA ( NULL , 0 ,SlowMAPeriod, 0 , 0 , 0 , 0 );
                 double      STDBuffer = iCustom ( NULL , 0 , "SFX" , 0 , 0 );
       double      stddevma = iCustom ( NULL , 0 , "SFX" , 1 , 0 );
                
                 // Buy order 
                 if (FastMA > SlowMA && BuyTicket == 0 && stddevma > STDBuffer)
                        { PlaySound ( "alert.wav" );
         Alert ( Symbol (), "All Crossing" , Period (), "All Crossing" );
                        }
                                
                 return ( 0 );
        }

Lütfen EA'nın bir göstergenin işini yaptığı gerçeğini görmezden gelin, dediğim gibi, şu anda test ediyorum.

 
NewCoder47 :

Teşekkürler Dabbler. Tam EA ve Göstergeyi ekledim. iCustom'daki açıklamaları okudum ve parametreler kısmı dışında her şeyi anladım, son derece belirsiz. EA, sadece mo'da test ettiğim için seni çok kısalttı.

Teşekkürler,

Mike.

Gösterge:

EA:

Lütfen EA'nın bir göstergenin işini yaptığı gerçeğini görmezden gelin, dediğim gibi, şu anda test ediyorum.


Burada harika tavsiyeleriniz vardı ve hala mücadele ediyorsunuz....

iCustom'un göstergenizle nasıl çalıştığını öğrenmek için, göstergenin arabelleklerinde ne olduğunu kontrol etmek için bir helpEA veya helpIndicator oluşturabilirsiniz.

Bu şekilde, MT4'teki komutları kontrol etme hakkında en çok şeyi öğrenirsiniz. Burayı okuyun https://www.mql5.com/en/forum/138379

böyle bir şey yapın ve nasıl kullanacağınızı öğreneceksiniz ..... yapmak istediğiniz EA'larda