[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 246

 
Vinin >> :

Her durumda, kararınız


Size halkın yapıcı eleştirisi için program kodunu vereyim (göstergenin kendisini yapıcı eleştiriden kaçınmanızı rica ederiz). Ama önce, bir açıklama. Bu, TSI (gerçek güç) endeksidir. 1 günlük bir ivme üzerine inşa edilmiştir. Bu artışlar, üstel bir ortalama (21 dönem) ile düzeltilir. Şimdi ölçeklemeyi ekleyelim. Bunu yapmak için farkı yüksek - düşük alın ve aynı üstel ortalamayla (21 periyot) düzeltin. Pürüzsüz bir momentumu yumuşak bir salınımla bölün. Bu oran, kısa bir üstel ortalama (5 periyot) ile düzeltilir. ana aldık astar. Şimdi tabanı düzeltelim. ergodik hat (EMA(, 5)) ve bir sinyal almış sevinirler. Aslında yine sevinelim çünkü. bizden önce TSI - tipik bir trend göstergesi. Uygulamamda, ana öğenin kesişimini belirlediğim "daireler" için 3 tampon daha var. ve sinyal hatları. Beyler, stüdyodaki kod:

 //--------------------------------------------------------------------
// TSI.mq4 
// Предназначен для использования в качестве трендового индикатора
//--------------------------------------------------------------------

#property indicator_separate_window         // indicator_chart_window, indicator_separate_window
#property indicator_buffers     3           // Количество буферов
#property indicator_color1      Red         // Цвет первой линии Red Blue Lime 
#property indicator_color2      Blue        // Цвет второй линии
#property indicator_color3      Yellow
#property indicator_level1      - 20
#property indicator_level2       20
//#property indicator_minimum   -100
//#property indicator_maximum    100
 
extern int LengthMtm            = 21 ;
extern int LengthSmooth         = 5 ;
extern int LengthErgodic        = 5 ;
extern int HistoryLimit         = 2000 ;

double tsi [ ] , ergodic [ ] , cross [ ] ;           // Объявление массивов (под буферы индикатора)
double mtm [ ] , base [ ] , mtmMA [ ] , mtmS [ ] ;


//-----------------------------------------------------------------------------
int MathSgn ( double Value = 0.0 )
{
    if ( Value < 0 ) return ( - 1 ) ; else return ( 1 ) ;
}

//-----------------------------------------------------------------------------
int init ( )                         
{
    SetIndexBuffer ( 0 , tsi ) ;                                 // Назначение массива буферу
    SetIndexBuffer ( 1 , ergodic ) ;                             // Назначение массива буферу
    SetIndexBuffer ( 2 , cross ) ;                               // Назначение массива буферу
    
    SetIndexStyle ( 0 , DRAW_LINE ,        STYLE_SOLID , 1 ) ;    // Стиль линии DRAW_HISTOGRAM STYLE_SOLID
    SetIndexStyle ( 1 , DRAW_LINE ,        STYLE_SOLID , 1 ) ;    // Стиль линии        
    SetIndexStyle ( 2 , DRAW_ARROW ,       STYLE_SOLID , 0 ) ;    // Стиль линии
    SetIndexArrow ( 2 , 161 ) ;
    
    SetIndexLabel ( 0 , "TSI" ) ;
    SetIndexLabel ( 1 , "Ergodic" ) ;
    SetIndexLabel ( 2 , "Cross" ) ;
    IndicatorShortName ( "TSI(" + LengthMtm + "," + LengthSmooth + "," + LengthErgodic + ")" ) ;    
    
    ArrayResize (        mtm ,        Bars ) ;
    ArrayResize (        base ,       Bars ) ;
    ArrayResize (        mtmMA ,      Bars ) ;
    ArrayResize (        mtmS ,       Bars ) ;

    ArraySetAsSeries (   mtm ,        true ) ;
    ArraySetAsSeries (   base ,       true ) ;
    ArraySetAsSeries (   mtmMA ,      true ) ; 
    ArraySetAsSeries (   mtmS ,       true ) ;


    return ( 0 ) ;                                      
}

//-----------------------------------------------------------------------------
int start ( )                         
{    
    if ( HistoryLimit = = 0 ) HistoryLimit = Bars ;
    
    int Counted_bars            = IndicatorCounted ( ) ;
    int i                       = MathMin ( Bars - Counted_bars - 1 , HistoryLimit ) ; 
    while ( i > = 0 ) {        
     
        mtm [ i ]                  = Close [ i ] - Close [ i + 1 ] ;
        base [ i ]                 = High [ i ]  - Low [ i ] ;
        mtmMA [ i ]                = iMAOnArray ( mtm ,   0 , LengthMtm ,     0 , MODE_EMA , i ) * 100 ;
        mtmMA [ i ]               / = iMAOnArray ( base ,  0 , LengthMtm ,     0 , MODE_EMA , i ) ;
        mtmS [ i ]                 = iMAOnArray ( mtmMA , 0 , LengthSmooth ,  0 , MODE_EMA , i ) ;
        tsi [ i ]                  = mtmS [ i ] ;
        ergodic [ i ]              = iMAOnArray ( mtmS ,  0 , LengthErgodic , 0 , MODE_EMA , i ) ; 
        
        if ( MathSgn ( tsi [ i + 1 ] - ergodic [ i + 1 ] ) ! = MathSgn ( tsi [ i ] - ergodic [ i ] ) )       
            cross [ i ]           = ergodic [ i ] ;
        else
            cross [ i ]           = EMPTY_VALUE ;
        
        i - - ;                       
    }
    
    return ( 0 ) ;                          
}


İtirazın nedenini hatırlatayım. Grafikteki göstergeyi çekip birkaç mum atlayıp aynı mumlardan bir tane daha eklerseniz gösterge değerlerinde tutarsızlık elde ederiz. Ayrıca, Expert Advisor'ın görsel testi sırasında bu gösterge görüntülendiğinde ve daha sonra aynı gösterge grafiğe eklendiğinde çok güçlü bir tutarsızlık vardır. Göstergedeki bu tür bir hatayla ilgili makaleler veya kişisel deneyim konusunda bana yardımcı olabilir misiniz? Teşekkür ederim.
 
Test cihazında Durdur/Oynat düğmesi ve hız kaydırıcısı kayboldu. Ne yapalım?
 
VAM_ >> :
Test cihazında Durdur/Oynat düğmesi ve hız kaydırıcısı kayboldu. Ne yapalım?

test cihazının kontrol panelini biraz daha yükseğe kaldırın... sol fare düğmesini kullanarak...

 
Dmido >> :

Herkese iyi günler)


Danışman var. Büyük trendleri yakalar, iyi bir artıları vardır, ancak doldurmadan balık eksikliğinin eksilerini zar zor kapatır.

Soru: nasıl yeniden doldurma sinyali yazacağımı söyle? Fikir şudur - ilk pozisyon üzerinde daha fazla durma olduğunda ve trend parametreleri bir trend gösterdiğinde tamamlayın.


Bir anlaşma yapmak için bir sinyal göndermek için bloğun kendisiyle ilgileniyorum. Standart MACD Sample Expert Advisor'dan kopyalanan kodu kullanıyorum.

Bir kontör anlaşması yapılması ve ardından hem ana hem de kontör olmak üzere her iki pozisyon hemen aynı anda kapatılacak şekilde nasıl düzeltilir?


Ve sonra fırsatlar sinek gibi çoğalır ve sonuç olarak binlerce açık anlaşma ile kutsal kaseyi elde edersiniz ((((


bir seçenek olarak: danışmanın çalışmasını gerçek zamanlı olarak görsel olarak izleyin ve manuel olarak doldurun, çünkü o bir granit (sanat eseri), ancak bir kase değil ...

 
IlyaA >> :
        mtmMA [ i ]                  = iMAOnArray ( mtm ,    0 , LengthMtm ,      0 , MODE_EMA , i ) * 100 ;
        mtmMA [ i ]                / = iMAOnArray ( base ,    0 , LengthMtm ,      0 , MODE_EMA , i ) ;

mtmMA - iki farklı dizi olmalıdır. bölerken, eşitsizliğin sıfıra eşit olup olmadığını kontrol etmek istenir.


ara hesaplamalar için bir arabellek kullanmak daha uygundur.

8 adet yetmezse çözümlerden biri burada .

 
Swan >> :

mtmMA - iki farklı dizi olmalıdır. bölerken, eşitsizliğin sıfıra eşit olup olmadığını kontrol etmek istenir.


ara hesaplamalar için bir arabellek kullanmak daha uygundur.

8 adet yetmezse çözümlerden biri burada .






Yorum için teşekkürler. Ortalama yüksek - düşük farktan bahsettiğimize dikkat edin. O her zaman pozitiftir. Ve ortalama bu eğilimi pekiştiriyor. Kontrol etmek istedim ama sonra sanırım dergide bir şey görürsem. Sıfıra bölme hatasının farklı zaman aralıklarında eklenen grafiklerde tutarsızlıklara neden olabileceğini düşünüyor musunuz?
 
IlyaA >> :


Yorum için teşekkürler. Ortalama yüksek - düşük farktan bahsettiğimize dikkat edin. O her zaman pozitiftir. Ve ortalama bu eğilimi pekiştiriyor. Kontrol etmek istedim ama sonra sanırım dergide bir şey görürsem. Sıfıra bölme hatasının farklı zaman aralıklarında eklenen grafiklerde tutarsızlıklara neden olabileceğini düşünüyor musunuz?

yapamamak. ama kontrol etmekte fayda var)

tutarsızlık, dizilerin kayma olmadan kullanılmasından kaynaklanmaktadır.

 
IlyaA писал(а) >>

Size halkın yapıcı eleştirisi için program kodunu vereyim (göstergenin kendisini yapıcı eleştiriden kaçınmanızı rica ederiz). Ama önce, bir açıklama. Bu, TSI (gerçek güç) endeksidir. 1 günlük bir ivme üzerine inşa edilmiştir. Bu artışlar, üstel bir ortalama (21 dönem) ile düzeltilir. Şimdi ölçeklemeyi ekleyelim. Bunu yapmak için, farkı yüksek - düşük alın ve aynı üstel ortalamayla (21 periyot) düzeltin. Pürüzsüz bir momentumu yumuşak bir salınımla bölün. Bu oran, kısa bir üstel ortalama (5 periyot) ile düzeltilir. ana aldık astar. Şimdi tabanı düzeltelim. ergodik hat (EMA(, 5)) ve sevinirler, bir sinyal almışlar. Aslında yine sevinelim çünkü. TSI'mız var - tipik bir trend göstergesi. Uygulamamda, ana öğenin kesişimini belirlediğim "daireler" için 3 tampon daha var. ve sinyal hatları. Beyler, stüdyodaki kod:

İtirazın nedenini hatırlatayım. Grafikteki göstergeyi çekip birkaç mum atlayıp aynı mumlardan bir tane daha eklerseniz gösterge değerlerinde tutarsızlık elde ederiz. Ayrıca Expert Advisor'ın görsel testi sırasında bu gösterge görüntülendiğinde ve daha sonra aynı gösterge grafiğe eklendiğinde çok güçlü bir tutarsızlık vardır. Göstergedeki bu tür bir hatayla ilgili makaleler veya kişisel deneyim konusunda bana yardımcı olabilir misiniz? Teşekkür ederim.

Gösterge normaldir. iMAOnArray() çağrıları ayrı bir döngüde yapılırsa, gösterge, ayarlandığı zamandan bağımsız olarak doğru şekilde çalışabilir.

Birini üç döngüye ayırman gerekiyor.

iMAOnArray() daha doğru çalışacaktır.

 
Swan >> :

yapamamak. ama kontrol etmekte fayda var)

tutarsızlık, dizilerin kayma olmadan kullanılmasından kaynaklanmaktadır.

Bir değişiklik olmadan ne demek istediğini gerçekten anlamıyorum. Lütfen kelime ekleyin.

 
IlyaA >> :

Bir değişiklik olmadan ne demek istediğini gerçekten anlamıyorum. Lütfen kelime ekleyin.

Yeni bir çubuk göründüğünde arabellek dizisi kaydırılır. indeksler 1 artar. normal hayır.

Daha fazla ayrıntı için yukarıdaki bağlantıya bakın.