""Yeni Çubuk" Olay İşleyicisi" makalesi için tartışma - sayfa 3

 
laplacianlab:

Güzel makale, paylaşım için teşekkürler! Tüm bunlar çok faydalı oldu!

Her neyse, isNewBar fonksiyonunuzu aldım ve derlerken aşağıdaki mesajı atıyor:" tür dönüşümü nedeniyleolası veri kaybı ".

Bu yüzden var türlerini datetime'dan long'a bu şekilde değiştirdim:

Şimdi herhangi bir uyarı olmadan derleniyor ve iyi çalışıyor gibi görünüyor. Teşekkür ederim!


Muhtemelen bu şekilde değiştirmek daha nettir :

   datetime lastbar_time=(datetime)SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);
 

Yeni bir sütun satırı talep etmenin ilk yolunda, yeni sütun sayısının doğrudan 1'e nasıl atanabileceğini anlamıyorum. Lütfen tavsiye verin;

 //--- Yeni sütun satırlarını kontrol edin.
   if(m_lastbar_time<newbar_time)       
     { 
      m_new_bars=1;               // Yeni sütun satırlarının sayısı
      m_lastbar_time=newbar_time; // Son çubuk zamanını hatırla
      return(true);
     }
   //--- //--- Yeni sütun satırlarını kontrol edin.
   if(m_lastbar_time<newbar_time)       
     { 
      m_new_bars=1;               // Yeni sütun satırlarının sayısı
      m_lastbar_time=newbar_time; // Son çubuk zamanını hatırla
      return(true);
     }
   //---
 

Nesne modelleme kurallarına göre, bunu CIsNewBar olarak adlandırmak yanlış bir isimlendirmedir.

Bakalım, eğer araba bir sınıf ise, bir araba nesnesi oluşturabilirim/sahip olabilirim. Ancak, sınıfım "ÉUmCarroNovo" ise, bir "ÉUmCarroNovo "ya sahip olabiliriz veya sahip olabiliriz.

Yazar buna CNewBarChecker adını vermeliydi. Birisi bir Yeni Araba Denetleyicisi icat edebilir ve onu yaratabilir (sınıfımız NewCarChecker olacaktır.

[Silindi]  
Zamanı kullanmıyorsun, çubukları kullanıyorsun.
 
Makalede çok fazla kod varyasyonu var, ancak sonunda hala net değil, test cihazının ticaretle çizdiği şeyin yazışmasını en azından biraz artırmak için MT4'te hangi işlevin kullanılması daha doğru. Bana bir ipucu verin!
 
Pavel Komarovsky:
Makalede çok fazla kod varyasyonu var, ancak sonunda hala net değil, test cihazının ticaretle çizdiği şeyin yazışmasını en azından biraz artırmak için MT4'te hangi işlevin kullanılması daha doğru. Bana bir ipucu verin!
datetime counted_bar = 0;

int OnInit()
{
   counted_bar = 0; // eğer son çubuğun yeniden başlatıldığında analiz edilmesini istiyorsanız
   ...

void OnTick()
{
   // Yeni bir çubuk varsa
   if ( iTime( _Symbol, _Period, 0 ) > counted_bar )
   {
      counted_bar = iTime( _Symbol, _Period, 0 );

      // Göstergeleri analiz edin
      ...
   }
 
Andrey Khatimlianskii:

Andrey, teşekkür ederim. Bana neden iTime'ın şimdi kullanıldığını söyleyin, daha önce tüm işlevlerde ve örneklerde hatırlıyorum, çoğu iBars'a dayanıyordu.

iTime daha mı doğru çalışıyor?

 
Pavel Komarovsky:

Andrey, teşekkür ederim. Bana neden iTime'ın şimdi kullanıldığını söyleyin, daha önce tüm işlevlerde ve örneklerde hatırlıyorum, çoğu iBars'a dayanıyordu.

iTime daha mı doğru çalışıyor?

iBars 'ı bu amaç için hiç kullanmadım, bilmiyorum.
 
Acaba bu örnek neden zaman serisi verilerini alamıyor? Kopyala... her zaman -1 ve Bars() her zaman 0. Yani sınıftaki verilere erişim yok
 

Bu makale o kadar iyi ki, yorumlar ve işbirlikleri ve hata düzeltmeleri de dahil olmak üzere MQL5 programlama derslerinde bile kullanılıyor. Hepinizi tebrik ederim.