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

 
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,

Parametrelere girenler, Gösterge'deki harici değişkenler için kullanmak istediğiniz değerlerdir. . . bu durumda bunlar. . .

 //---- 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;
 

Yardım dosyasına tekrar bakalım.

 double iCustom ( string symbol, int timeframe, string name, ..., int mode, int shift) 
 

... bölümünün tanımına bakarak.

... - Parametreler ayarlanır (gerekirse). Geçirilen parametreler ve bunların sırası, bildirim sırasına ve özel göstergenin harici değişkenlerinin türüne uygun olmalıdır.


9 harici değişkeniniz var ve bu nedenle doğru sırada ve doğru tipte 9 parametreye ihtiyacınız var

     double      STDBuffer = iCustom(Null, 0 , "SFX" , "" , 12 , 0 , 0 , 0 , 3 , 2 , 0 , true , 0 , 0 );
     double      stddevma =  iCustom(Null, 0 , "SFX" , "" , 12 , 0 , 0 , 0 , 3 , 2 , 0 , true , 1 , 0 );

Basit.

Sonra "Ayrıca, EA'ya hangi değerlerin gönderildiğini fiziksel olarak görmenin herhangi bir yolu var mı?" Diye soruyorsunuz.

Emin.

 Comment ( "StdBuffer=" + STDBuffer+ "\nstddevma=" + stddevma);
 
dabbler :
 double      STDBuffer = iCustom(Null, 0 , "SFX" , "" , 12 , 0 , 0 , 0 , 3 , 2 , 0 , true , 0 , 0 );
 double      stddevma =  iCustom(Null, 0 , "SFX" , "" , 12 , 0 , 0 , 0 , 3 , 2 , 0 , true , 1 , 0 );

Evet, Null'un bir yazım hatası olması dışında.

Göstergeyle başlayın ve kodu oluşturun.

Gösterge
EA
Varsa boşluklar dahil, uzantısız gösterge dosya adı.
 #define SFX "SFX"
#define sabit olduğundan. Yazım hatası olmaması için bir kez tanımlayın.
 extern string PairName = "" ;     // Leave blank for ...

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=Sm...
extern int StdDev.MA.Price = 0 ;   // 0 Close price, 1 O...
extern int MA.Fast. Period = 3 ;
extern int MA.Fast.Method = 2 ;   //  0=SMA 1=EMA 2=Sm ...
extern int MA.Fast.Shift = 0 ;

extern bool CheckOncePerBar = true;
string   PairName            = "" ;     
int      StdDev.MA. Period     = 12 ;  
int      StdDev.MA.Shift     =   0 ;    
int      StdDev.MA.Method    =   MODE_SMA ; 
int      StdDev.MA.Price     =   PRICE_CLOSE ;  
int      MA.Fast. Period       =   3 ;
int      MA.Fast.Method      =   MODE_SMMA ;
int      MA.Fast.Shift       =   0 ;
#define CheckOncePerBar        true;
Tamponları etkilemeyen değerler sabit yapılabilir.
   SetIndexBuffer ( 0 , STDBuffer);
   SetIndexBuffer ( 1 , stddevma);
Tamponların anlamını bulmak için kodu okumanız gerekebilir. Örneğin
STDBuffer[i]= iStdDev (...)
stddevma[i] = iMAOnArray (
 #define SFX_STD   0
#define SFX_STDMA 1
aramalar o zaman
 double      STDBuffer = iCustom ( NULL , 0 ,SFX,
                        PairName, StdDev.MA. Period , StdDev.MA.Shift, 
                        StdDev.MA.Method, StdDev.MA.Price, MA.Fast. Period , 
                        MA.Fast.Method, MA.Fast.Shift, CheckOncePerBar,
                                SFX_STD, 0 )
double      stddevma =   iCustom ( NULL , 0 ,SFX,
                        PairName, StdDev.MA. Period , StdDev.MA.Shift, 
                        StdDev.MA.Method, StdDev.MA.Price, MA.Fast. Period , 
                        MA.Fast.Method, MA.Fast.Shift, CheckOncePerBar,
                                SFX_STDMA, 0 )
 

Cevabınız için teşekkürler. böyle


 ExtMapBuffer1[i+ 3 ] = lower_fractal_7b;     could be used as calculated value when reversal fractal is called?

 
ubzen :
Evet. Her zaman. Dış Değerlerden bahsediyorum. Ve sanırım Tamponlardan bahsediyorsunuz.

Evet UBZEN,


Önerdiğinizi de denedim ve göstergemde belirtilen değeri döndürdü....

tüm bu uzun parametrelerin dışında eklemek veya kullanmak basit, kolaydır .... özellikle dizileri olan .......

Parametreleri derlerken kaybolabilirim.

çok teşekkürler .... Birkaç gündür bu cevabı arıyordum

 
WHRoeder : O zaman aramalar:
 double      STDBuffer = iCustom ( NULL , 0 ,SFX,
                        PairName, StdDev.MA. Period , StdDev.MA.Shift, 
                        StdDev.MA.Method, StdDev.MA.Price, MA.Fast. Period , 
                        MA.Fast.Method, MA.Fast.Shift, CheckOncePerBar,
                                SFX_STD, 0 )
double      stddevma =   iCustom ( NULL , 0 ,SFX,
                        PairName, StdDev.MA. Period , StdDev.MA.Shift, 
                        StdDev.MA.Method, StdDev.MA.Price, MA.Fast. Period , 
                        MA.Fast.Method, MA.Fast.Shift, CheckOncePerBar,
                                SFX_STDMA, 0 )
Hangi daha sonra kapsüllenmelidir.
 double getSFX( int eBuf, int iBar = 0 , int eTF=0){ 
   return ( iCustom ( NULL , eTF ,SFX,
                      PairName, StdDev.MA. Period , StdDev.MA.Shift, 
                      StdDev.MA.Method, StdDev.MA.Price, MA.Fast. Period , 
                      MA.Fast.Method, MA.Fast.Shift, CheckOncePerBar,
                   eBuf, iBar) ); 
}
:
double      STDBuffer = getSFX(SFX_STD, 0 );
double      stddevma  = getSFX(SFX_STDMA, 0 );
:
 
RaptorUK :

iCustom, Gösterge arabelleklerinize erişmenizi sağlar. . . bu kadar basit.

Örneğin, 2 Göstergeye dayalı bir stratejisi olan bir EA yazıyorsunuz, Gösterge kodunu EA'ya oluşturabilirsiniz, bu mümkündür, ancak Gösterge arabellekleri EA'larda çalışmadığından biraz dahil olur, kullanmanız gerekir diziler ve bunları "seri olarak" bir şekilde ele alır. . . alternatif, Göstergelerin çalışmasını sağlamak ve arabelleklerine EA'dan erişmektir. . . iCustom bunu kolaylaştırır. 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. iCustom çağrısında, Göstergeyi uygun şekilde ayarlamak için gereken harici değişkenleri de iletebilir.

Sevgili RaptorUK (ve yardımcı olabilecek diğer kişiler),


Alıntılanan gönderide, bir EA'da özel gösterge değerlerini kullanmanın iki yolunu açıklıyorsunuz. Birincisi, zaten farkında olduğum iCustom ile. İkincisi, gerçekten daha fazla şey öğrenmek istediğim bir konu çünkü özel göstergelerin kodunu ana göstergenin gövdesine içselleştirmeyi daha önce denedim ama başarılı olamadım. Görüyorsunuz, bir göstergeyi bir fonksiyona dönüştürdüğümde ve en güncel değerini (0 öğesindeki değer) döndürmesine izin verdiğimde, hesaplanan değerin kendisi yerine her zaman bir çift değişken için EMPTY_VALUE alıyorum. Vardiyayı en son değer olan 0'a ayarlayarak iCustom işlevini kullanmayı denedim. Bunu yaptığımda terminal, uzmanlar sekmesindeki STACK OVERFLOW hatasıyla birlikte 0 döndürerek başlar. İkinci tikte bir değer döndürür, ancak yazdırılan her bir çift [0] değerinden sonra başka bir STACK OVERFLOW hatası verir, bu sürekli tekrar eder. iCustom, ilk başlatmada (ve yalnızca doğru değerleri vermeye başladıktan sonra) 0 değerini ve STACK OVERFLOW değerini döndürdüğünden (ve yalnızca doğru değerleri vermeye başladıktan sonra), icustom'i EA'mda kullanamıyorum çünkü Start() her etkinleştirildiğinde farklı bir sembol için icustom'u çağırıyor ve birden çok çağrı yapıyor Bunun için özel göstergeler. Bu, EA'nın çökmesine neden olur. icustom'in en son değeri [0] döndürmesini istediğimde neden bir STACK OVERFLOW hatası aldığımı anlamıyorum ama kesinlikle bilmek isterim. Ancak çağrılan tüm göstergelerin kodunu ana gösterge içinde işlevlere dönüştürerek içselleştirmeyi tercih ediyorum. Dizileri kullanmak ve onları "seri olarak" işlemekle ilgili bir şey söylediniz. Lütfen bunu detaylandırabilir misiniz?

Klasik ADX.mq4 göstergesinin bir mq4 dosyasını ekledim. ADX değeri içinde iki kez yazdırılır. Bir kez Icustom tarafından ve ikinci olarak ADX içinde bir işleve dönüştürülmüş ADX koduyla. Icustom(ADX) bir değer döndürür, ancak ADX(symbol,timeframe) döndürmez. 247456457457'nin aynı EMPTY_VALUE değerini veya bir şeyi tekrar tekrar döndürmeye devam ediyor. Lütfen bunun neden olduğunu ve bunu hem EA şablonunda hem de mq4 özel gösterge dosyasında nasıl düzeltebileceğimi açıklayın.


Saygılarımla ve şimdiden teşekkürler


Not: dosya ekle çalışmıyor gibi görünüyor. Ancak, CallicustomvsFunction örnek göstergesini ADX özel göstergesi olarak http://www.forexfactory.com/showthre...37#post8569537 adresinden indirebilirsiniz (benim adım orada Codix)

Dosyalar:
 
  1. çift gönderi yapmayın
  2. Diğer konuları ele geçirmeyin; Sorularınız iCustom'u nasıl kullanacağınızla ilgili değil.
 

Yukarıdaki gönderilerde ( https://www.mql5.com/en/forum/138577/page3#627521 ve https://www.mql5.com/en/forum/138577/page3#797401 ) nokta ve kelime kullandım ayırıcılar.

Buna 3 Şubat 20'den beri izin verilmiyor 14 (Yapı 600) Alt çizgi veya deve kılıfı kullanın.

 
whroeder1 :

Bir alt çizgi veya deve kılıfı kullanın.

Deve davası dendiğini hiç bilmiyordum. Teşekkürler!