Scalper'ım iki farklı kurulumda işlem yapıyor: bir yükseliş emir bloğu ve bunun düşüş eğilimli karşılığı. Strateji Test Aracı, her ikisi için de tek bir kâr faktörü gösterdi. Her iki kurulum için de eşit şekilde geçerli olacak girdileri ayarlamak için iki hafta harcadım.
Ardından işlemleri kurulum türüne göre ayırdım. USDCAD M1'de yükseliş tarafı, zararın yüzde 88'ine neden olmuştu. Düşüş tarafı ise neredeyse başabaştı. İhtiyacım olan rakam, başından beri kendi işlem geçmişimde duruyordu. Sadece onu okumamın bir yolu yoktu.
Bu sınıf ise onu okuyor.
Kurulum türlerinizi başlangıçta bir kez kaydettirirsiniz. Her birine bir kimlik numarası verilir. Bu kimlik numarası sihirli sayı tabanınıza eklenir, böylece her sipariş gönderildiği andan itibaren kendi kurulum etiketini taşır.
Bundan sonra defter, her kurulum için üç soruyu yanıtlar: Kaç kazanç ve kaç kayıp var? Takas ve komisyon düşüldükten sonra net sonuç ne oldu? Ve kazanç oranı henüz güvenilirlik seviyesine ulaştı mı?
Bu son soru, benim bunu geliştirmemin asıl nedenidir. Üç işlemden üç kazanç, yüzde 100 kazanç oranı demektir. Bu, yüzde 44 oranında yazı gelen bir madalyonun on iki denemede yaklaşık bir kez başardığı şeydir. Dolayısıyla sınıf, ham oranın yanına bir Wilson skoru alt sınırı yazdırır ve bunu, ödül oranınızın gerektirdiği başabaş kazanç oranıyla karşılaştırır. 1:2 oranında bu eşik yüzde 33,3’tür. Bir kurulum, en kötümser oran bile bu eşiği aştığında güvenilir olarak değerlendirilir. Başlangıçta her şey “henüz güvenilir değil” olarak görünür. Yirmi işlem yaptığınızda bu, dürüst cevaptır.
#include <CSetupLedger.mqh> CSetupLedger ledger; int SETUP_BULL, SETUP_BEAR; int OnInit() { ledger.Init(552001); // sihirli üssün SETUP_BULL = ledger.Register("Bullish OB"); // id 0 -> sihirli sayı 552001 SETUP_BEAR = ledger.Register("Bearish OB"); // id 1 -> sihirli sayı 552002 ledger.RebuildFromHistory(); // hesaptan kaydı oku Print(ledger.Report(2.0)); // 2,0 = risk-getiri oranı return INIT_SUCCEEDED; }
Emir gönderilmeden önce bu kurulumun sonuçlarını işleme uygulayın.
trade.SetExpertMagicNumber((ulong)ledger.MagicFor(SETUP_BULL));Pozisyon kapandığında kapatın.
double net = 0.0; if(ledger.ProcessClosedPosition(posId, setupId, net)) Print(ledger.Report(2.0));
Report() tek bir metin bloğu döndürür . Bu işlev, Print () ve Comment () gibi çalışır. İşte USDCAD M1'de yaptığım gerçek bir işlem örneği.
Per-setup ledger (breakeven win rate at 1:2.0 = 33.3%) --------------------------------------------------------------------- Bullish OB 235/529 raw 30.8% wilson 27.6% net -5819.94 not yet trusted Bearish OB 191/393 raw 32.7% wilson 29.0% net -811.42 not yet trusted

Aynı rapor, Comment () işlevine aktarıldığında EA çalışırken grafiğin köşesinde görüntülenir . Çubuk üzerindeki kutu, giriş etiketidir. İşlem yapılmadan önce o kurulumun kaydını gösterir. Burada panelde 4 kazanç ve 6 kayıp yazıyor. Ham oran yüzde 40. Wilson alt sınırı yüzde 16,8. Dolayısıyla on işlemde sonuç hâlâ "henüz güvenilir değil" olarak görünüyor; bu sütunun da asıl amacı budur.
Sayılar, kayıplara karşı kazanılan işlem sayısını gösterir. Yani yükseliş kurulumunda 764 işlem ve düşüş kurulumunda 584 işlem vardır. Her iki net sonuç da, test cihazının kendi net kaybına sent bazında eklenir. Bu dahil olmak üzere herhangi bir kayıt defterine güvenmeden önce, kendi çıktınızda bu mutabakatı yapın. Her bir formasyon başına yapılan işlemlerin toplamı, testçinin işlem sayısına uymuyorsa, pozisyonlar yanlış sayılmış demektir ve o çizginin üzerindeki her yüzde değersizdir.
Bunun elle yazılmış versiyonlarında genellikle bu hatalar yapılır. Bu ders açılmadan önce ben de bunlardan ikisini yanlış yapmıştım.
İşlemler, ticaret işlemleriyle aynı şey değildir. MT5 geçmişi, işlemlerin bir listesidir. Üç aşamada kapatılan bir pozisyon, üç adet OUT işlemi oluşturur. İşlemleri döngüye alın ve kârlı olan her birini bir kazanç olarak sayın; böylece tek bir kârlı ticaret işlemi, üç kazanç olarak sayılır. Defter, DEAL_POSITION_ID'ye göre toplama yapar , bu nedenle kısmi kapatma da yine bir kez sayılır.
DEAL_PROFIT sonuç değildir . Swap ve komisyon kendi alanlarında yer alır. Bir swing EA’sında bu fark önemsizdir. Bir scalper’da ise bu fark, kurulumun para kazanıp kazanmadığını belirler. 3 USD fiyat hareketi kazanan ve 4 USD komisyon ödeyen bir işlem, zarardır. Defter, kâr artı swap artı komisyonu toplar.
POSITION_TICKET , POSITION_IDENTIFIER değildir . HistorySelectByPosition () işlevi tanımlayıcıyı ister . Netleştirme hesabında bu ikisi çoğu zaman aynı değeri taşır; dolayısıyla bir hedging hesabı veya kısmi kapatma işlemiyle birbirlerinden ayrılana kadar bu hata fark edilmez. Bu durumda seçim boş döner ve hiçbir bilgi vermez.
Kayıt sırası bir veri formatıdır. Kurulum kimliği, halihazırda kapatılmış işlemlerin sihirli sayıları dışında hiçbir yerde bulunmaz. Gelecek ay listenin ortasına yeni bir kurulum eklediğinizde, eskiden o kimliği taşıyan kurulumun tüm geçmiş işlemleri sessizce yeni kurulumun işlemleri haline gelir. Hiçbir şey hata vermez. O andan itibaren sayılar basitçe yanlış olur.
Yeni kurulumlar listenin sonuna eklenir. Bir kurulumu kullanımdan kaldırırsanız, Register () çağrısını olduğu yerde bırakın, böylece kimlik numarası rezerve edilmiş kalır. Kayıt bloğunun üzerine bunu belirten kısa bir açıklama eklemek faydalı olacaktır.
Her pozisyon için tek bir kayıt tutar. Aynı netleme pozisyonuna ikinci bir giriş ekleyen bir EA, tüm işlemi ilk kurulumun hesabına yazacaktır. Sizin EA’nız da bunu yapıyorsa, bunun yerine işlem başına bir modele ihtiyaç duyar.
En fazla on altı kurulum yapılabilir. Daha fazlasına ihtiyacınız varsa SETUP_LEDGER_MAX değerini artırın. Tek bir hesapta on altı kurulum olması, on altı küçük örneklem anlamına gelir ve Wilson sütunu size bunu gösterecektir.
Net sonucu tam olarak sıfır olan işlemler zarar olarak sayılır. Sıfır sonuçlu işlemler nadirdir ve bunları kazanç olarak değerlendirmek daha olumluya kaçan bir hatadır.
ProcessClosedPosition(), HistorySelectByPosition () işlevini çağırdığı için genel geçmiş seçimini değiştirir . Kendi geçmiş döngünüzün ortasında, daha sonra yeniden seçim yapmadan bu işlevi çağırmayın.
Ayrıca bu işlev, fikrinizi değil, çıkışlarınızı değerlendirir. Yönü doğru okuyan ancak stop seviyesini kötü belirleyen bir kurulum, kötü bir kurulum olarak değerlendirilir. Yarın neyle işlem yapacağınıza karar vermek için bu, tartışmasız doğru cevaptır. Ancak bu, fikrin sağlam olup olmadığını değerlendirmekle aynı şey değildir.
MetaTrader 5. Standart kütüphane dışında herhangi bir bağımlılık yoktur. Dosyayı MQL5/Include/ klasörüne bırakın ve dahil edin. 6190 sürümünde yazılmış ve test edilmiştir.
Son bir şey daha. Tek bir örneklem üzerinde oluşturulmuş bir defter, o örneklemi ölçer. Bir stratejiyi doğrulamaz. Hiç ayarlamadığınız bir dönem üzerinde örneklem dışı test yapmak ayrı bir iştir ve bu sınıf bunun yerini almaz.
— Ali Rajput
MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
Orijinal kod: https://www.mql5.com/en/code/77531
Session Candle Counter: candles numbered from the cash open, DST aware
Frankfurt, Londra, New York veya Tokyo’daki nakit açılış saatinden itibaren, mevcut işlem gününün her bir mum çubuğuna bir numara atanır. Referans saati, borsanın yerel saatinden otomatik yaz saati uygulamasına göre aracı kurum sunucusunun saatine dönüştürülür; bu nedenle, açılıştan sonraki ilk mum çubuğu hem yazın hem de kışın her zaman bir numara olarak kabul edilir.
Spread Monitor
Spread Monitor is an MQL5 Expert Advisor that draws a colour-coded panel on the chart. The panel shows the current spread of the attached symbol in points, along with the average, minimum, and maximum over a rolling history. It also counts how many stored samples exceeded a warning level, and turns the status row red when the current spread is above that level. The utility does not place orders. Inputs control the warning level, the history size, the refresh interval, and the panel position. Panel objects are removed when the EA is detached.
Line Master – Fast and Slow Trend Lines with Trend Change Signals
Line Master is a trend-following indicator for MetaTrader 5 that displays fast and slow dynamic price lines to help traders identify market direction and potential trend changes. Blue represents a bullish trend, while red represents a bearish trend. Visual markers highlight changes in the indicator's trend state. The indicator includes adjustable Fast Length and Slow Length parameters, allowing traders to customize its sensitivity. It can be used on forex, gold (XAUUSD), indices, and other MT5-supported markets. For better results, combine its signals with price action, support and resistance levels, and proper risk management. Signals are not guaranteed and should be confirmed before entering a trade.
PropGuard Lite - daily and max loss guard for prop firm accounts
Risk tool for prop firm accounts: closes all positions and blocks new trades when the daily loss or max loss limit is reached. Never opens trades on a live chart.