Yeni bir çubuk belirtin - sayfa 2

 
Doerk Hilger :

En kolay yol:

statik tarihsaat tlastbar=0;

tarihsaat tnewbar=iTime(NULL,PERIOD_CURRENT,0);

bool isnewbar=tnewbar!=tlastbar;

tlastbar=tnewbar;

Konu mql5 için bildiğim kadarıyla. Kodunuz yalnızca mql4'tür.
 
Willbur :

İşte benim son versiyonum .

Aslında biraz endişeliyim çünkü çok kolay.

Alain: Kutsamayı yayınlarsan iyi olur.

// -----------------------------------------------------------------------
bool NewBar(void)
{
bool iNewBar = false;
static double currPeriodProgress = 0;

   if(MathMod(TimeCurrent(),PeriodSeconds()) < currPeriodProgress) iNewBar = true;

   currPeriodProgress = MathMod(TimeCurrent(),PeriodSeconds());

   return(iNewBar);
}
// ------------------------------------------------------------------------
void OnTick()
{
    if(NewBar())     PlaySound("tick.wav");


Köln'den selamlar
Willbur

Sorun şu ki, yalnızca OnTick()'ten kullanılabilir. Diğer olay işleyicilerinden TimeCurrent()'in istediğiniz sembolle ilişkili olup olmadığından asla emin olamazsınız.

Ve aynı hesaplamayı asla iki kez yapmamanızı öneririm:

 bool NewBar( void )
  {
   bool iNewBar= false ;
   static double currPeriodProgress= 0 ;

   double lastPeriodProgress= MathMod ( TimeCurrent (), PeriodSeconds ());

   if (lastPeriodProgress<currPeriodProgress) iNewBar= true ;

   currPeriodProgress=lastPeriodProgress;

   return (iNewBar);
  }
 
Alain Verleyen :
Konu mql5 için bildiğim kadarıyla. Kodunuz yalnızca mql4'tür.
Bununla ne demek istiyorsun? Bu sadece bir alıntıdır ve istenildiği yere dahil edilebilir, örneğin onun NewBar() işlevi içine. Ve imo, en basit ve en hızlı, güvenilir çözümdür. Bunu, tüm zaman dilimleri için ayrı ayrı CSymbolInfo sınıfının bir türevine dahil ettim ve mükemmel çalışıyor.
 

Bunları MQL4'te kullandım

 //global
long Bars_in_Chart;

   // detected new bar
   if (Bars_in_Chart< Bars )
   {
      Bars_in_Chart= Bars ;
   }
 
Doerk Hilger :
Bununla ne demek istiyorsun? Bu sadece bir alıntıdır ve istenildiği yere dahil edilebilir, örneğin NewBar() işlevine. Ve imo, en basit ve en hızlı, güvenilir çözümdür. Bunu, tüm zaman dilimleri için ayrı ayrı CSymbolInfo sınıfının bir türevine dahil ettim ve mükemmel çalışıyor.
mql5'te iTime() işlevi yoktur.
 
Alain Verleyen :
mql5'te iTime() işlevi yoktur.
MT5, gerçekten mi? Ama MQL5 sadece MT5 değil, en azından ben hep öyle anladım, çünkü MT4 MQL5 derleyicisini kullanıyor. Ama aslında bunu bilmiyordum, ağırlıklı olarak MT4 kullanıyorum. Neyse, kısıtlama hakkında bilgi için teşekkürler.
 
Doerk Hilger :
MT5, gerçekten mi? Ama MQL5 sadece MT5 değil, en azından ben hep öyle anladım, çünkü MT4 MQL5 derleyicisini kullanıyor. Ama aslında bunu bilmiyordum, ağırlıklı olarak MT4 kullanıyorum. Neyse, kısıtlama hakkında bilgi için teşekkürler.
Hayır, mql4, MT4, mql5, MT5 içindir. Ortak bir işlev alt kümeleri vardır, ancak bu 2 farklı dildir.
 

MQL4 iTime(), diğer MQL4 İşlevlerinin çoğunda olduğu gibi, tüccarlar için kolay ve anlaşılırdır.

MQL5 farklıdır, bunu kodlamak için bilgisayar bilimi diplomasına ihtiyacınız vardır ve çoğu insanı hayal kırıklığına uğratan da budur.

İşte geçen hafta MT4 EA'larımı MT5'e başlatmak ve dönüştürmek istediğimde karşılaştığım bir örnek ve bulduğum çözüm.


 
Alain Verleyen :
Hayır, mql4, MT4, mql5, MT5 içindir. Ortak bir işlev alt kümeleri vardır, ancak bu 2 farklı dildir.

Dil aynı ama ortak olmayan küçük bir işlev alt kümesine sahipler ;) Her neyse, muhtemelen bu tanımda haklısın. MQ bu noktada kafa karışıklığı yaratmak için çok şey yaptı.

 
Doerk Hilger :
MT5, gerçekten mi? Ama MQL5 sadece MT5 değil, en azından ben hep öyle anladım, çünkü MT4 MQL5 derleyicisini kullanıyor. Ama aslında bunu bilmiyordum, ağırlıklı olarak MT4 kullanıyorum. Neyse, kısıtlama hakkında bilgi için teşekkürler.
Sadece uyumluluk amacıyla eski iClose, iTime ... işlevlerini uygulayan bir halk kütüphanesi/sınıfı olup olmadığını biliyor musunuz? Adım adım dönüştürme sırasında mantıklı olur.