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

 
honest_knave : Deve davası dendiğini hiç bilmiyordum. Teşekkürler!
Moderatör bir WikiPedia bağlantısı olduğu için önceki Gönderimi silmiş gibi görünüyor, bu yüzden "Camel Case" hakkında bazı geçmiş ve ayrıntılar için WikiPedia'da (veya Google'da) bir arama yapın.
 
Fernando Carreiro :
Moderatör bir WikiPedia bağlantısı olduğu için önceki Gönderimi silmiş gibi görünüyor, bu yüzden "Camel Case" hakkında bazı geçmiş ve ayrıntılar için WikiPedia'da (veya Google'da) bir arama yapın.
Gönderiniz çift olduğu için kaldırılmıştır . Aynı link zaten paylaşılmış.
 
#23'ten devam ederek ve #26 fonksiyonunu içine alarak, şimdi hem MT4 hem de MT5 üzerinde çalışan bir yapı gösteriyorum. (Yapı sonrası 600 için, değişken adlarındaki geçersiz noktaları ( #29 ) değiştirdim ve int s'yi standart numaralandırmalara uygun hale getirdim.)
Derlenmedi, test edilmedi.
 struct SFX{                            // SFX indicator at #1
   #define SFX_NAME_PATH   "SFX"        // Indicator filename without extension,
                                       // including blanks if any.
   enum SFXbuffer{SFX_STD, SFX_STDMA};
   string                   PairName;
   ENUM_TIMEFRAMES          tf;
   int                      StdDev_MA_Period;
   int                      StdDev_MA_Shift;
   ENUM_MA_METHOD           StdDev_MA_Method;
   ENUM_APPLIED_PRICE       StdDev_MA_Price;
   int                      MA_Fast_Period;
   ENUM_MA_METHOD           MA_Fast_Method;
   int                      MA_Fast_Shift;
   #define CheckOncePerBar true ;
   void SFX()      : PairName( _Symbol ),            tf( PERIOD_CURRENT ),
                     StdDev_MA_Period( 12 ),         StdDev_MA_Shift( 0 ),
                     StdDev_MA_Method( MODE_SMA ),   StdDev_MA_Price( PRICE_CLOSE ),
                     MA_Fast_Period( 3 ),            MA_Fast_Method( MODE_SMMA ),
#ifndef __MQL5__
                     MA_Fast_Shift( 0 ){}
   double get(SFXbuffer buf, int iBar = 0 ){
       return iCustom (PairName, tf, SFX_NAME_PATH,
                     StdDev_MA_Period,             StdDev_MA_Shift,
                     StdDev_MA_Method,             StdDev_MA_Price,
                     MA_Fast_Period,               MA_Fast_Method,
                     MA_Fast_Shift,                CheckOncePerBar,
                     buf, iBar);
   }   // get
#else // MQL5
                     MA_Fast_Shift( 0 ),             Handle( INVALID_HANDLE ){}
   void ~SFX(){   if (Handle != INVALID_HANDLE ) IndicatorRelease (Handle);   }
   double get(SFXbuffer buf, int iBar = 0 ){
       if (Handle == INVALID_HANDLE ){
         Handle = iCustom (PairName, tf, SFX_NAME_PATH,
                     StdDev_MA_Period,             StdDev_MA_Shift,
                     StdDev_MA_Method,             StdDev_MA_Price,
                     MA_Fast_Period,               MA_Fast_Method,
                     MA_Fast_Shift,                CheckOncePerBar);
         if (Handle == INVALID_HANDLE ){
             PrintFormat ( "%s: iCustom(%s) Failed: %i" ,
                         __FUNCTION__ , SFX_NAME_PATH, _LastError );
             return 0 ;
         }
      }
       double  value[ 1 ]; CopyBuffer (Handle, buf, iBar, 1 , value);
       return   value[ 0 ];
   }   // get
 Private:
   int                   Handle;     // MT5 only
#endif   // __MQL5__
}; // SFX
///////////////////////////////////////////////////////////////////////////////
SFX   SFXindicator;
// SFXindicator.StdDev_MA_Period = ...;   // modification of default parameters.
:
double      STDBuffer = SFXindicator.get(SFX_STD,   0 );   // example calls
double      stddevma  = SFXindicator.get(SFX_STDMA, 0 );
Derlenmedi, test edilmedi.
 

Merhaba, iCustom hakkında hızlı (ve ağrısız, umarım) bir sorum var: Diyelim ki Ind_A, Ind_B ve Ind_C adında 3 göstergem ve EA adında bir Uzman Danışmanım var.

EA tüm 3 göstergeyi icustom kullanarak çağırır, argümanlarını iletir ve ilgili arabelleklerini indeksleyerek sonuçları alır.

3 göstergemi EURUSD grafiğine ekliyorum ve EA'mı çalıştırıyorum; hadi Ind_A göstergesine odaklanalım, o gösterge olarak çalışıyor ama aynı zamanda EA tarafından yürütülüyor: örnek aynı mı yoksa çalışan iki ind_A örneğimiz mi var? (Yani, bir örnek kendi başına çalışır ve diğer örnek EA içinde yaşar).

böyle bir durumda, her örneğin kendi arabelleği var mı? veya arabellek, göstergenin tüm örnekleri arasında paylaşılıyor mu?

Çok teşekkürler!

 

Bu başlığı tekrar uyandırdığım için üzgünüm. Ama sorumun bu konuya ait olduğunu düşündüm.

Özel bir gösterge trend hedefinden 2 arabelleğe erişmeye çalışıyorum, göstergenin bir girişi = 60 ve iki arabellek Band UP ve Band LO

kullanarak

 double Value1 = iCustom ( Symbol (), 0 ,"TrendTarget.ex4", 60 , 0 , 1 , 0 );



double Value2 = iCustom ( Symbol (), 0 ,"TrendTarget.ex4", 60 , 0 , 0 , 1 ); double Value1 = iCustom ( Symbol (), 0 ,"TrendTarget.ex4", 60 , 0 , 1 , 0 );



Comment (" iCustom returned v1= "+Value1+ " and value2= ",Value2);

bu iCustom için parametreleri ayarlama yöntemim doğru mu? çünkü veri izleme panelindeki tamponlara tam olarak uymayan Band Up ve Band LO değerlerini alamadığım için lütfen ekteki resmi kontrol edin. Yalnızca 2 veya 3 ilk ondalık basamak veya 3e sağda, ancak bir döviz teklifi için 4 basamağın tümü doğru olmalıdır, doğru mu?

MQL5'teki kodlayıcı ve deneyimli kullanıcıların bu sorunu hızla düzeltmeme yardımcı olabileceğini umuyorum? Şimdiden teşekkürler

-------------------------------------------------- -------------------------------------------------- -
Göstergenizin ne olduğuna göre 5 giriş ve 4 tampon var,

 double Value1 = iCustom ( Symbol (), 0 , "indicator" ,a1,a2,a3,a4,a5, 1 , 0 , 0 , 0 );

double Value2 = iCustom ( Symbol (), 0 , "indicator" ,a1,a2,a3,a4,a5, 0 , 2 , 0 , 0 );

double Value3 = iCustom ( Symbol (), 0 , "indicator" ,a1,a2,a3,a4,a5, 0 , 0 , 3 , 0 );

double Value4 = iCustom ( Symbol (), 0 , "indicator" ,a1,a2,a3,a4,a5, 0 , 0 , 0 , 4 );


Yukarıdaki gibi mi?

 
ntk2017 : Bu konuyu tekrar uyandırdığım için üzgünüm. Ancak

Lütfen (orijinal) gönderinizi düzenleyin ve KOD düğmesini (Alt-S) kullanın! (Büyük miktarda kod için ekleyin. )
Forumun genel kuralları ve en iyi uygulamaları. - Genel - MQL5 programlama forumu
Mesaj Editörü

 
ntk2017 : Göstergenizin ne olduğuna göre 5 giriş ve 4 arabellek var,
 double Value1 = iCustom ( Symbol (), 0 , "indicator" ,a1,a2,a3,a4,a5, 1 , 0 , 0 , 0 );
double Value2 = iCustom ( Symbol (), 0 , "indicator" ,a1,a2,a3,a4,a5, 0 , 2 , 0 , 0 );
double Value3 = iCustom ( Symbol (), 0 , "indicator" ,a1,a2,a3,a4,a5, 0 , 0 , 3 , 0 );
double Value4 = iCustom ( Symbol (), 0 , "indicator" ,a1,a2,a3,a4,a5, 0 , 0 , 0 , 4 );

Yukarıdaki gibi mi?

Kesinlikle hayır.

 iCustom ( Symbol (), 0 , "indicator" , a 1,a2 ,a3,a4,a5 , BufferIndex, BarIndex );
 
William Roeder :

Kesinlikle hayır.

böyle kullanmalıyım
 double value1 = iCustom ( Symbol (), 0 , "indicator" , a 1,a2,a3,a4,a5 ,1,0,0,0, 0 ); //with BarIndex=0, when only check on close or 1= when check on every tick;
double value2 = iCustom ( Symbol (), 0 , "indicator" , a 1,a2,a3,a4,a5 ,0,1,0,0, 0 );
double value3 = iCustom( Symbol (), 0 , "indicator" , a 1,a2,a3,a4,a5 ,0,0,1,0, 0 );
double value4 = iCustom( Symbol (), 0 , "indicator" , a 1,a2,a3,a4,a5 ,0,0,0,1, 0 );

düzeltmeniz için teşekkür ederim az önce mql5'te "Programların Kombine Kullanımı" ( https://book.mql4.com/samples/shared ) örneğini buldum, sanırım kodlamadaki bu örnek ihtiyacım olan şey. O kısmı çalışacağım, eğer programlamamda bir sorunuz varsa, umarım daha istikrarlı ve daha fazla kâr elde etmem için bana yardımcı olursunuz.

Combined Use of Programs - Simple Programs in MQL4 - MQL4 Tutorial
Combined Use of Programs - Simple Programs in MQL4 - MQL4 Tutorial
  • book.mql4.com
It was said earlier that according to MQL4 rules trade functions cannot be used in custom indicators, that is why for automated trading Expert Advisors or scripts should be used. However, the resource-saving technology used for calculations in indicators (see Creation of Custom Indicators) is widely used when creating trading programs. In most...
 
William Roeder :

Kesinlikle hayır.

Kodum bu şekilde şimdi TrendTarget'ın 1, 2 arabelleklerini görüyorum (Ama yine de 4 hanenin tümü doğru değil!!!), TrendTarget'ı yeniden kontrol etmeyi sevdiğim için her çubukta BarsIndex değerini 1 olarak ayarladım

   double shortSma, longSma, ShortSL, ShortTP, LongSL, LongTP,Band_UP,Band_LO;

   double Value1,Value2 ;





   Value1 = iCustom ( Symbol (), 0 , "TrendTarget.ex4" , 60 , 1 , 1 );

   Value2 = iCustom ( Symbol (), 0 , "TrendTarget.ex4" , 60 , 2 , 1 );

   Band_UP = Value1;

   Band_LO = Value2;

   Comment ( " !!!!!!! ICUSTOM returned Value1= " +Value1+ " and value2= " ,Value2+ "\n" );

Ama hala problemim var. TrendTarget'ı bir filtre gibi kullanıyorum
 if (tik <= 5 && Ask>Band_UP) ///////////////ONLY can open SELL////////////////
        {
         ////////////////////// TP1 SL1 ///////////////////////////////////
         openOrder( Symbol (), OP_SELLSTOP,LotSize,sellPrice,sellPrice+SL1*point(), sellPrice-TP1*point(), "_Sell_1" ,MagicNumber, exp ,Crimson);
        }

       if (tik <= 5 && Bid<Band_LO)   ///////////////ONLY can open BUY////////////////

        {
         ////////////////////// TP1 SL1 ///////////////////////////////
         openOrder( Symbol (), OP_BUYSTOP,LotSize,buyPrice,buyPrice-SL1*point(), buyPrice+TP1*point(), "_Buy_1" ,MagicNumber, exp ,Navy);
        }
ancak çalıştırıldıktan sonra TrendTarget göstergesini ekliyorum ve EA'nın hala kanal arasında birçok işlem açtığını görüyorum!!!!!

Resimde, başladıktan sonra TrendTarget'ı ekliyorum. TrendTarget ( parametre TF=60) içeren bir test şablonu oluşturduğumda, kanal yalnızca ilk X çubuklarını gösteriyor, o zaman sadece fiyat eğrisini görebiliyorum, neden böyle?
Siparişlerin açıldığı yerleri görsel olarak kontrol etmek için Trend Hedefi göstergesini nasıl kolayca ekleyebilirim?

Geçmişte value_UP kodunda kullanmayı seviyorum, yakın kullanımına benzer: dünden önce Kapat[2], dün Kapat[1], şu anki kapanış Kapat[0]? Mümkün mü?
Dosyalar:
 
Hala scap testi EA ile ilgili sorunum var:

1. sorun:
TrendTarget'ın 1, 2 arabelleklerini görebiliyorum (Ama yine de 4 basamağın tümü doğru değil!!!), önemli mi? EURUSD için 1.0907 fiyat değeri TrendTarget üst kanalı veya alt kanalı ile karşılaştırıldığında, TrendTarget'ın bu değerlerinin tam olarak en az 4 ondalık basamak olması gerektiğini düşündüm.
TrendTarget'ı yeniden kontrol etmeyi sevdiğim için her çubuktaki BarsIndex değerini 1'e ayarladım

2. sorun:
Ama hala problemim var. TrendTarget'ı bir filtre gibi kullanıyorum.

ancak çalıştırıldıktan sonra TrendTarget göstergesini ekliyorum ve ardından EA'nın hala kanal arasında birçok işlem açtığını görüyorum!!!!!

3. sorun:
Ekteki resimde , başladıktan sonra TrendTarget'ı eklemem gerekiyor. TrendTarget'ı (TF=60 parametresi) içeren bir test şablonu oluşturduğumda, TrendTarget kanalı yalnızca ilk X çubukları, belki 100 için gösteriliyor, o zaman sadece fiyat eğrisini görebiliyorum, neden?

4. sorun:
Siparişlerin açıldığı çalışma zamanı görsel kontrolü için Trend Hedefi göstergesini nasıl kolayca ekleyebilirim?

5. sorun:
Ben kodda geçmişte değer_UP'yi kullanmayı seviyorum, kapanış kullanımına benzer şekilde: dünden önce Kapat[2], dün Kapat[1], şu anki kapanış Kapat[0]? Mümkün mü? Birkaç çubuk kırılmasından daha uzun olabileceğinden, bu durumda stratejiyi koparma ticaretine çevirmeyi seviyorum, bunun yerine sadece bir teori, kodlamada nasıl yapılacağını hala bilmiyorum

6. sorun:
Koşul'a dokunulduğunda, örneğin sadece 1 emir açmayı seviyorum, çünkü burada fiyat üst kanalın birçok bar üzerinde kalıyor, bu yüzden koşul her zaman doğru, hesabım bitene kadar açık! Sadece bir sipariş göndermek nasıl yapılır, ardından koşulun değişmesini bekleyin.?

7. sorun:
Trend hedefinin ne olduğunu bilen var mı, bana her iki tarafa +/- 1xATR(14) eklenmiş bir trend çizgisi veya MA(x) fiyatı gibi görünüyor. Birisi bunun için kod var mı?