Alım-satım robotlarını ücretsiz olarak nasıl indirebileceğinizi izleyin
Bizi Twitter üzerinde bulun!
Fan sayfamıza katılın
Komut dosyasını ilginç mi buldunuz?
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
Komut dosyasını beğendiniz mi? MetaTrader 5 terminalinde deneyin
Uzman Danışmanlar

Yeni bir çubuğun veya mumun başlangıcını algılama - MetaTrader 5 için Uzman Danışman

Görüntülemeler:
73
Derecelendirme:
(14)
Yayınlandı:
2025.04.03 11:16
MQL5 Freelance Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git

Bir Uzman Danışman (EA) için, MetaTrader tarafından yeni bir fiyat teklifi ("tik") alındığında, standart OnTick() olay işleme işlevi terminal tarafından çağrılır. Ancak, yeni bir çubuk (mum) başladığında standart bir olay işleme işlevi yoktur.

Bunu tespit etmek için, en son çubuğun açılış zamanını izlemeniz gerekir. Değiştiğinde, yeni bir çubuğun başladığını gösterir ve duruma tepki verebilir ve olayı işleyebilirsiniz. Hem MQL4 hem de MQL5 ile uyumlu olan aşağıdaki kod örneği, bunun nasıl başarılabileceğine ilişkin yöntemlerden birini göstermektedir:

// Standart tik olay işleyicisi
   void OnTick()
   {
      // Yeni bir çubuk olup olmadığını kontrol edin (MQL4 ve MQL5 ile uyumlu).
         static datetime dtBarraCorrente   = WRONG_VALUE;
                datetime dtBarraPrecedente = dtBarraCorrente;
                         dtBarraCorrente   = iTime( _Symbol, _Period, 0 );
                bool     bEventoBarraNova  = ( dtBarraCorrente != dtBarraPrecedente );

      // Yeni bir çubuk olayına tepki verin ve durumla ilgilenin.
         if( bEventoBarraNova )
         {
            // Bunun alınan ilk tik olup olmadığını tespit edin ve durumla ilgilenin.
               /* Örneğin, grafiğe ilk uygulandığında ve
 çubuk ilerlemesinin ortasında bir yerdedir ve
 gerçekten yeni bir çubuğun başlangıcı değildir. */
               if( dtBarraPrecedente == WRONG_VALUE )
               {
                  // İlk tikte veya bir çubuğun ortasında bir şey yapın ...
               }
               else
               {
                  // Normal bir çubuk göründüğünde bir şey yapın ...
               };

            // Önceki koşuldan bağımsız bir şey yap ...
         }
         else
         {
            // Başka bir şey yap ...
         };

      // Başka şeyler yap ...
   };

Önceki kodda statik değişken, OnTick() fonksiyonundan dönerken bile çubuğun açılış zamanını takip eder. Normal bir yerel değişkenden farklı olarak, veri içeriğini hafızaya alır ve fonksiyondan çıkarken serbest bırakmaz. Bu, mevcut çubuğun açılış zamanındaki bir değişikliği tespit etmenin anahtarıdır.

EA bir grafiğe ilk kez yerleştirildiğinde, önceki kodun çubuk yeni açılmış gibi tepki verdiğine dikkat etmek de önemlidir. Durumun farklı şekilde ele alınması gerekiyorsa bu durum özel işlem gerektirir.

Lütfen tüm CodeBase yayınlarımın kaynak kodunun artık MetaEditor 'un "FMIC" adı altındaki "Genel Projeler" aracılığıyla da mevcut olduğunu unutmayın.

MetaQuotes Ltd tarafından Portekizceden çevrilmiştir.
Orijinal kod: https://www.mql5.com/pt/code/41601

Takvim Takvim

Takvim - geçmiş ve gerçek zamanlı temel analiz.

SingleTesterCache SingleTesterCache

Test cihazının tek geçiş verileri.

Uzman Uzman

Rastgele EA'ların parametrelerini okuma/yazma kütüphanesi.

Geri tekme Geri tekme

Algoritma döngüsü: açık pozisyon olmadığında, iki zıt pozisyon açın. Her iki pozisyonun da kapanmasını bekleyin.