Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 614

 
newnek :

Merhaba! Söyle bana, lütfen, standart kitaplığın sinyalinde Parameter=Ka,int,21 parametresinin gerekli olmadığını

Optimizasyon işlemi sırasında tip numaralandırmasından seçildi

Ancak , Expert Advisor oluşturulurken sinyal seçimden kaybolduğunda, ancak normal olarak derlendiğinde, sonuç çıkarmak zordur - yanlış olan ......, kodla ilgili yardım, zaten bir uygulama var mıydı?

ps , her seferinde son EA'da int'yi intType olarak değiştirmelisiniz

Tam sinyal modülü dosyasını ve kod satırını belirtin...
 
Karputov Vladimir :
Tam sinyal modülü dosyasını ve kod satırını belirtin...

örneğin, üst SignalRVI.mqh kodunun bir kısmı buradadır. Bu durumda, int tipini intType olarak değiştirdiğimde sinyal seçiminden kayboluyor.

Kapsamla değilse, #include <Libraries\myfunc.mqh> numaralandırmasıyla ayrı bir dosyaya koyun.
 //+------------------------------------------------------------------+
//|                                                    SignalRVI.mqh |
//|                   Copyright 2009-2013, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#include <Expert\ExpertSignal.mqh>
// wizard description start
//+------------------------------------------------------------------+
//| Description of the class                                         |
//| Title=----------------Signals of oscillator 'Relative Vigor Index'               |
//| Type=SignalAdvanced                                              |
//| Name=Relative Vigor Index                                        |
//| ShortName=RVI                                                    |
//| Class=CSignalRVI                                                 |
//| Page=signal_rvi                                                  |
//| Parameter=PeriodRVI,intType,15,Period of calculation                 |
//+------------------------------------------------------------------+
// wizard description end
//+------------------------------------------------------------------+
//| Class CSignalRVI.                                                |
//| Purpose: Class of generator of trade signals based on            |
//|          the 'Relative Vigor Index' oscillator.                  |
//| Is derived from the CExpertSignal class.                         |
//+------------------------------------------------------------------+
enum intType
  {
   p0 = 15 , 
   p1 = 21 , 
   p2 = 29 
}
;
class CSignalRVI : public CExpertSignal
  {
protected :
   CiRVI             m_rvi;             // object-oscillator
   //--- adjusted parameters
   intType               m_periodRVI;       // the "period of calculation" parameter of the oscillator
   //--- "weights" of market models (0-100)
   int                m_pattern_0;       // model 0 "the oscillator has required direction"
   int                m_pattern_1;       // model 1 "crossing of main and signal line"

public :
                     CSignalRVI( void );
                    ~CSignalRVI( void );
   //--- methods of setting adjustable parameters
   void               PeriodRVI(intType value )            { m_periodRVI= value ;                 }
   //--- methods of adjusting "weights" of market models
   void               Pattern_0( int value )            { m_pattern_0= value ;                 }
   void               Pattern_1( int value )            { m_pattern_1= value ;                 }
   //--- method of verification of settings
   virtual bool       ValidationSettings( void );
   //--- method of creating the indicator and timeseries
   virtual bool       InitIndicators(CIndicators *indicators);
   //--- methods of checking if the market models are formed
   virtual int        LongCondition( void );
   virtual int        ShortCondition( void );

protected :
   //--- method of initialization of the oscillator
   bool               InitRVI(CIndicators *indicators);
   //--- methods of getting data
   double             Main( int ind)                   { return (m_rvi.Main(ind));           }
   double             DiffMain( int ind)               { return (Main(ind)-Main(ind+ 1 ));     }
   double             Signal( int ind)                 { return (m_rvi.Signal(ind));         }
   double             DiffSignal( int ind)             { return (Signal(ind)-Signal(ind+ 1 )); }
   double             DiffMainSignal( int ind)         { return (Main(ind)-Signal(ind));     }
  };
//+------------------------------------------------------------------+
//| Constructor                                                      |
//+------------------------------------------------------------------+
CSignalRVI::CSignalRVI( void ) : m_periodRVI( 15 ),
                               m_pattern_0( 60 ),
                               m_pattern_1( 100 )
  {
  }
 
newnek :

Merhaba! Söyle bana, lütfen, standart kitaplığın sinyalinde Parameter=Ka,int,21 parametresinin gerekli olmadığını

Optimizasyon işlemi sırasında tip numaralandırmasından seçildi

Ancak, Expert Advisor oluşturulurken sinyal seçimden kaybolduğunda, ancak normal olarak derlendiğinde, sonuç çıkarmak zordur - yanlış olan ......, kodla ilgili yardım, zaten bir uygulama var mıydı?

ps, her seferinde son EA'da int'yi intType olarak değiştirmelisiniz

Hiçbir şeyin değiştirilmesi gerekmez - sadece "Göreceli Güç Endeksi" göstergesinin sinyal modülüne dayalı bir Uzman Danışman oluşturun, ardından strateji test cihazında, "Ayarlar" sekmesinde, optimizasyonlardan birini seçin, "Parametreler"e gidin sekmesine gidin ve "Göreceli Güç" parametresi İndeks(10) Hesaplama dönemi" değerleri için aralığı ve değerleri ayarlayın:

RVI

Ancak 15-29 aralığından yalnızca üç değeri kullanmak istediğiniz için OnInit() içinde bir test koşulu yazmanız gerekir :

 //+------------------------------------------------------------------+
//| Initialization function of the expert                            |
//+------------------------------------------------------------------+
int OnInit ()
  {
   if (Signal_RVI_PeriodRVI!= 15 && Signal_RVI_PeriodRVI!= 21 && Signal_RVI_PeriodRVI!= 29 )
       return ( INIT_PARAMETERS_INCORRECT );
//--- Initializing expert

Optimizasyonu başlattıktan sonra, test cihazının yalnızca 15, 21 ve 29 parametreleri için çalıştığı görülebilir:

seçici optimizasyon

 
Karputov Vladimir :

Hiçbir şeyin değiştirilmesi gerekmez - sadece "Göreceli Güç Endeksi" göstergesinin sinyal modülüne dayalı bir Uzman Danışman oluşturun, ardından strateji test cihazında, "Ayarlar" sekmesinde, optimizasyonlardan birini seçin, "Parametreler"e gidin sekmesine gidin ve "Göreceli Güç" parametresi İndeks(10) Hesaplama dönemi" değerleri için aralığı ve değerleri ayarlayın:


Ancak 15-29 aralığından yalnızca üç değeri kullanmak istediğiniz için OnInit() içinde bir test koşulu yazmanız gerekir :

Optimizasyonu başlattıktan sonra, test cihazının yalnızca 15, 21 ve 29 parametreleri için çalıştığı görülebilir:

Teşekkür ederim, fikrinizi anladım, çok ilginç, ancak boşuna bir sürü adım olacak (muhtemelen hiçbir zaman boşa gitmeyecek olsa da). Oluşturulan Expert Advisor'da numaralandırma türünü manuel olarak değiştirmeyi başardım. Daha da otomatikleştirmek istiyorum.
 
newnek :
Teşekkür ederim, fikrinizi anladım, çok ilginç, ancak boşuna bir sürü adım olacak (muhtemelen hiçbir zaman boşa gitmeyecek olsa da). Oluşturulan Expert Advisor'da numaralandırma türünü manuel olarak değiştirmeyi başardım. Daha da otomatikleştirmek istiyorum.
Boş adımlar olacaktır - ancak zaman almazlar, çünkü koşul eşleşmezse OnInit() çıkış yapacak ve bir sonraki optimizasyon adımı hemen başlayacaktır.
 

İyi günler... C++ programcısı kendisi. Bu yüzden son zamanlarda kendimi bu alanda denemeye karar verdim... Danışman veya uzman yazmak istiyorum, fark etmez, bir strateji buldum, MT4 platformu... Neyse, öyle bir sorunla karşılaştım ki, Danışmanımda MACD kullanıyorum.... Daha kısa yazacağım...

Örneğin, OnTick'te yeni bir EA şablonu oluşturuyorum ve x=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0); ekliyorum. ve diyelim ki başka bir şey yok... Derliyorum, test ediyorum, her şey yolunda, testin sonunda, belirtilen parametrelerle macd grafiği görüntüleniyor, her şey yolunda.

İkinci seçenek, OnTick'te yeni bir Uzman Danışman şablonu oluşturmak, bir üçüncü taraf göstergesi RSICur=iCustom(NULL,0,"My_Induk",14,1,0,21,1,65,35,"DodgerBlue" eklemek, "Eflatun",50,50, "Kırmızı", "Yeşil",0,0); Derliyorum, test ediyorum, her şey yolunda, AMA !!! test bittikten sonra veya test iptal edildikten sonra bu göstergelerin bin penceresinden, her tikte yeni bir hindi oluşturulduğunu anlıyorum... neden anlamıyorum, çünkü aynı standart MACD doğuyor bir kez ve hepsi bu...

Standart olmayan başka bir göstergeyle, aynı problemle sorunu açıklığa kavuşturan var mı?

not bu benim ilk mesajım... Lütfen fotoğrafı spoller'ın altına nasıl gizleyeceğimi bulamadığım için beni azarlama.

ekran
 

Bununla neyin bağlantılı olduğunu bilmiyorum, ama bir çıkış yolu buldum ...

RSICur=iCustom(NULL,0,"My_Induk",14,1,0,21,1,65,35,"DodgerBlue","Macenta",50,50,"Kırmızı","Yeşil",0,0) ; - Her tikte bir grafik çizer, yani. binlerce grafik

RSICur=iCustom(NULL,0,"My_Induk",0,0); - Tamam, bir grafik, her tik sadece RSICur değişkenindeki veriler güncelleniyor... Mantığın ne olduğunu anlamıyorum, prensipte bu benim için yeterli, Ama neden sadece normal çalıştığını anlamak istiyorum varsayılan ayarlarla...

 
Игорь Марин :

İyi günler... C++ programcısı kendisi. Bu yüzden son zamanlarda kendimi bu alanda denemeye karar verdim... Danışman veya uzman yazmak istiyorum, fark etmez, bir strateji buldum, MT4 platformu... Neyse, öyle bir sorunla karşılaştım ki, Danışmanımda MACD kullanıyorum.... Daha kısa yazacağım...

Örneğin, OnTick'te yeni bir EA şablonu oluşturuyorum ve x=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0); ekliyorum. ve diyelim ki başka bir şey yok... Derliyorum, test ediyorum, her şey yolunda, testin sonunda, belirtilen parametrelerle macd grafiği görüntüleniyor, her şey yolunda.

İkinci seçenek, OnTick'te yeni bir Uzman Danışman şablonu oluşturmak, bir üçüncü taraf göstergesi RSICur=iCustom(NULL,0,"My_Induk",14,1,0,21,1,65,35,"DodgerBlue" eklemek, "Eflatun",50,50, "Kırmızı", "Yeşil",0,0); Derliyorum, test ediyorum, her şey yolunda, AMA !!! test bittikten sonra veya test iptal edildikten sonra bu göstergelerin bin penceresinden, her tikte yeni bir hindi oluşturulduğunu anlıyorum... neden anlamıyorum, çünkü aynı standart MACD doğuyor bir kez ve bu kadar...

Standart olmayan başka bir göstergeyle, aynı problemle sorunu açıklığa kavuşturan var mı?

not bu benim ilk mesajım... Lütfen fotoğrafı spoller'ın altına nasıl gizleyeceğimi bulamadığım için beni azarlama.

Fotoğrafta her şey yolunda, burada saklamıyorlar.

Bu My_Induk'u sen mi yazdın yoksa bir yerde mi buldun? Anladığım kadarıyla, eğri göstergesi. Kaynaklar varsa, onları ortaya koyun - sorunun ne olduğunu göreceğiz.

 
Игорь Марин :

Neyle bağlantılı olduğunu bilmiyorum, ama bir çıkış yolu buldum ...

RSICur=iCustom(NULL,0,"My_Induk",14,1,0,21,1,65,35,"DodgerBlue","Macenta",50,50,"Kırmızı","Yeşil",0,0) ; - Her tikte bir grafik çizer, yani. binlerce çizelge

RSICur=iCustom(NULL,0,"My_Induk",0,0); - Tamam, bir grafik, her tik sadece RSICur değişkenindeki veriler güncelleniyor... Mantığın ne olduğunu anlamıyorum, prensipte bu benim için yeterli, Ama neden sadece normal çalıştığını anlamak istiyorum varsayılan ayarlarla...

Bu, gösterge parametrelerini doğru bir şekilde geçmediğinizde gerçekleşir. Dikkatlice bakın ve göstergenin parametrelerini ve Expert Advisor'da SİZİN yazdıklarınızı karşılaştırın.
 
Alexey Volchanskiy :

Fotoğrafta her şey yolunda, burada saklamıyorlar.

Bunu My_Induk'u sen mi yazdın yoksa bir yerde mi buldun? Anladığım kadarıyla, eğri göstergesi. Kaynaklar varsa, onları ortaya koyun - sorunun ne olduğunu göreceğiz.

Vladislav Andruschenko :
Bu, gösterge parametrelerini doğru bir şekilde geçmediğinizde gerçekleşir. Dikkatlice bakın ve göstergenin parametrelerini ve Expert Advisor'da SİZİN yazdıklarınızı karşılaştırın.

Teşekkür ederim çözdüm... Bütün gün deldim anlayamadım... Programcının kendisi, ama oluyor... Hata sözdizimseldi, EA'dan renk parametrelerini nedense tırnak içinde gönderdim. ..

iCustom(NULL,0,"My_Induk",14,1,0,21,1,65,35,"DodgerBlue","Macenta",50,50,"Kırmızı","Yeşil",0,0);

bu yüzden bu söve oldu ...) Teşekkürler!!! Elbette daha fazla soru olacak!