Alım-satım robotlarını ücretsiz olarak nasıl indirebileceğinizi izleyin
Bizi Telegram üzerinde bulun!
Fan sayfamıza katılın
Kodu ilginç mi buldunuz?
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
Kodu beğendiniz mi? MetaTrader 5 terminalinde deneyin
Kütüphaneler

CSetupLedger: a per-setup win rate ledger for Expert Advisors - MetaTrader 5 için kütüphane

Ali Akbar
Ali Akbar
  • MQL5 Developer & Algorithmic Trading Specialist at  Freelance
  • Pakistan
  • 2106
Hi, I'm Ali. 24 years old, trading for around 5 years, and developing MQL5/MQL4 tools. I mainly work on automating manual strategies, fixing broken EA logic, and building clean indicators. I care more about clean architecture and proper risk management than over-complicated code. Always down to talk
| Turkish English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Italiano
Görüntülemeler:
11
Derecelendirme:
(1)
Yayınlandı:
MQL5 Freelance Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git

Neden yazdım?

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.

Size ne kazandırır?

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.

Kullanımı

#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.

Sizin için üstesinden geldiği üç tuzak

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.

Asla çiğnememeniz gereken tek kural

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.

Neler Yapmaz

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.

Gereksinimler

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 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

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 – 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 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.