MQL5 OnTick ve OnTimer: EA tasarımında kullanım farkı
İçindekiler
Sonuç: Karar "yeni mum"a göre, zamana bağlı işler OnTimer ile
Önce sonucu yazayım. H1 veya H4 gibi daha uzun zaman dilimlerinde işlem kararı veren bir EA için, kararı yalnızca "yeni mum oluştuktan sonraki ilk tikte" vermek yeterlidir. Her tikte aynı hesabı tekrarlamak yalnızca CPU harcar, karar değişmez. Buna karşılık tik gelmese de çalışması gereken işler için OnTimer kullanılır. Hafta sonu durumu dosyaya yazmak ya da belirli bir saatte emirleri toparlamak bunlara örnektir.
Ancak hangisinin doğru olduğu stratejiye göre belirlenir. Bu yazıda iki mekanizmanın farkını ve EA seçen tarafın doğrulayabileceği noktaları derliyoruz.
Önerilen Broker Karşılaştırma →
🎁 Ücretsiz EA İndir📧 Ücretsiz e-posta kursu (8 e-posta) + abonelere özel 13 MT5 göstergesi paketi
Kaydolduktan hemen sonra, 13 MT5 göstergemizi içeren abonelere özel paketin indirme bağlantısını alırsınız: derlenmiş dosyalar (.ex5), kaynak kod ve kurulum kılavuzu. Ardından algoritmik işlemin temelleri, backtestlerin doğru okunması ve aracı kurum seçimi üzerine 8 e-posta gelir (ilk 5 gün her gün bir tane, sonra kayıttan 7, 14 ve 30 gün sonra). MQL5 Market'te satılan sürümlerin her fiyat artışından önce de bildirim alırsınız (satışlara göre kademeli olarak yükselen lansman fiyatı). Bu sitede EA'larımız, ortak bir aracı kurumda gerçek hesapla ücretsizdir.
* Gizlilik kesinlikle korunur. İstediğiniz zaman abonelikten çıkabilirsiniz.
Mekanizma: Tik güdümlü ve zaman güdümlü çalışma
OnTick (tik güdümlü)
OnTick, EA'nın çalıştığı sembole her yeni fiyat (tik) geldiğinde çağrılır. Hareketli saatlerde saniyede birkaç kez çağrılabilir, piyasanın durduğu hafta sonunda ise hiç çağrılmaz.
Burada bilinmesi gereken bir kural var. Bir önceki OnTick işlemi bitmeden gelen tikler sıraya alınmaz, atlanır. Yani tek seferde ağır çalışan bir EA, ani fiyat hareketleri sırasında tikleri kaçırır.
OnTimer (zaman güdümlü)
OnTimer, EventSetTimer() ile belirlenen aralıklarla çağrılır. Fiyat hareketinden bağımsız çalıştığı için piyasa kapalıyken de çağrılır. Bir EA'da yalnızca bir zamanlayıcı bulunur ve işlem takılırsa aynı şekilde atlanır. Ayrıca belirtilen aralığın tam olarak tutturulacağına dair bir garanti yoktur.
| Madde | OnTick | OnTimer |
|---|---|---|
| Çağrılma nedeni | Fiyat güncellemesi | Belirli sürenin geçmesi |
| Piyasa kapalıyken | Çağrılmaz | Çağrılır |
| Çağrılma sayısı | Piyasa ne kadar hareketliyse o kadar fazla | Neredeyse sabit |
| Uygun işlemler | Giriş/çıkış kararları | Periyodik toplama, saate bağlı işler |
| Başlıca dikkat noktası | Ağır işlem tik kaçırmaya yol açar | Yeni fiyat gelmese de çalışır |
Düşük frekanslı stratejilerde CPU'yu boşa harcamayan kod yapısı
H4 mumuna göre karar veren bir stratejide, tek bir mum süren 4 saat boyunca OnTick binlerce kez çağrılsa da karar için kullanılan kapanmış mumun değeri değişmez. Bu yüzden ağır işlemi yalnızca "mum değiştiğinde" çalıştıran şu yapıyı temel alıyoruz:
datetime g_lastBar = 0;
void OnTick()
{
datetime cur = iTime(_Symbol, PERIOD_H4, 0);
if(cur == g_lastBar) return; // aynı mum sürerken hiçbir şey yapma
g_lastBar = cur;
// burada kapanmış mumu (shift 1) kullanarak karar ver
}
İndikatör handle'larını OnInit içinde bir kez oluşturmak, OnTick içinde her seferinde yeniden oluşturmamak da önemlidir. OnTimer kullanıyorsanız, OnDeinit içinde EventKillTimer() çağırarak zamanlayıcıyı durdurun.
VPS üzerinde birden fazla grafiğe EA yüklediğinizde bu farklar CPU yükü olarak ortaya çıkar. VPS seçiminde dikkat edilecek noktaları VPS bilgileri sayfasında topladık.
EA seçen tarafın doğrulayabilecekleri
Kodun içini göremeseniz de aşağıdaki noktaları bir ölçüde kontrol edebilirsiniz.
- Açıklama ve parametreler: "Yalnızca yeni mumda karar ver" gibi bir ayar var mı
- VPS CPU kullanımı: Tek bir EA'yı kaldırdığınızda yük belirgin biçimde düşüyorsa, her tikte ağır işlem yapıyor olabilir
- Expert günlüğü: Aynı içerikli çıktılar her tikte art arda sıralanıyor mu
- Test sonuçları: Mum açılışında karar veren bir EA'nın sonuçları "Yalnızca açılış fiyatları" ile "Her tik" modunda büyük farklılık göstermemelidir. Büyük sapma varsa EA, mum içindeki fiyat hareketine de tepki veriyor demektir
EA'nın nasıl yükleneceği ve temel ayarlar için EA kurulum rehberi sayfasına bakın.
Sınırlar ve dikkat edilecekler
İşimize gelmeyen yönleri de yazalım.
- Mum içindeki risk izlenmez: Kararı yeni muma sınırlarsanız, mum içindeki ani hareketlere tepki verilmez. Zarar durdurma, emre bağlı stop ile korunacak şekilde tasarlanmazsa beklenmedik kayıplara izin vermiş olursunuz.
- Yeni mum gecikmesi: Yeni mum oluşsa bile, o mumun ilk tiki gelene kadar işlem çalışmaz. Hareketin az olduğu sembol ve saatlerde karar, mumun açılışından geç kalabilir.
- OnTimer'da test ile gerçek çalışma kolay ayrışır: Strateji testçisinde zamanlayıcı sanal zamanla çağrıldığından, gerçek hesaptaki aralıkla aynı olmayabilir.
- Hafif işlem performansı değiştirmez: CPU yükünü düşürmek kazanmayı kolaylaştırmaz. Stratejinin kalitesi ayrı bir konudur.
H4 mumlu EA'larda, örneğin işlem sayısı az olan ETHEREUM EA gibi stratejilerde bu tasarım farkları daha da zor anlaşılır. Yine de dışarıdan doğrulanabilecek alanın sınırı vardır. Kesin konuşabileceğimiz tek şey, kendi yazdığımız koddur.
Özet
- OnTick fiyat geldiğinde, OnTimer belirli aralıklarla çağrılır
- İşlem sürerken gelen olaylar sıraya alınmaz, atlanır. Ağır işlem kaçırmaya yol açar
- Düşük frekanslı stratejilerde "yalnızca yeni mumda karar ver" yapısı CPU'yu boşa harcamaz
- Tik olmayan saatlerde de çalışması gereken işler için OnTimer kullanın
- Mum içindeki riske karşı koruma emre bağlı stop ile sağlanır. Hafif işlem performansı artırmaz
- Diğer bilgiler için EA ve MT5 bilgi birikimi sayfasına bakın
İlgili
📧 Ücretsiz e-posta kursu (8 e-posta) + abonelere özel 13 MT5 göstergesi paketi
Kaydolduktan hemen sonra, 13 MT5 göstergemizi içeren abonelere özel paketin indirme bağlantısını alırsınız: derlenmiş dosyalar (.ex5), kaynak kod ve kurulum kılavuzu. Ardından algoritmik işlemin temelleri, backtestlerin doğru okunması ve aracı kurum seçimi üzerine 8 e-posta gelir (ilk 5 gün her gün bir tane, sonra kayıttan 7, 14 ve 30 gün sonra). MQL5 Market'te satılan sürümlerin her fiyat artışından önce de bildirim alırsınız (satışlara göre kademeli olarak yükselen lansman fiyatı). Bu sitede EA'larımız, ortak bir aracı kurumda gerçek hesapla ücretsizdir.
* Gizlilik kesinlikle korunur. İstediğiniz zaman abonelikten çıkabilirsiniz.
EA'lar veya Forex hakkında bir sorunuz mu var?
Sorunuzu Nattzy'nin trading forumunda paylaşabilirsiniz (ücretsiz kayıt). Bu yazının dışındaki sorular da olur — EA ayarları, aracı kurum seçimi ve daha fazlası.
Nattzy'de sor ↗