Kimin stratejiye ihtiyacı var? Çok ve ücretsiz - sayfa 61

 
Stellarator >> :

Arkadaşlar arabayı yıkamak için aradılar...

İyi ...

kriz diyorlar

 

Tüm sorunları çözene kadar tek tek karşılaştırmaya başlamamız gerekiyor.

Burada FSB Hızlandırıcı Osilatörünü MT iAC (..) ile karşılaştırdım:



Bu nasıl yapılır:

1. FSB'nin forex oranlarını MT'de kullanılan güncel oranlarla güncelleyin. (MT Ctrl+S'den ve xxxxxx.csv dosyasını FSB ./Data dizinine kaydedin. Verileriniz farklı bir klasördeyse, işaret etmek için Market -> FSB'den Veri Dizini'ni kullanın.)

2. Indicator_Values.mq4 komut dosyasını istenen göstergeyi yazdırın. (Script önceki forumun sayfasındadır.)

3. Bu göstergeyi FSB'de ayarlayın. (Aynı parametreleri kullandığınızdan emin olun.) FSB göstergesini Dışa Aktar -> Göstergeler işleviyle dışa aktarın.

4. Herhangi bir farklılık görürseniz lütfen bildiriniz.


İyi şanslar!


------------

Düzenlemek:

Lütfen en son FSB v2.8.3.5 Beta sürümünü kullanın

 
Miroslav_Popov >> :

Klasik formül: Momentum(n) = Kapat - Kapat(n)

FSB'nin kullandığı formül budur.

MT kullanır: Momentum(n) = 100 * Kapat / Kapat(n)

Bunu biliyorum, gösterge parametrelerini kastetmiştim. yumuşatma dönemi. yumuşatma yöntemi. Sonuçta biz sormuyoruz. Varsayılan olarak hangi parametreler alınır: 0.0?

 

merhaba zfs,


Varsayılan parametreleri Gösterge Parametreleri iletişim penceresinde görebilirsiniz. ( Varsayılana basın)



"Ek düzleştirme" döneminin = 0 olduğuna dikkat edin. Bu, hiçbir düzleştirme uygulanmadığı anlamına gelir.


Varsayılan değerleri görebileceğiniz ikinci yer kaynak kodundadır:


         /// <summary>
         /// Sets the default parameters for the designated slot type
         /// </summary>
         public Momentum ( SlotTypes slotType )
         {
            sIndicatorName   = "Momentum" ;
            parameters       = new IndicatorParam ( ) ;
            component       = new IndicatorComp [ ] { } ;
            bSeparatedChart = true ;
            bIsCalculated   = false ;

             // The indicator name
            parameters . IndicatorName = sIndicatorName ;

             // The slot type
            parameters . SlotType = slotType ;

             // The ComboBox parameters
            parameters . ListParam [ 0 ] . Caption   = "Logic" ;
            parameters . ListParam [ 0 ] . ItemList = new string [ ]
             {
                 "The Momentum rises" ,
                 "The Momentum falls" ,
                 "The Momentum is higher than the Level line" ,
                 "The Momentum is lower than the Level line" ,
                 "The Momentum crosses the Level line upward" ,
                 "The Momentum crosses the Level line downward" ,
                 "The Momentum changes its direction upward" ,
                 "The Momentum changes its direction downward"
             } ;
            parameters . ListParam [ 0 ] . Index     = 0 ;
            parameters . ListParam [ 0 ] . Text     = parameters . ListParam [ 0 ] . ItemList [ parameters . ListParam [ 0 ] . Index ] ;
            parameters . ListParam [ 0 ] . Enabled   = true ;
            parameters . ListParam [ 0 ] . ToolTip   = "Logic of application of the indicator." ;

            parameters . ListParam [ 1 ] . Caption   = "Smoothing method" ;
            parameters . ListParam [ 1 ] . ItemList = Enum . GetNames ( typeof ( MAMethod ) ) ;
            parameters . ListParam [ 1 ] . Index     = 0 ;
            parameters . ListParam [ 1 ] . Text     = parameters . ListParam [ 1 ] . ItemList [ parameters . ListParam [ 1 ] . Index ] ;
            parameters . ListParam [ 1 ] . Enabled   = true ;
            parameters . ListParam [ 1 ] . ToolTip   = "The Moving Average method used for smoothing the Momentum value." ;

            parameters . ListParam [ 2 ] . Caption   = "Base price" ;
            parameters . ListParam [ 2 ] . ItemList = Enum . GetNames ( typeof ( BasePrice ) ) ;
            parameters . ListParam [ 2 ] . Index     = 3 ;
            parameters . ListParam [ 2 ] . Text     = parameters . ListParam [ 2 ] . ItemList [ parameters . ListParam [ 2 ] . Index ] ;
            parameters . ListParam [ 2 ] . Enabled   = true ;
            parameters . ListParam [ 2 ] . ToolTip   = "The price the Momentum is based on." ;

             // The NumericUpDown parameters
            parameters . NumParam [ 0 ] . Caption = "Period" ;  <----- Parameter Name
            parameters . NumParam [ 0 ] . Value   = 10 ;        <----- Default Value
            parameters . NumParam [ 0 ] . Min     = 1 ;
            parameters . NumParam [ 0 ] . Max     = 200 ;
            parameters . NumParam [ 0 ] . Enabled = true ;
            parameters . NumParam [ 0 ] . ToolTip = "The period of Momentum." ;
 
            parameters . NumParam [ 1 ] . Caption = "Additional smoothing" ; <----- Parameter Name 
            parameters . NumParam [ 1 ] . Value   = 0 ;        <----- Default Value
            parameters . NumParam [ 1 ] . Min     = 0 ;
            parameters . NumParam [ 1 ] . Max     = 200 ;
            parameters . NumParam [ 1 ] . Enabled = true ;
            parameters . NumParam [ 1 ] . ToolTip = "The period of additional smoothing." ;

            parameters . NumParam [ 2 ] . Caption = "Level" ;  <----- Parameter Name
            parameters . NumParam [ 2 ] . Value   = 0 ;        <----- Default Value
            parameters . NumParam [ 2 ] . Min     = - 100 ;
            parameters . NumParam [ 2 ] . Max     = 100 ;
            parameters . NumParam [ 2 ] . Point    = 4 ;
            parameters . NumParam [ 2 ] . Enabled = true ;
            parameters . NumParam [ 2 ] . ToolTip = "A critical level (for the appropriate logic)." ;

             // The CheckBox parameters
            parameters . CheckParam [ 0 ] . Caption = "Use previous bar value" ;
            parameters . CheckParam [ 0 ] . Checked = Data . Strategy . PrepareUsePrevBarValueCheckBox ( slotType ) ;
            parameters . CheckParam [ 0 ] . Enabled = true ;
            parameters . CheckParam [ 0 ] . ToolTip = "Use the indicator value from the previous bar." ;
         }
 
Miroslav_Popov >> :

merhaba zfs,

Prensip olarak, kusursuzluğunuzdan şüphe etmedim. Gerçek şu ki, tüm bunlara rağmen göstergelerin nihai değerleri benim için uyuşmuyor. Yoksa eşleşmediler mi? Ne yazık ki şimdi kontrol etmek için zaman yok.

 

zfs,

Stellarator'ın yardımıyla FSB'deki birçok sorunu düzelttim. Ayrıca FSB'nin varsayılan parametrelerini MT'de böyle olacak şekilde değiştirdim. Umarım farklılıkların çoğu zaten giderilmiştir.


Lütfen olası hataları bildirmekten çekinmeyin. Tüm geri bildirimler ve eleştiriler çok takdir edilmektedir.

 
Stellarator >> :

vazgeçirmek zorunda kaldı! Anahtar nüans, "Uzman Danışmanın bir yinelemesinin sınırı" dır. Yani - bu sınırlar dahilinde, gösterge BİR KEZ hesaplanır (ilk çağrıda)! %100 kesinlik ile beyan ederim. Diğer tüm aramalar onu hiç başlatmaz, ancak gerekli tamponlardan gerekli değerleri almanız yeterlidir. Değişmeyen giriş parametreleriyle %100 koşul (arabellek ve ofset hariç). Kural, bir sembol içindeki hesaplamalar için geçerlidir. Ancak, iCustom diğer TF'lere ve araçlara döndüğünde bile ilkenin devam ettiğini düşünüyorum.


Soru konu dışı, 0. çubukta, mevcut dakikadaki gösterge değeri için göstergeyi 240 kez çağıran bir Uzman Danışman yazarak kendimi biraz kaptırdım. Onlar. çıktıda her zaman ilk değere sahip olduğumuz ortaya çıkıyor? Lütfen onaylayın, aksi takdirde bu benim için bir haberdir.

 
zfs >> :

Soru konu dışı, 0. çubukta, mevcut dakikadaki gösterge değeri için göstergeyi 240 kez çağıran bir Uzman Danışman yazarak kendimi biraz kaptırdım. Onlar. çıktıda her zaman ilk değere sahip olduğumuz ortaya çıkıyor? Lütfen onaylayın, aksi takdirde bu benim için bir haberdir.

EA her yeni tıklamada yeniden başlar ve bu sırasıyla farklı bir yinelemedir ve gösterge değerleri farklı olacaktır.

 
rider >> :

EA her yeni tıklamada yeniden başlar ve bu sırasıyla farklı bir yinelemedir ve gösterge değerleri farklı olacaktır.

"Önceki bar değerini kullan" parametresini doğru kullanırsanız, göstergenin mevcut bar değerine ihtiyacınız olmaz.

Diyelim ki bir günlük grafikte bize MA(basit, 12, yakın) diyelim. Bu MA'yı doğru hesaplamak için 12 barlık kapanış fiyatlarına ihtiyacınız var.

Şimdi 3PM ise, mevcut "kapanış" fiyatı çubuğun gerçek kapanış fiyatı değildir. Gece 12'ye kadar değişecek. Bu nedenle, mevcut çubuk için MA kullanmak, gerçek kapanış fiyatını değil, geçici olanı içerir. Aynı zamanda geriye dönük test, tarihi çubukların gerçek (zaten sabit) kapanış fiyatını kullanır. Bu uygulama, geriye dönük test ile gerçek ticaret arasındaki farklılıkları getirecektir.


Daha da kötüsü:

Her iki MA'nın da Kapanış fiyatına dayandığı "Bir FastMA, bir SlowMA'nın üzerine çıkar" mantık kuralını görelim.

Gün boyunca piyasa hızla yükselirse, FastMa, bir satın alma sinyalini yükseltecek olan SlowMA'nın üzerine çıkabilir. Sinyali takip ederek satın alacaksınız. Anlaşmadan sonra piyasanın düşmesine ve çok daha düşük kapanmasına izin verin, bu FastMA'yı Yavaş olanın altına taşıyacaktır. Sorunu görüyor musunuz? Barın kapanmasından önce zaten satın aldınız. Bu stratejiyi daha sonra tekrar test ederseniz, bu çubukta böyle bir satın alma sinyali olmadığını göreceksiniz. Ve ne? Backtester'ı suçlayacaksınız, ancak sorun yanlış strateji mantığında.


Forex Strateji Oluşturucu, "Önceki çubuk değerini kullan" parametresini otomatik olarak ayarlayarak sizi bu tür mantıksal hatalardan korur. FSB, geriye dönük test için asla değişen (henüz sabitlenmemiş) göstergeler kullanmaz. Ve bu mantıkta, strateji bunu kullanmıyorsa, bir EA neden her tik için bir gösterge hesaplamak zorundadır. Çubuk başına bir hesaplama yeterlidir:

- gösterge Açık fiyat kullanıyorsa - hesaplama bar açılışında olmalıdır;

- gösterge Close, High, Low veya fiyatların herhangi bir kombinasyonunu kullanıyorsa - hesaplama bar kapanışında olmalıdır.

 

Herkese iyi akşamlar!


Hafta sonu bilgisayarsız kaldım :(. Ve bugün iş yüzünden yapacak bir şeyim yoktu... öyle bir şey...

Ama düşünmek için zaman vardı. Ve (umarım) - stratejik olarak belirlendi (göstergeler çerçevesinde).

Genel olarak bundan sonra göstergelerin iç yapısı benzer olacaktır (daha sonra, belki yarın anlatacağım). Dışarıda "çıkan" (parametreler) - FSB'ye mümkün olduğunca yakın. Onlar. sayıları, değerleri (ve sınırları) ve tanımladıkları işlevsellik - peki... neredeyse bire bir :). Mikro nüanslar devam ediyor, ancak bunu yol boyunca belirleyeceğiz.


Şimdiye kadar, çok kısaca (zaten uyuyacağım, yarın veya yarından sonraki gün burada olmayacağım, büyük ihtimalle iş için planlanmış birçok şey var) ("sevgilimiz" RSI örneğini kullanarak) : D):

1. Seçenekler:

 // -------- Indicator parameters
extern int      slotType = SLOT_TYPE_OPENFILTER ; // SLOT_TYPE_LC
extern int      indLogic = INDICATOR_RISES ;        // INDICATOR_RISES <= indLogic <= INDICATOR_CHANGES_DIR_DOWNWARD
extern int      maMethod = MA_METHOD_SMOOTHED ;    // MA_METHOD_SIMPLE <= maMethod <= MA_METHOD_SMOOTHED
extern int      basePrice = BASE_PRICE_CLOSE ;      // BASE_PRICE_OPEN <= basePrice <= BASE_PRICE_WEIGHTED
extern int      iPeriod   = 14 ;                    // 1 <= iPeriod <= 200
extern int      dLevel   = 30 ;                    // 0 <= dLevel <= 100
extern bool     iPrvs     = True ;                  // True / False




Sanırım her şey resimden aşağı yukarı net ve öyle. Zorluğa neden olabilecek tek şey: slotType , resp. değerleri (FSB'den farklı olabilir, ancak bu durumda bu temel bir nokta değildir):

 // Slot Types
#define  SLOT_TYPE_OPEN                   0  // Point of the Position
#define  SLOT_TYPE_CLOSE                  1  // Point of the Position
#define  SLOT_TYPE_OPENFILTER             2  // Logic Condition
#define  SLOT_TYPE_CLOSEFILTER            3  // Logic Condition

Peki, o zaman basit. Sayısal değerler olduğu gibi verilmiştir. ComboBox'lardaki değerler 0'dan (diziler gibi) numaralandırılmıştır, yani. hangisi hesap tarafından seçildi (0'dan başlayarak!) - sonra parametrelerdeki sayıyı ayarlarsınız.

Yumuşatma yöntemlerinin sayısal değerleri ve fiyat sabitleri MT'den FARKLI (Uzun bir süre düşündüm, ancak FSB ile uyumluluk uğruna klişelerden uzaklaşmaya karar verdim :)). Aslında tüm bunlar, daha sonra uzman boşluklarının (veya kullanıcıların kendilerinin yazdıkları) göstergeleri zorla değil kolayca "çekebilmesi" için yapıldı :) (FSB'de gördükleri soruldu ("ne görüyorum - ben " )). Kaba:

çift dRSI = iCustom(NULL, 0, "-FSB-RSI", 2, 0, 3, 3, 14, 30, 1 , 0, 0);

yukarıdaki örnek için.


2. Dönüş değerleri:

Her göstergedeki ilk iki gösterge tamponu, pozisyon açılış fiyatları (sırasıyla uzun/kısa) veya mantıksal koşullar (1.0 - evet / herhangi bir başka değer - hayır) için ayrılmıştır. Sırada, göstergelerin değerleri (birinin ilgisini çekiyorsa):


İlk iki tamponun içeriği, göstergenin mantığı ile belirlenir ( slotType ve indLogic ) (yani bir kez daha - fiyatlar veya 1/0 vardır (diğer değerler olabileceğinden, tam olarak "1" için kontrol etmenizi öneririm) sadece sıfır değil (genel durumda - gösterge için bir değer olmadığı için EMPTY_VALUE olabilir)).


Tüm göstergeler, IndicatorCounted() (orijinal koddaki ana değişiklik, genel olarak) dikkate alınarak optimize edilmiştir (genel durumda Miroslav, gösterge değerlerini gerçekten yeniden hesaplamanın gerekli olacağı konusunda haklıdır ​bar başına bir kez (yine genel durumda... ;))). Ancak doğru bir görsel gösterim için ve genel olarak (iyi ton) ... Genel olarak çok fazla yavaşlamamalıdır.


Grafik nesneler, renkli ve benzeri ("özellikle yetenekli") göstergeleri (gereksiz arabellekleri almamak için) çizmek için kullanılır. Kendim test ettim - oldukça iyi çalışıyor (görsel gösterimle, gösterge arabelleklerinden açıkça daha yavaş, ancak kritik değil ve iCustom çağrıldığında, grafik işlevlerinin hiç çağrılmadığını düşünüyorum, bu nedenle "fazlalıklar" etkilememeli özellikle hız).


Şimdilik bu kadar, Miroslav için birkaç soru birikmiş, ama artık gücüm yok :), yarın sormaya çalışacağım (ama daha önce söylediğim gibi atlayacağım) ...


ps Dosyaları arşivden aktarmadan önce, Experts\Indicators\ klasöründeki fsb*.mq4 dosyalarını silin. Geri kalanın eskisinin üzerine yeniden yazılması gerekiyor. Şu andan itibaren, dosya adlandırma kuralları değişmeyecek (tüm göstergelerin önüne " -FSB- " eklenecektir).

Dosyalar:
experts_1.rar  148 kb