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

 
Vitaly Muzichenko :

limit - grafikteki çubukların sayısı , böylece geçmiş içinde gezinirken gösterge geçmişin sonuna kadar görüntülenir.


Çok teşekkürler! :)

 

İyi zaman, bana Moveng tarafından verilen göstergede parametreyi nasıl ayarlayacağımı söyle - uygula - Medyan Fiyat

Görevi anlatacağım, göstergenin [][] hesaplama verilerini kaydeden bir dizisi var MA - Görev, verileri varsayılan olarak değil HL/2 fiyatlarında kaydetmektir

 

Merhaba, bin dosyasına CDecisionForest sınıfının bir nesnesini yazmaya çalışıyorum (bu Alglib kitaplığından), ama nasıl olduğunu çözemiyorum. FileWriteStruct aracılığıyla denendi, ancak derleyici sınıfımla ilgili argümanda bir hata veriyor:

'df' - structures containing objects are not allowed

Genel olarak, bunu bir şekilde yazmak mümkün mü yoksa nesnenin kendisini söküp parçalara ayırıp sonra tekrar birleştirmek mi gerekiyor?
 
Vitaly Muzichenko :

limit - grafikteki çubukların sayısı , böylece geçmiş içinde gezinirken gösterge geçmişin sonuna kadar görüntülenir.


Canım, lütfen açıkla.

Bağlantınızdaki bilgileri kullanarak başarı sağlanamadı.

Limit değeri kendi başınıza bildirirken "Array out of range" penceresi açılır.

Hata ayıklayıcı, for döngüsünde dizileri olan satırlara işaret eder.

 for ( int i= 0 ; i<limit; i++) {
    RSI[i] = iRSI ( Symbol (),TimeFrame, 14 , PRICE_CLOSE ,i);
  }

for ( int i= 0 ; i<limit; i++) {
    BandsMn[i]= iBandsOnArray (RSI, 0 ,BB_Period,BB_Dev, 0 , MODE_MAIN ,i);
    BandsUp[i]= iBandsOnArray (RSI, 0 ,BB_Period,BB_Dev, 0 , MODE_UPPER ,i);
    BandsDn[i]= iBandsOnArray (RSI, 0 ,BB_Period,BB_Dev, 0 , MODE_LOWER ,i);
  }

Belki bunu yapmanın daha kolay bir yolu vardır?
Çizime ihtiyacım yok.

Yalnızca geçerli ve önceki çubuklardaki değerler.

 
Ras al Ghul :

Canım, lütfen açıkla.

Bağlantınızdaki bilgileri kullanarak başarı sağlanamadı.

Limit değeri kendi başınıza bildirirken "Array out of range" penceresi açılır.

Hata ayıklayıcı, for döngüsünde dizileri olan satırları işaret eder.

Belki bunu yapmanın daha kolay bir yolu vardır?
Çizime ihtiyacım yok.

Yalnızca geçerli ve önceki çubuklardaki değerler.

Limiti nasıl hesaplarsınız?

Aslında, göstergeyi geriye doğru hesaplarken - tarihin başlangıcından sonuna kadar (mevcut verilere kadar), sınır genellikle şu şekilde hesaplanır:

   if (rates_total< нужное_количество_баров_для_верного_расчёта ) return ( 0 );
   int limit=rates_total-prev_calculated;
   if (limit> 1 ) {
      limit=rates_total- нужное_количество_баров_для_верного_расчёта - 1 ;
       // здесь, при необходимости очистки мусора в буферах, их инициализация пустыми значениями
      }
   //---
   for ( int i=limit; i>= 0 ; i--) {
       // тут цикл просчёта индикатора
      }
" gerekli_çubuk_sayısı_için_doğru_hesaplama " terimi, göstergenin doğru bir şekilde hesaplanacağı minimum çubuk sayısı anlamına gelir. 2X2 fraktal için - altı çubuk - ikisi solda, biri ortada, ikisi sağda ve bir tane daha sağda, fraktalın yeniden çizilmemesi için tam olarak oluşturulması gerekir.
 

Merhaba, lütfen bana göstergedeki tek boyutlu bir dizinin boyutunu nasıl artıracağımı söyleyin

Çağrılacak bir arabellek dizini olması şartıyla

Ve dizi boyutu çubuk sayısını aşıyor

 

Sıkışmış, bana öyle geliyor ki, çok basit bir yerde. Peki ya global int checkcount=0; int sayı=0; birkaç counter() işlevini paralel olarak çalıştırmak istersem?

 void OnTimer ()
  {
Print ( "counter(10)= " ,counter( 10 ));
Print ( "counter(14)= " ,counter( 14 )); // !!!
  }

int chekcount= 0 ; //???
int count= 0 ; //???

int counter( int Pause= 10 )
  {
   count++;
   if (count>=chekcount+Pause)
      chekcount=count;

   return (chekcount);
  }

 
Nauris Zukas :

Sıkışmış, bana öyle geliyor ki, çok basit bir yerde. Peki ya global int checkcount=0; int sayı=0; birkaç counter() işlevini paralel olarak çalıştırmak istersem?

Sadece sınıfı kullanın veya farklı adlara sahip işlevlerin kopyalarını oluşturun.

 
Vitaly Muzichenko :

Sadece sınıfı kullanın veya farklı adlara sahip işlevlerin kopyalarını oluşturun.

Yani o kadar basit değil ... Teşekkürler!

 

Belki birileri bu işlevi bir sınıf kullanarak yeniden yazabilir, eğer zor değilse?

 void OnTimer ()
  {
Print ( "counter(10)= " ,counter( 10 ));
Print ( "counter(14)= " ,counter( 14 )); // !!!
  }

int chekcount= 0 ; //???
int count= 0 ; //???
int counter( int Pause= 10 )
  {
   count++;
   if (count>=chekcount+Pause)
      chekcount=count;
   return (chekcount);
  }