MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1361

 
azolotta :

Teşekkürler , bu gerçekten sorunu çözdü!!!

Eğer sizi rahatsız etmiyorsa söyleyin ki iki hi/düşük art arda görüntülenmiyor ama değişkenlik var (hi-low-high), hangi tasarım eklenmeli? " Dizinin önceki öğesi yüksekse, arka arkaya ikinci yüksek diziye dahil edilmemeli, düşük beklemeli" gibi bir kontrolün gerekli olduğunu anlıyorum, ancak nasıl düzenlenir?

sana zaten açıkladım

 
DanilaMactep :

Herkese iyi günler. Çeki mahvettim ama O_o'yu test etmeyi unuttum. Bugün bunu hatırladığım iyi oldu ... İşte durma seviyesi modasındaki bu kontrol

Test sırasında, böyle bir kontrol, aşağıdaki ekran görüntüsünde gösterilen hataları verir.

Ve ilginç olan, nasıl   ve tavsiye, bu kontrole aşağıdaki gibi 1,5 ile çarpma ekledim


Bu eklenti sorunu çözmez   Test, aşağıdaki ekran görüntüsündeki gibi hatalar üretiyor.

Durdurma seviyesi modundaki bu kontrol yorumlanırsa, hata yoktur. Çekteki hata nedir, lütfen söyler misiniz? Onsuz, gerçek hayatta Kase'ye izin veremezsiniz - hemen L O_o'yu yasaklayacaklar

Bence hata çekte değil, kaydettiğiniz yerde

ve burada " * 1.5" öğesini kaldırabilirsiniz

 if (tp<MarketInfo( Symbol (),MODE_STOPLEVEL) * 1 , 5 )
 if (sl<MarketInfo( Symbol (),MODE_STOPLEVEL) * 1 , 5 )
 
DanilaMactep :

Herkese iyi günler. Çeki mahvettim ama O_o'yu test etmeyi unuttum. Bugün bunu hatırladığım iyi oldu ... İşte durma seviyesi modasındaki bu kontrol

Test sırasında, böyle bir kontrol, aşağıdaki ekran görüntüsünde gösterilen hataları verir.

Ve ilginç olan, nasıl   ve tavsiye, bu kontrole aşağıdaki gibi 1.5 ile çarpma ekledim


Bu eklenti sorunu çözmez   Test, aşağıdaki ekran görüntüsündeki gibi hatalar üretiyor.

Durdurma seviyesi modundaki bu kontrol yorumlanırsa, hata yoktur. Çekteki hata nedir, lütfen söyler misiniz? Onsuz, Kase'yi gerçek hayatta başlatamazsınız - hemen L O_o'yu yasaklayacaklar

Durma seviyesinin ne döndürdüğünü kontrol edin, genellikle 0.

   int     Stoplevel = ( int )MarketInfo( Symbol (), MODE_STOPLEVEL);
   int     Spread = ( int )MarketInfo( Symbol (), MODE_SPREAD );

   if (Stoplevel == 0 ) Stoplevel = 2 * Spread;

   

Bunun gibi bir şey

 
Alekseu Fedotov :

Durma seviyesinin ne döndürdüğünü kontrol edin, genellikle 0.

Bunun gibi bir şey

Buna ihtiyacı yok, "eğer daha az durma seviyesi" var

 
DanilaMactep :

Herkese iyi günler.

Büyük bir hata ... Hemen fark etmedim

 if (sl<MarketInfo( Symbol (),MODE_STOPLEVEL)* 1 , 5 ) // ЕСЛИ СТОПОЛС МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО 
 {
  sl= MarketInfo( Symbol (),MODE_STOPLEVEL)* 1 , 5 ; //СТОП  ЛОССУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
 }

if (tp<MarketInfo( Symbol (),MODE_STOPLEVEL)* 1 , 5 ) // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО 
 {
  tp= MarketInfo( Symbol (),MODE_STOPLEVEL)* 1 , 5 ; // ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
 }

PUANLAR olmalıdır

 
azolotta :
böylece iki yüksek / düşük arka arkaya görüntülenmez, ancak değişkenlik vardır (yüksek-düşük-yüksek)

Basit bir şekilde yapılabilir. Global bir değişken bildirin ve olaylara bağlı olarak değiştirin.

 int direction= 0 ;

int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
   {


   for (n= 0 ; n<=limit; n++)
     {
       if (direction>= 0 && ((Close[n+ 1 ]>Open[n+ 1 ] && Open[n+ 2 ]>=Close[n+ 2 ]) || (Close[n+ 1 ]>Open[n+ 1 ] && Open[n+ 3 ]>Close[n+ 3 ])))
        {
         val_index= iLowest ( NULL , 0 , MODE_LOW , 3 ,n+ 1 );
         myAZBuffer[n]=Low[val_index];
         ExtLowBuffer[n]=Low[val_index];
         direction=- 1 ;
        }
       else
         if (direction<= 0 && ((Open[n+ 1 ]>Close[n+ 1 ] && Close[n+ 2 ]>=Open[n+ 2 ]) || (Close[n+ 1 ]<Open[n+ 1 ] && Close[n+ 3 ]>Open[n+ 3 ])))
          {
            val_index= iHighest ( NULL , 0 , MODE_HIGH , 3 ,n+ 1 );
            myAZBuffer[n]=High[val_index];
            ExtHighBuffer[n]=High[val_index];
            direction= 1 ;
           }
      }
.......

Göstergelerde OnCalculate işlevini ve tüm değişkenlerini kullanın.

Ve Start artık moda değil :)

 
Aleksei Stepanenko :

Basit bir şekilde yapılabilir. Global bir değişken bildirin ve olaylara bağlı olarak değiştirin.

Göstergelerde OnCalculate işlevini ve tüm değişkenlerini kullanın.

Ve Start artık moda değil :)

teşekkür etmek! harika bir yol!)

OnCalculate'i anladım, içinde olacağım))

 
Aleksei Stepanenko :

Basit bir şekilde yapılabilir. Global bir değişken bildirin ve olaylara bağlı olarak değiştirin.

Göstergelerde OnCalculate işlevini ve tüm değişkenlerini kullanın.

Ve Start artık moda değil :)

çalışmayacak, yeni yüksek / düşük ile onları dikkate almayacak
 

Tünaydın. Expert Advisor'da gösterge çağrıldığında, çerçevede belirtilen bir hata oluşur. Neden ortaya çıkıyor? Ve her zaman değil. diğerinde

terminali iyi çalışıyor.


 
Sergey Fionin :

Tünaydın. Expert Advisor'da gösterge çağrıldığında, kutuda belirtilen bir hata oluşur. Neden ortaya çıkıyor? Ve her zaman değil. diğerinde

terminali iyi çalışıyor.


Bu, yazma haklarının ihlalidir, bir sistem yazma yasağıdır.