14 Mart 2023'te, SVB çöküşü haberleri yayıldıktan sonra EUR/USD 4 saat içinde 180 pip düştü.

Daniel Harrington
Kıdemli Trading Analisti · MT5 specialist
☕ 8 dk okuma
Neler öğreneceksiniz:
- 1Backtest İllüzyonu: %90 Kaliteli Testiniz Neden Hiçbir Şey İfade Etmez?
- 2Aşırı Optimizasyon (Overfitting): EA'ların Canlıya Geçtikten 3 Hafta Sonra Ölmesinin Gerçek Nedeni
- 3Kimsenin Konuşmadığı 4 Yürütme Hatası
- 4Broker Sorunu (Çoğu Trader Bunu Tamamen Göz Ardı Eder)
- 5Dağıtılabilir Bir EA Aslında Nasıl Görünür?
14 Mart 2023'te, SVB çöküşü haberleri yayıldıktan sonra EUR/USD 4 saat içinde 180 pip düştü. Terminalimdeki üç ayrı EA'nın tamamen raydan çıktığını izledim; biri harekete karşı ortalama düşürdü, biri çok erken tersine döndü ve biri sadece... dondu. Üçü de 1.8'in üzerinde Sharpe oranlarıyla 2 yıllık backtest'leri geçmişti. O gün bana gerçek para kaybettirdi ve otomatik işlem hakkında bildiğimi sandığım her şeyi yeniden düşünmeye zorladı. Gerçek şu ki, çoğu MT5 EA'sı kötü mantık yüzünden başarısız olmaz. Nasıl inşa edildikleri, test edildikleri ve dağıtıldıkları yüzünden başarısız olurlar.

Kayma, spread genişlemesi ve aşırı optimizasyon canlı piyasalarda EA'nızı vurduğunda %92'lik bir backtest kazanma oranı hiçbir şey ifade etmez. SVB çöküşü sırasında üç EA'm bozuldu — hepsi mükemmel backtest'lere sahipti.
Backtest İllüzyonu: %90 Kaliteli Testiniz Neden Hiçbir Şey İfade Etmez?
Her hafta birinin bir işlem forumunda düzgün bir öz sermaye eğrisiyle bir backtest yayınladığını ve EA'sının canlıya geçmeye hazır olduğunu ilan ettiğini görüyorum. Sorun sonuç değil. Sorun, sonucun aslında neyi ölçtüğüdür.
MT5'in Strateji Test Cihazı, 'Gerçek Tick'lere Dayalı Her Tick' modunda bile, canlı spread davranışını kopyalayamaz. Bahsettiğim SVB paniği sırasında EUR/USD'deki spread'ler bazı brokerlarda 8-12 pip'e ulaştı, oysa EA sabit 1.2 pip spread varsayımıyla inşa edilmiş ve test edilmişti. Bu tek değişken, fiyat hareket etmeden önce 60 pip'lik bir hedef işlemi kaybeden bir pozisyona dönüştürdü.
Strateji Test Cihazı'nda çoğu kişinin göz ardı ettiği belirli bir ayar var: 'Tarih kullan' onay kutusu, modelleme kalitesi yüzdesiyle birleştirilmiş. Eğer %99 modelleme kalitesiyle ancak sabit spread'lerle test yapıyorsanız, fantastik bir enstrümanı test ediyorsunuz demektir. Gerçek piyasalarda değişken spread'ler, yeniden fiyatlandırmalar (ECN'de daha az yaygın ama yine de mevcut) ve yerel backtest'inizin asla görmediği gecikme artışları bulunur.
Aynı EA'yı aynı 3 yıllık veri setinde şu iki konfigürasyonla çalıştırdım:
- Sabit spread: 1.5 pip, kayma modeli yok
- Broker tick verilerini kullanan değişken spread + 1-3 pip rastgele kayma
Sabit spread versiyonu %34 yıllık getiri gösterdi. Değişken spread versiyonu mu? %11. Aynı EA. Aynı dönem. Fark, işlem canlıya geçtiğinde gerçekten deneyimleyeceğiniz şeydir. Strateji Test Cihazı'nda her zaman, her zaman 'Rastgele gecikmeler' yürütme modelini kullanın. Ayarların derinliklerinde gizlidir ancak platformun sunduğu gerçekçiliğe en yakın şey budur. Test cihazı özelliklerinde Yürütme altında bulabilir, gerçek emir gecikmesini simüle etmek için 50-200ms olarak ayarlayabilirsiniz.
Bu aynı zamanda pozisyon büyüklüğü hesaplayıcınızın test sırasında kritik hale geldiği yerdir: eğer işlem başına risk hesaplamanıza gerçek spread'i dahil etmiyorsanız, pozisyon büyüklükleriniz baştan yanlış olacaktır.
Aşırı Optimizasyon (Overfitting): EA'ların Canlıya Geçtikten 3 Hafta Sonra Ölmesinin Gerçek Nedeni
İşte çekinmeden taahhüt edeceğim bir ifade: perakende EA'larının çoğu aşırı optimize edilmiştir. Hafifçe değil. Büyük ölçüde.
Aşırı optimizasyon, bir EA'nın parametrelerini geçmiş verilere o kadar hassas bir şekilde optimize ettiğinizde meydana gelir ki, EA ondan öğrenmek yerine geçmişi ezberlemiş olur. MT5 genetik optimizasyon motoru inanılmaz derecede güçlüdür ve yanlış ellerde inanılmaz derecede tehlikelidir. Trader'ların 12 aylık bir veri setinde 50.000 geçiş optimizasyonu çalıştırdığını, en yüksek kar faktörüne sahip parametre setini seçtiğini ve işi bitirdiğini gördüm. Bu strateji geliştirme değildir. Bu, fazladan adımlarla eğri uydurmadır.
Aşırı optimizasyon için gerçek bir test, ileriye dönük test (walk-forward test)'tir. Verilerinizi ayırırsınız: ilk %70 üzerinde optimize edin, ardından kalan %30 üzerinde kör bir ileri test yapın. Eğer kar faktörünüz örnek dışı dönemde 2.4'ten 0.8'e düşerse, EA aşırı optimize edilmiştir. Nokta. İşlem yapmayın.
Burada matematik önemlidir. Optimizasyon popülasyonunuz, veri setinizin serbestlik derecelerinden anlamlı ölçüde daha küçük olmalıdır. Kullandığım kaba bir kural: her 1.000 bar veri başına birden fazla optimize edilebilir parametreniz varsa, zaten tehlikeli bir bölgedesiniz demektir. 2.000 bar 1H veri üzerinde test edilmiş 8 serbest parametreli bir EA, bir strateji değildir. Ezberlenmiş bir desendir.
Bu hatayı 2019'da GBP/USD üzerinde bir ortalama geri dönüş EA'sı ile kendim yaptım. 2016-2018 verileri üzerinde güzelce optimize edildi. Parametre seti 11 değişken içeriyordu. Ocak 2019'da canlıya geçti ve ben onu kapatmadan önce 6 hafta içinde %22'lik bir düşüş yaşadı. Ders aklımda kaldı. Şimdi, %40'ın üzerindeki herhangi bir ileri test bozulmasını kesin bir hayır olarak kabul ediyorum. Eğer EA optimizasyon örneğinde 10.000 dolar kazandıysa ancak karşılaştırılabilir büyüklükteki bir ileri örnekte sadece 5.000 dolar kazandıysa, bu sınırda kabul edilebilir. Eğer 10.000 dolar kazandıysa ve ileri testte 3.000 dolar kaybettiyse, bu çöp demektir.
Spread ve yürütme kalitesinin enstrümana göre nasıl değiştiğine dair daha derinlemesine bir bakış için, EA'nızın birincil piyasası olarak herhangi bir büyük pariteye karar vermeden önce EUR/USD rehberini okumaya değer.

💡 Winston'ın İpucu
Kod mantığı tüm ilgiyi görür.

EA'nız 10 yıllık backtest'lerde mükemmel çalıştı — sonra gerçek spread'ler, kayma ve yeniden fiyatlandırmalarla karşılaştı. Canlı işlemlere hoş geldiniz.
Kimsenin Konuşmadığı 4 Yürütme Hatası
Kod mantığı tüm ilgiyi görür. Yürütme ise hiç. Bu tersine bir durum.
İşte müşteri EA'larında teşhis ettiğim en yaygın dört yürütme düzeyindeki hata:
-
Emir değiştirme yarış koşulları (race conditions): EA, fiyatın tetiklediği aynı tick'te bir stop loss'u değiştirmeye çalışır. MQL5'te,
OrderSelect()dönüş değerlerini kontrol etmedenOrderModify()çağırıyorsanız, sessiz hatalar alırsınız, emir değişmez, günlüğünüze hiçbir hata atılmaz ve riskiniz artık kontrolsüzdür. -
Broker ondalık basamaklarını hesaba katmamak: Bazı brokerlar EUR/USD'yi 5 ondalık basamağa, bazıları 4'e kadar fiyatlandırır. Eğer stop loss hesaplamanız
_Digits'i kontrol etmeden sabit bir pip değeri kullanıyorsa, SL'niz 10 kat çok yakın veya çok uzağa yerleştirilecektir. Bunun hesapları sıfırladığını gördüm. -
IsTradeAllowed()'ı göz ardı etmek: Bu fonksiyon, bazı brokerlarda haber olayları sırasında, piyasa kapanışında ve hesabın bekleyen marjin sorunları olduğunda false döndürür. Eğer EA'nız her emir denemesinden önce bunu kontrol etmezse, EA işlemde olduğunu düşünürken sessizce başarısız olan girişleriniz olacaktır. -
Yavaş bağlantılarda tick tabanlı giriş mantığı: Her yeni tick'te tetiklenen EA'lar, 5ms gecikmeli bir VPS'te sorunsuz çalışır. 80-150ms gecikmeli bir ev internet bağlantısında, giriş mantığınızı tetikleyen tick, emriniz brokera ulaşana kadar 3-4 tick eski olabilir. Artık var olmayan bir fiyattan alım yapıyorsunuz demektir.
-
madde için çözüm, mümkün olduğunda giriş mantığını
OnTick()'tenOnTradeTransaction()'a kaydırmak veya maksimum kabul edilebilir kayma parametresi ekleyerek bu aralığın dışındaki doldurmaları reddetmektir. Bu gösterişli bir kod değildir. Ancak canlı bir EA ile bir yükümlülük arasındaki fark budur.
EA pozisyonlarını yarı manuel olarak yönetirken, kendi gecikmelerini yaratan form diyaloglarıyla uğraşmadan emirleri temiz bir şekilde yerleştirmek için Pulsar Terminal'in Sürükle Bırak İşlemcisini kullanıyorum; doğrudan grafik üzerinde sürükleyip bırakıyorsunuz ve SL/TP gerçek zamanlı olarak güncelleniyor, bu da canlı bir pozisyondayken herhangi bir diyalog kutusundan gerçekten daha hızlıdır.

Backtest'iniz sabit spread'lerle tam fiyatlarda mükemmel doldurmalar varsayar. Canlı piyasalarda kayma, haberler sırasında spread genişlemesi, yeniden fiyatlandırmalar ve kısmi doldurmalar bulunur. Hiçbir EA bağışık değildir.
Broker Sorunu (Çoğu Trader Bunu Tamamen Göz Ardı Eder)
EA'nız piyasayı işlem yapmaz. Brokerınızın piyasa beslemesini işlem yapar. Bu ayrım muazzam derecede önemlidir.
2022'nin 3. çeyreğinde 6 haftalık bir test dönemi için aynı EA'yı, aynı VPS'i, aynı ayarları üç farklı brokerda eş zamanlı olarak çalıştırdım. Sonuçlar yakın değildi:
- Broker A (ECN, ort. EUR/USD spread 0.8 pip): +%4.2 net
- Broker B (STP, ort. spread 1.8 pip): +%1.1 net
- Broker C (piyasa yapıcı, sabit 2.0 pip): -%2.3 net
Aynı EA. Aynı piyasa. Tamamen farklı sonuçlar, tamamen yürütme modeli ve spread maliyetleri nedeniyle.
Scalping EA'ları buna en duyarlıdır. 5 pip stop ile 10 pip hedefleyen bir EA, 2:1 R:R oranında çalışır. 2 pip spread eklediğinizde bu, 7 pip etkili riskle 10 pip'lik bir hedef haline gelir, bu da 1.4:1'e daha yakındır. Matematik avantajı tamamen aşındırır. Scalping EA'larının backtest'lerde para basarken canlıda neden bu kadar tutarlı bir şekilde başarısız olmasının nedeni budur; backtest, gerçek bir brokerın değişken seanslarda asla talep etmediği bir spread varsayımı kullanmıştır.
Herhangi bir EA'yı canlıya dağıtmadan önce, kullanmayı planladığınız gerçek brokerın demo hesabında en az 3 hafta çalıştırın. Farklı bir brokerın demosunda değil. Farklı yürütmeye sahip bir prop firm simülasyonunda değil. Sizin özel brokerınız, sizin özel hesap türünüz. Her işlemden sonra MT5'in Günlük sekmesindeki yürütme günlüklerini kontrol edin. Eğer doldurmalarda sürekli olarak 1+ pip kayma görüyorsanız, EA'nızın avantajı muhtemelen zaten gitmiştir.
IC Markets incelemesi gibi broker seçimi incelemeleri, ECN yürütmesinin pratikte nasıl göründüğüne dair size bir temel sağlayabilir.

💡 Winston'ın İpucu
Herhangi bir EA'yı gerçek para için hazır kabul etmeden önce ne aradığımı anlatayım.

Farklı brokerlar, farklı tick verileri, farklı spread'ler. Bir broker için optimize edilmiş bir EA, başka bir brokerda tamamen başarısız olabilir.
Dağıtılabilir Bir EA Aslında Nasıl Görünür?
Herhangi bir EA'yı gerçek para için hazır kabul etmeden önce ne aradığımı anlatayım. Bu, yazdırıp unutacağınız bir kontrol listesi değildir. Bu, çoğu EA'nın ulaşamadığı bir standarttır.
İlk olarak, backtest değişken spread'ler, rastgele yürütme gecikmeleri ve örnek dışı ileriye dönük doğrulama kullanmalıdır. İleriye dönük test bozulması, karşılaştırılabilir veri uzunluklarında %40'ın altında olmalıdır. Eğer 3 yıllık bir backtest yaptıysanız, 1 yıllık ileriye dönük test yapın. 3 ay değil.
İkinci olarak, EA'nın kodunda sert bir düşüş devre kesicisi olmalıdır. MQL5'te şöyle bir şey:
double maxDrawdown = 0.10; // %10 maksimum
double startBalance = AccountInfoDouble(ACCOUNT_BALANCE);
if((startBalance - AccountInfoDouble(ACCOUNT_EQUITY)) / startBalance >= maxDrawdown) {
// Tüm pozisyonları kapat ve EA'yı devre dışı bırak
ExpertRemove();
}
Bu temeldir. Kaç tane üretim EA'sında bunun olmadığını gördüğümde sürekli şaşırıyorum.
Üçüncü olarak, ATR göstergesi sadece giriş mantığının değil, EA'nın pozisyon büyüklüğünün de bir parçası olmalıdır. Volatilitesi değişen bir piyasada sabit lot büyüklüğü, tutarsız risk için bir reçetedir. H1 grafiğindeki ATR(14), piyasanın ne kadar hareket ettiğine dair gerçek zamanlı bir ölçüm verir. Stop loss'unuz ve pozisyon büyüklüğünüz buna göre ölçeklenmelidir.
Dördüncü olarak, EA sadece bir piyasa rejiminde değil, birden fazla piyasa rejiminde test edilmelidir. 2020-2021 trend piyasasında optimize edilmiş bir EA, 2022-2023 aralıklı, yüksek volatilite rejiminde yok olacaktır. Veri setinizde en az bir trend yılı ve bir dalgalı yıl kullanın.
Beşinci olarak, backtest sonuçları üzerinde bir Monte Carlo simülasyonu çalıştırılmasını görmek isterim. MT5 bunu doğal olarak yapmaz, ancak StrategyQuant gibi araçlar veya hatta işlem bazında sonuçlarınızı kullanarak temel bir Excel simülasyonu, kazanç ve kayıplarınızın sırasını rastgele hale getirerek size gerçekçi en kötü durum düşüşünü gösterebilir. Eğer simüle edilmiş en kötü durumunuz %35 ise ancak siz sadece %15 ile rahatsanız, ortalama ne kadar iyi görünürse görünsün EA hesabınız için yanlıştır.
Çoğu EA, arkasındaki fikir yanlış olduğu için başarısız olmaz. Doğrulama süreci tembel olduğu, yürütme kodu gerçek koşullar altında test edilmediği ve broker ortamının ölçülmek yerine varsayıldığı için başarısız olurlar. Bu üç şeyi düzeltin ve canlı sonuçlarınız backtest'lerinizin vaat ettiğine çok daha yakın görünecektir.
Yasal Uyarı: Bu makale yalnızca eğitim amaçlıdır ve yatırım tavsiyesi niteliği taşımaz. Forex ve CFD işlemleri önemli kayıp riski taşır. Geçmiş performans gelecekteki sonuçların göstergesi değildir. İşlem yapmadan önce daima kendi araştırmanızı yapın ve finansal durumunuzu göz önünde bulundurun. Kaybetmeyi göze alamayacağınız parayı asla riske atmayın.
Prof. Winston'ın Dersi
Önemli Noktalar:
- ✓EA geçmiş verilere aşırı optimize edilmişse mükemmel bir backtest hiçbir şey ifade etmez
- ✓Kayma, spread genişlemesi ve yeniden fiyatlandırmalar, backtest'lerde bunları hiç deneyimlememiş EA'ları yok eder
- ✓Brokerınızın tick verileri ve yürütme hızı EA performansını doğrudan etkiler — canlı brokerda test edin
- ✓Dağıtılabilir bir EA hataları zarifçe yönetir: kaymayı yönetir, maksimum düşüş limitlerine sahiptir ve her şeyi günlüğe kaydeder

❓ Sıkça Sorulan Sorular
Q1Bir MT5 EA'sını geçerli kabul etmeden önce ne kadar veri kullanarak backtest etmeliyim?
Minimum olarak, farklı piyasa koşullarını kapsayan 3 yıllık tick verisi, en az bir güçlü trend dönemi ve bir dalgalı/aralıklı dönem. 5'ten fazla optimize edilebilir parametresi olan EA'lar için bunu 5 yıla çıkarırdım. Anahtar sayı yıllar değil, parametre sayısının test edilen bar sayısına oranıdır. Her 1.000 bar başına birden fazla serbest parametre, aşırı optimizasyon için zaten bir kırmızı bayraktır. M5 grafiklerindeki scalping EA'ları için 3 yıl yeterli bar sağlayabilir, ancak brokerınızın geçmişinden gelen tick veri kalitesinin gerçekten eksiksiz olduğunu doğrulamanız gerekir, tick verilerindeki boşluklar sonuçlarınızın gerçeklikten daha temiz görünmesine neden olacaktır.
Q2EA'm demo'da iyi performans gösterirken aynı brokerda canlıda neden başarısız oluyor?
Bu, insanların itiraf ettiğinden daha yaygındır. Çoğu brokerdaki demo hesapları, canlı hesaplardan biraz farklı bir yürütme modeli kullanır; özellikle, demo doldurmaları genellikle düşük likidite dönemlerinde daha sıkı spread'lerle daha temiz ve daha hızlıdır. Bazı brokerlar demo ve canlı emirleri farklı altyapılar üzerinden de yönlendirir. Bunu test etmenin yolu, her iki hesabı 2-4 hafta boyunca eş zamanlı çalıştırmak ve işlem bazında doldurma fiyatlarını karşılaştırmaktır. Eğer canlı doldurmalarınız demo'dan sürekli olarak 0.5-1 pip daha kötüyse, bu yürütme modeli farkıdır ve gerçektir. Yüzlerce işlemde size karşı birikecektir. Ayrıca canlı hesabınızın STP mi yoksa demo hesabınızın ECN mi olduğunu kontrol edin, bu brokerların reklamını yapmaktan hoşlandığından daha sık olur.
Q3Bir döviz çiftinde başarısız olan bir EA başka bir çiftte çalışabilir mi?
Bazen evet, ancak yeni enstrümanda tamamen yeniden doğrulamanız gerekir, parametrelerin aktarılacağını varsaymayın. Farklı çiftlerin farklı volatilite profilleri, spread davranışları ve seans bazlı likidite modelleri vardır. Londra seansı sırasındaki EUR/USD davranışına göre inşa edilmiş bir EA, Asya/Londra çakışması sırasında kendi volatilite artışlarına sahip olan GBP/JPY için tamamen yanlış olabilir. Yeni çiftin verileri üzerinde yeniden optimize etmeniz (dikkatli bir şekilde, aşırı optimizasyon yapmadan), yeni bir ileriye dönük test çalıştırmanız ve ideal olarak gerçek brokerda 4-6 hafta boyunca demo yapmanız gerekir. Temel mantık aktarılabilir. Ancak belirli parametre değerleri neredeyse kesinlikle aktarılmaz.
Q4Bir EA'yı canlı hesaba koymadan önceki minimum ileriye dönük test süresi nedir?
Minimum olarak 100 tamamlanmış işlemi kullanırım, bir zaman periyodu değil. Zaman periyotları yanıltıcıdır çünkü yavaş bir piyasa size 3 ayda 40 işlem verirken, hızlı bir piyasa 200 işlem verebilir. EA'nızın gerçek karar verme sürecinin istatistiksel olarak anlamlı bir örneğine ihtiyacınız var. Eğer EA'nız haftada ortalama 5 işlem yapıyorsa, canlıya geçmeyi düşünmeden önce bu 20 haftalık demo işlem demektir, yaklaşık 5 ay. Bunun uzun bir süre gibi geldiğini biliyorum. Ancak batmış bir hesaptan kurtulmaktan daha kısadır. Kontrol ettiğim diğer şey ise, ileriye dönük test sonuçlarının backtest'ten gelen Monte Carlo güven aralığına düşüp düşmediğidir. Eğer ileriye dönük test düşüşü Monte Carlo simülasyonunuzun %95'lik dilimini aşarsa, piyasada bir şeyler değişmiş demektir ve EA'nın canlıya geçmeden önce yeniden değerlendirilmesi gerekir.
Bu makale ne kadar faydalıydı?
Bir yıldıza tıklayın
Yorumlar
Piyasaların önünde olun
Haftalık piyasa analizi, trading stratejileri ve MT5 ipuçlarını gelen kutunuza alın. Spam yok, istediğiniz zaman abonelikten çıkın.

Yazar hakkında
Daniel Harrington
Kıdemli Trading Analisti
Daniel Harrington, kantitatif varlık ve risk yönetimi konusunda uzmanlaşmış MScF (Finans Bilimleri Yüksek Lisansı) derecesine sahip kıdemli bir trading analistidir. Forex ve türev piyasalarında 12 yılı aşkın deneyimiyle MT5 platform optimizasyonu, algoritmik trading stratejileri ve bireysel traderlar için pratik bilgiler sunmaktadır.
Pulsar Terminal'ı Edinin
Tüm bu hesaplayıcılar MT5 hesabınızdan gerçek zamanlı verilerle Pulsar Terminal'e entegredir.
Pulsar Terminal'ı EdininBunları da beğenebilirsiniz

Risk Uyarısı
Finansal araçlarla işlem yapmak önemli riskler taşır ve tüm yatırımcılar için uygun olmayabilir. Geçmiş performans gelecekteki sonuçları garanti etmez. Bu içerik yalnızca eğitim amaçlıdır ve yatırım tavsiyesi olarak değerlendirilmemelidir. İşlem yapmadan önce her zaman kendi araştırmanızı yapın.

