Init() ve DeInit() yürütme sırası - sayfa 18

 
Alexey Kozitsyn :
Onlar. koltuk değneği kullanmak? Bir örnek alabilir miyim?

Farklı bir sembol veya zaman çerçevesine sahip bir grafiğe ChartIndicatorAdd() aracılığıyla gösterge ekleyemezsiniz. Bir hata atılacak.

https://www.mql5.com/ru/docs/chart_operations/chartindicatoradd

GrafikGöstergeEkle

Belirtilen grafik penceresine belirtilen tutamaçla bir gösterge ekler. Gösterge ve çizelge aynı sembol ve zaman çerçevesinde oluşturulmalıdır.

Şimdi sınırlama burada. Servislerde olmayacak.
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
  • www.mql5.com
Операции с графиками / ChartIndicatorAdd - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Neredeyse konuyla ilgili küçük bir hayat kesmek

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

fxsaber , 2016.09.23 10:48

  1. Göstergeyi NAKED grafiğine ellerimizle kuruyoruz
     #property indicator_separate_window
    #property indicator_buffers 1
    #property indicator_plots    1
    
    double Buffer[];
    
    int handle = INVALID_HANDLE ;
    
    void OnInit ()
    {
      :: SetIndexBuffer ( 0 , Buffer, INDICATOR_DATA );
      
      handle = ChartIndicatorGet ( 0 , 1 , ChartIndicatorName ( 0 , 1 , 0 ));  
    }
    
    #define TOSTRING(A) #A + " = " + ( string )A + "\n"
    
    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[] )
    {
       if (handle != INVALID_HANDLE )
      {
        Buffer[rates_total - 1 ] = MathRand ();
        
         double BufferCopy[];
        
         if ( CopyBuffer (handle, 0 , 0 , 1 , BufferCopy) > 0 )
           Print (TOSTRING(BufferCopy[ 0 ]) + TOSTRING(Buffer[rates_total - 1 ]));
      }
      
       return (rates_total);
    }
  2. Göstergeyi tablodan elle kaldırıyoruz.
  3. Günlükte, göstergenin çalışmaya devam ettiğini görüyoruz. Terminaldeki tüm çizelgeleri kapatabilirsiniz, ancak yine de çalışacaktır. Ve elbette yardımcı olmayacak
     void OnDeinit ( const int Reason )
    {
       if (handle != INVALID_HANDLE )  
         IndicatorRelease (handle);
      
       return ;
    }
  4. Terminalin yeniden başlatılması, göstergenin ilerlemesini durdurur.
  5. Boşta bu şekilde kaç gösterge yapılabilir ve bizde bunlarla ilgili ne bir söylenti ne de bir ruhumuz var?! Hiç kontrol yok.
Geliştiricilere herhangi bir iddiada bulunmadan.
 
fxsaber :
Şimdi sınırlama burada. Servislerde olmayacak.

Bundan hiç bahsetmedim. Bir EA'dan bir gösterge eklemek değil, bir EA kullanarak bir gösterge oluşturmak.

Bununla ilgili olarak:

Hizmetler veya birden fazla Uzman Danışmanı tek bir çizelgede çalıştırma yeteneği neden tartışılan sorunları tam olarak karşılayamayacak?

Hizmetler aracılığıyla gösterge oluşturmak mümkün değilse, dosyadan verilerle gösterge oluşturma sorunu ortadan kalkmaz. OnDeinit() -> OnInit() dizisinin kontrol edilmemesi durumunda. Çünkü TF'yi değiştirmek kullanıcının eylemidir ve bu eyleme tepki (OnDeitit()) gerekmediğinde (OnInit()'den sonra veya hatta belki sonraki OnCalculate()?'den sonra) gelecektir.

Onlar. gösterge bir dosyaya veri yazarsa ve bu verilere dayalı bir grafik oluşturursa. seriler ve veriler "sırayla değil" yazılacaktır - tüm veriler doğru şekilde görüntülenmeyecektir.

Ancak hizmet global bir program olsaydı (GPT gibi, yalnızca bir programın tamamı) ve gösterge arabellekleri oluşturmak için kullanılabilseydi ve hesaplamalar, zaman dilimlerini değiştirme/bir grafiği kapatma gibi kullanıcı eylemleriyle kesintiye uğramasaydı, o zaman sorun olmazdı. Ve böylece - göstergeler her zaman olduğu gibi hadım edilir.

 
Alexey Kozitsyn :

Bundan hiç bahsetmedim. Bir EA'dan bir gösterge eklemek değil, bir EA kullanarak bir gösterge oluşturmak .

Terminolojiyi anlamıyorum.

 
fxsaber :

Terminolojiyi anlamıyorum.

Gösterge arabelleklerindeki kayıtları ile verilerin hesaplanması ve görüntülenmesi ve yalnızca verilerin görüntülenmesi değil.
 
Slawa :

OnChartEvent ile henüz çözüm yok

Çözüm yok gibi mi? Fareye erişme yeteneği olmadan ne tür bir hizmet olurdu? Evet ve kullanıcı olaylarını işlemek istiyorum.
 
Alexey Kozitsyn :
Gösterge arabelleklerindeki kayıtları ile verilerin hesaplanması ve görüntülenmesi ve yalnızca verilerin görüntülenmesi değil.

Burada , gösterge tarafından hesaplanan verilerin, TF değişikliği sırasında bu göstergenin başka bir kopyasına güvenilir ve mantıklı bir şekilde aktarılamadığından şikayet ediyorlar.

Servisler aracılığıyla, bu, eğer Servis hesaplama kısmını yapacaksa ve göstergeyi gösterecekse, temel olarak yapılır.

Kalın altına düşmeyen diğer tüm durumlarda, klasik şekilde gösterge yazmaya devam edebilirsiniz.

 
fxsaber :

Burada , gösterge tarafından hesaplanan verilerin, TF değişikliği sırasında bu göstergenin başka bir kopyasına güvenilir ve mantıklı bir şekilde aktarılamadığından şikayet ediyorlar.

Servisler aracılığıyla, bu, eğer Servis hesaplama kısmını yapacaksa ve göstergeyi gösterecekse, temel olarak yapılır.

Kalın altına düşmeyen diğer tüm durumlarda ise klasik şekilde gösterge yazmaya devam edebilirsiniz.

Tamam, tamam, bekleyelim ve ne olacağını görelim. Beta ne zaman olacak?
 
Alexey Kozitsyn :
Tamam, tamam, bekleyelim ve ne olacağını görelim. Beta ne zaman olacak?
Eğer iyi verirsem, o zaman bu gece.
 
Nikolai Semko :
Çözüm yok gibi mi? Fareye erişme yeteneği olmadan ne tür bir hizmet olurdu? Evet ve kullanıcı olaylarını işlemek istiyorum.

Hiçbir karar "nasıl çözüleceği henüz bilinmiyor" ve "olmayacak" anlamına gelmiyor.

Ve özel etkinliklerle, hiç sorun değil