Fan sayfamıza katılın
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
- Görüntülemeler:
- 73
- Derecelendirme:
- Yayınlandı:
- 2025.04.03 11:16
-
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 - geçmiş ve gerçek zamanlı temel analiz.

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

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

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