Backtesting & doğrulama intermediate 12 dk okuma

MT5 parametre optimizasyonu: 116 kombinasyon, 252 çalışma, benimsediğimiz 0 ayar

MT5 parametre optimizasyonunu kendi strateji şablonlarımızdan sekizinde çalıştırdık ve hiçbirini benimsemedik. İşe yarayan kısım, her birinin nasıl başarısız olduğu: en büyük in-sample kazanan en derine düştü, bir tasarım tek bir out-of-sample kontrolünü geçip yine çöktü, ikisi ise uydurulduğu dönemde bile 1,0'ın üstüne çıkamadı. Yordam ve sizi en üst satırı yayımlamaktan alıkoyan okuma burada.

Yayınlandı · İncelendi

MetaTrader 5’te parametre optimizasyonu bir aramadır: her girdi için bir aralık tanımlarsınız, Strategy Tester her kombinasyonu çalıştırır ve seçtiğiniz ölçüte göre sıralanmış bir tablo verir. Zor kısım bunu çalıştırmak değildir. Zor kısım, tablonun her zaman bir en üst satırı olması ve o en üst satırın neredeyse her zaman yanlış olmasıdır.

Bu yazıdan elinize geçen şey, bir sayı değil bir karar üreten bir yordamdır: savunabileceğiniz bir arama, ikinci bir dönemle temasa dayanan bir geçiş gridi okuması ve bir durma kuralı.

Test koşulları
Deney kimliğiEXP-PARAM-SEARCH-OUTCOMES-001
Üst deneyEXP-BUILDER-TEMPLATE-BASELINE-001
Kaynakea-templates-manifest.jsbt.explored
Anakütle8 recorded searches of the 53 measured templates
Sembol / zaman dilimiUSDJPYm, M5 and H1
ModelM1 OHLC (Model=1), Exness MT5, measured 2026-06-18
Değiştirilen parametrelerstop loss and take profit only
Son doğrulama2026-08-25

Kurulum: grid, bölme ve veri

Aramanın çalıştırılmaya değer olup olmadığına üç ayar karar verir. Bunları yanlış kurarsanız geçiş gridi çok pahalı bir rastgele sayı üretecine dönüşür.

AlanNeredeNe ayarlanmalıNeden
OptimisationSettings sekmesiKüçük bir grid için Slow complete algorithmGenetik mod uzayı örnekler; 12–32 kombinasyon için hepsini görmeyi göze alabilirsiniz
Start / Step / StopInputs sekmesi, her girdi içinİki parametre, kaba adımlarİşaretlediğiniz her girdi gridi katlar. Bizimkiler ikisini oynattı
ForwardSettings sekmesi1/2, 1/3 veya 1/4Aralığı böler; böylece test cihazı arka yarıyı ayrı puanlar — aramayı bunun için çalıştırıyorsunuz
Optimisation criterionSettings sekmesiGride bakmadan önce karar verinTest cihazının geçişleri sıraladığı ölçüttür; dolayısıyla hangi satırın en üst satır olduğuna o karar verir
ModellingSettings sekmesiTaramak için kaba bir mod, sonra hayatta kalanı gerçek tickler üzerinde yeniden çalıştırınTarama modları adayları sıralamak içindir, yayımlanacak bir rakam için asla
PeriodSettings sekmesiBirden fazla rejimi içerecek kadar uzunTek bir trendin içindeki arama, o trende binmiş ayarı bulur

Ölçüt, bir varsayılana değil bir karara layıktır. Net kâra göre sıralamak en çok riski almış geçişi ödüllendirir, düşüş temelli bir ölçüye göre sıralamak ise en az işlem yapanı — toparlanma faktörü zaten bu iki cevap birbiriyle çeliştiği için vardır. Kendi aramalarımız test cihazının sıralamasına göre hiç değerlendirilmedi: hayatta kalan her aday üç ayrı pencerede kâr faktörü üzerinden puanlandı ve pencerelerden herhangi birinin içindeki sıralama hiçbir şeye karar vermedi.

Veri kalitesi önce gelir: kötü tickler üzerindeki bir arama boşlukları optimize eder. Kısa versiyonu şu: %90’ın altındaki bir modelleme kalitesi gün içi geçiş gridlerini kullanılamaz hale getirir ve ara değerlerle üretilmiş tick verisinden kurulmuş bir çalışma, barın içinde duran bir stopu çözemez.

  1. Önce varsayılan ayarlarla tek bir backtest çalıştırın ve raporu saklayın. Bir temel ölçüm olmadan geçiş gridinin geçeceği bir şey yoktur — MT5’te backtest nasıl yapılır o geçişi baştan sona anlatıyor.
  2. Settings sekmesinde Optimisation’ı küçük bir grid için tam geçişe alın ve Forward’ı 1/3 yapın; böylece test cihazı aralığın son üçte birini geride tutar.
  3. Inputs sekmesinde yalnızca gerçekten test ettiğiniz parametreleri işaretleyin ve her birine bir Start, Step ve Stop verin. Kaba adımlı iki girdi, ince adımlı dörtten iyidir.
  4. Start’a basın ve bitmesini bekleyin. Optimisation Results sekmesini bir tablo, Optimisation Graph’ı ise bir şekil olarak okuyun — tek bir sivri uç uyarıdır, plato ise bulgudur.
  5. Kazananı değil, hayatta kalanları alın ve her birini optimizasyon penceresinden önceki bir dönemde tek bir backtest olarak yeniden çalıştırın. Kümemizdeki her olumsuz kararı üreten adım budur ve insanların atladığı adım da budur.

Sonuçları okumak: bir değil, üç dönem

Aşağıda kayıtlı kümemizin tamamı var; her aramanın ulaştığı en iyi in-sample (örneklem içi) kâr faktörüne göre sıralandı. IS, ayarın üzerine uydurulduğu dönem; OOS geride tutulan dönem; Prior ise aramanın hiç görmediği daha erken bir pencere.

ŞablonTaranan gridEn iyi ISOOSPriorKarar
ichimoku12 kombinasyon × 3 pencere1,370,890,80no_robust_edge
ma_crossover20 + 12 kombinasyon, iki zaman dilimi1,230,89–0,940,78no_robust_edge
cci_level12 kombinasyon × 3 pencere1,071,050,92no_robust_edge
adx_trend12 kombinasyon × 3 pencere1,040,910,80no_robust_edge
breakout12 kombinasyon × 3 pencere1,040,79–0,890,64–0,84no_robust_edge
macd_signal12 kombinasyon × 3 pencere1,14–1,150,74–0,77no_robust_edge
rsi_reversal12 kombinasyon × 3 pencere0,91no_robust_edge
bb_bounce12 kombinasyon × 3 pencere0,91no_robust_edge

İlk sayısal sütunu yukarıdan aşağıya, sonra da yatay olarak okuyun. Kümedeki en büyük in-sample sonucu en büyük çöküşü üretti: ichimoku’nun 1,37’si önce 0,89’a, ardından 0,80’e düştü. Bu sıralama tesadüf değil — bir pencereye en iyi uyan ayar, yapısı gereği o pencerenin gürültüsünün en çoğunu emmiş olan ayardır.

Şimdi gerçekten en çok yaklaşan ayarı okuyun. Yukarıdaki tabloda yok, çünkü hiçbir şeyin en üst satırı olmadı: aynı ichimoku gridinde SL50/TP150 in-sample 1,18, out-of-sample 0,99 ve önceki pencerede 1,00 aldı. Üç dönem, hepsi aşağı yukarı düz. En yakın aday olarak kaydedildi ve yine de benimsenmedi, çünkü üç pencere boyunca başabaş kalmak bir avantaj değildir — dikkatle ölçülmüş bir avantaj yokluğudur.

Buna karşılık, bu aramaların geçmeye çalıştığı temel değerler 0,92 ile 1,03 arasında duruyor. Tek bir arama bile yayımlanmış bir varsayılanı değiştirmedi.

Kaçınılması gereken tuzaklar

Beşinin de altındaki başarısızlık biçimi aynı. Aşırı uyum, bir aramanın sonunda yaptığınız bir hata değildir — aramayı çalıştırmanın varsayılan sonucudur ve üç dönem disiplini, siz ona göre hareket etmeden önce onu görünür kılmak için vardır.

Geliştirin ve yineleyin: neyi, ne zaman değiştirmeli

Tek bir şeyi değiştirin, yeniden çalıştırın, sakladığınız temel ölçümle karşılaştırın. En az zaman harcatan sıra şudur:

  1. Gridi genişletmeden önce dönemi genişletin. Daha çok rejim, daha çok kombinasyondan iyidir. Tek bir trendi kapsayan bir arama, çözünürlüğü ne olursa olsun o trende binmiş ayarı bulur.
  2. Sonra adımları inceltmek yerine kabalaştırın. Bir sonuç yalnızca SL47’de var oluyorsa, yok demektir.
  3. Ancak ondan sonra bir parametre ekleyin. Bizimkiler bu noktaya hiç gelmedi, çünkü iki parametre zaten üç dönem barajını geçemedi.

Şunlardan biri doğru olduğunda durun ve hangisi olduğunu yazın:

  • Hayatta kalan bir aday üç dönemi de geçiyor. Yayımlayın ve taradığınız gridin tamamını kaydedin — yalnızca sakladığınız geçişi değil.
  • En iyi in-sample sonucu 1,0’ın altında. Elinizde gerçek bir cevap var: sekiz aramamızın ikisi burada bitti ve 36 değerlendirmenin ardından burada bitmek ucuzdur.
  • Hayatta kalanlar bir pencereyi geçip diğerinde kalmayı sürdürüyor. Kural rejime bağımlıdır. Daha çok arama, daha çok rejime bağımlı ayar üretir.
  • Önceki pencerenin neden “sayılmadığını” açıklamaya başladınız. İşte o an, aramanın bir test olmaktan çıktığı andır.

Bir aramanın dürüst kaydı, kapsadığınız aralık ve karar, ikisi birlikte demektir. Sekizimizin her biri böyle saklanıyor; bu yazının onlardan yazılabilmesinin tek sebebi de bu — saklanmış tek bir kazanan hiçbir şeyi kanıtlamazdı.

Sonraki adımlar: ileri test, sonra karar

Optimizasyon dört adımın ikincisidir. Sıra şudur: backtest → optimizasyon → walk-forward → demo; her biri yanlış olmanın farklı bir yolunu ortadan kaldırır.

  • Döngüyü, kontrol ettiğiniz bir şeyin üzerinde çalışın: Builder’da bir strateji kurun ve stopunu ile hedefini kendiniz tarayın, çünkü kendi tanımladığınız bir gridi dürüstçe okumak, devraldığınız birini okumaktan çok daha kolaydır.
  • Üç dönem kontrolünün resmî hali, bölmeyi tek bir yerde sabitlemek yerine ileriye yuvarlayan walk-forward analizidir.
  • Arama size ne geri verirse versin, onu geri verdiği raporun yine de okunması gerekir: MT5 backtest raporu nasıl okunur, her başlık rakamının gerçekte hangi anakütle hakkında bir iddia olduğunu ele alıyor.
  • Sayılar gerçekten hayatta kaldığında tamamlanmış bir kaydın neye benzediğini görmek isterseniz: yayımlanan EA’ların her biri eksiksiz kapanmış işlem listesini ve çalışma manifestosunu taşıyor.
  • Bütün bunları nasıl test ettiğimiz, nasıl puanladığımız ve nasıl kaydettiğimiz test metodolojimizde anlatılıyor.

Sıkça sorulan sorular

Aynı anda kaç parametreyi optimize etmeliyim?
Test cihazının izin verdiğinden daha azını. Kayıtlı kümemizdeki her arama tam olarak iki parametreyi oynattı — stop loss ile take profit — ve bunu 12 ile 32 kombinasyon arasında yaptı; sekiz şablonun hiçbiri de yayımlamaya razı olacağımız bir ayar üretmedi. Üçüncü ve dördüncü bir parametre eklemek bunu düzeltmez; gridi katlar ve test pencerenizdeki gürültüye uyan bir kombinasyon bulmayı çok daha kolaylaştırır. İki parametre üç dönemi birden atlatan bir sonuç üretemiyorsa sorun aramanın çözünürlüğünde değil, kuralın kendisindedir.
Bir optimizasyon geçişinde hangi kâr faktörünü aramalıyım?
Tek bir sayıya değil, üç sayıya bakın. Kümemizde en iyi in-sample kâr faktörü ichimoku şablonunda 1,37'ye ulaştı — ve aynı ayar out-of-sample 0,89, daha erken pencerede ise 0,80 aldı. Kullanılabilir olmaya en çok yaklaşan ayar ise in-sample tarafında çok daha sönüktü: 1,18; diğer iki dönemde 0,99 ve 1,00'ı korudu. Yine de benimsenmedi, çünkü üç pencerenin ikisinde başabaş kalmak bir avantaj değildir. Yüksek bir in-sample rakamı, ekrandaki en az bilgi taşıyan sayıdır.
Optimize edilmiş bir ayarı doğrulamak için tek bir out-of-sample testi yeterli mi?
Hayır ve nedenini gösteren bir vakamız var. macd_signal şablonu, out-of-sample 1,14 ile 1,15 arasına ulaşan bir ayar üretti — tek bir hold-out üzerinde temiz bir geçiş — ve ardından test döneminden önceki pencerede 0,74 ile 0,77 arasında kaldı. İkinci bir tasarım, cci_level, daha da ileri gitti: in-sample 1,07, out-of-sample 1,05 ve önceki pencerede 0,92. İki dönem de yetmedi. Alışılmış tek hold-out kuralıyla ikisi de yayımlanırdı.
Optimizasyon kârlı bir ayarı hiç bulamıyorsa bu ne anlama gelir?
Cevabınızı erken ve ucuza aldınız demektir; iyi sonuç budur. Sekiz aramamızın ikisi — rsi_reversal ve bb_bounce — uydurulduğu dönemde bile 1,0'ın üstünde bir kâr faktörü üretemedi; en iyi in-sample sonuçları 0,91 oldu. Üzerinde ayarlandığı veride çalıştırılamayan bir kuralı ne daha geniş bir grid ne de daha uzun bir çalışma kurtarır. Taradığınız aralığı ve kararı kaydedin, sonraki fikre geçin.