Alım-satım robotlarını ücretsiz olarak nasıl indirebileceğinizi izleyin
Bizi Facebook ü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
Görüntülemeler:
31
Derecelendirme:
(2)
Yayınlandı:
MQL5 Freelance Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git

Üçlü bariyerli etiketleme süreçleri, min_ret eşiği olarak sıklıkla keyfi bir sabit (%0,5–1,0) veya eski bir spread varsayımı kullanır. Gerçek gidiş-dönüş işlem maliyetinin altına ayarlanan bir eşik, sürecin maliyet kaynaklı gürültüyü işlem yapılabilir sinyal olarak etiketlemesine neden olur. Etiketlenen veri kümesi daha sonra kenar değerlerini sistematik olarak abartır ve bu etiketler üzerinde eğitilen herhangi bir model, gerçek piyasa yapısına değil, etiketleme şemasının bir artefaktına aşırı uyum sağlar.

TransactionCostCollector.mq5, bu sorunun veri toplama aşamasını çözen bağımsız bir komut dosyasıdır. Tarihsel spread dağılımından örnekler alır, ekli grafik sembolü için brokerın swap oranlarını ve komisyon tanılama bilgilerini okur ve her şeyi yapılandırılmış bir CSV dosyasına aktarır. CSV dosyası, tüm maliyetleri kesirli getirilere dönüştüren ve etiketleme çağrınız için enstrümana özgü min_ret eşiğini hesaplayan eşlik eden Python sınıfı TransactionCostModel tarafından kullanılır.

İşlem Maliyetleri Toplayıcısının Çıktısı

TransactionCostCollector çıktısının üç panelli gösterimi: seansa göre gün içi maliyet dağılımı (a), tam maliyet dağılımı (b) ve min_ret seçimi için yüzdelik eğri (c)

Komut Dosyası Neleri Toplar?

Komut dosyası, tek bir çalıştırmada tek bir sembol için üç maliyet bileşenini toplar:

  • Spread — istenen çubuk sayısı boyunca CopySpread() 'den alınan geçmiş dağılım. Ortalama, standart sapma ve yüzdelik dilimler (p25, p50, p75, p90, p95, p99) olarak raporlanır; tüm değerler pip cinsindendir. Ayrıca, seans etkilerini ortaya çıkarmak için günün UTC saatlerine göre de hesaplanır.
  • SwapSYMBOL_SWAP_LONG / SYMBOL_SWAP_SHORT'tan doğrudan okunan uzun ve kısa gecelik swap oranları; swap modu (puan, para birimi, faiz) ve üçlü swap ücretinin uygulandığı hafta içi günü de içerir.
  • Komisyon — yalnızca tanılama amaçlıdır. MQL5, tüm brokerlarda lot başına komisyonu doğrudan bir API çağrısı olarak sunmaz. Komut dosyası, ACCOUNT_COMMISSION_BLOCKED değerini ve tek bir referans işlemden lot başına oranının nasıl hesaplanacağını açıklayan bir notu kaydeder.

Giriş Parametreleri

Parametre Varsayılan Açıklama
InpBars 50000 Örneklem alınacak spread geçmişinin çubuk sayısı. Daha büyük bir değer, daha temsil edici bir dağılım sağlar ve seans varyasyonunu daha iyi yakalar. H1'de 50.000 çubuk yaklaşık 5,7 yılı, M15'te ise yaklaşık 1,4 yılı kapsar. Terminalde sembol için sınırlı geçmiş varsa bu değeri azaltın.
InpOutputFile (boş) Çıktı dosya adını geçersiz kılar. Boş bırakıldığında (varsayılan), dosya <SYMBOL>_costs.csv olarak adlandırılır — örneğin, EURUSD için EURUSD_costs.csv. Dosya, terminal veri klasöründeki MQL5\Files\ dizinine yazılır (FILE_WRITE | FILE_CSV modu).

CSV Çıktı Biçimi

CSV, dört sütunlu bir yapı kullanır: bölüm, anahtar, değer, birim. Bölümler şunlardır:

  • symbol_properties — nokta boyutu, pip faktörü, tick değeri, sözleşme boyutu, para birimi tanımlayıcıları.
  • swap — uzun/kısa oranlar, swap modu, üçlü swap günleri.
  • commission — teşhis değeri ve türetme notu.
  • spread_summary — örneklemdeki tüm çubuklar için ortalama, standart sapma ve yüzdelik dilimler.
  • spread_by_hour — günün her saati için ortalama spread (pip), saat başına bir satır (UTC, broker saati).

Çalıştırma

  1. TransactionCostCollector.mq5 dosyasını MQL5\Scripts\Downloads\ klasörüne yerleştirin ve MetaEditor'da derleyin.
  2. Hedef sembolün herhangi bir zaman dilimindeki grafiğini açın. Zaman dilimi, spread dağılımının hangi çubuk türünden örnekleneceğini belirler — ayrıntı düzeyi ve geçmiş uzunluğu arasında makul bir denge sağlayan H1 önerilir.
  3. Script'i grafiğin üzerine sürükleyin. Giriş diyalog penceresi açılacaktır ( #property script_show_inputs ile kontrol edilir). InpBars'ı istediğiniz örnek sayısına ayarlayın ve Tamam'a tıklayın.
  4. Çıktı CSV dosyasını terminal veri klasöründeki MQL5\Files\ klasöründen alın (MetaTrader 5'teDosya → Veri Klasörünü Aç ).

Python ile entegrasyon

Eşlik eden Python sınıfı TransactionCostModel, CSV dosyasını yükler ve üçlü bariyer etiketlemesi için min_ret değerini hesaplar:

from afml.transaction_costs import load_cost_model
import pandas as pd

model = load_cost_model(
    csv_path           = "EURUSD_costs.csv",
    spread_percentile  = "p95_pips",   # muhafazakar
    slippage_pips      = 0.4,
    commission_per_lot = 7.0,          # referans işlemden
    lot_size           = 0.01,
)

close = pd.read_parquet("EURUSD_H1.parquet")["close"]
min_ret = model.min_ret_for_symbol(
    price_series    = close,
    holding_days    = 1.0,
    cost_multiplier = 1.5,   # 1,5 kat kâr-zarar eşiği
)
print(f"min_ret = {min_ret:.6f}")

Komisyonla İlgili Notlar

Lot başına komisyon oranı, tüm brokerlarda program yoluyla okunamaz. Önerilen prosedür şudur: bir demo hesabında tam olarak 1,0 standart lotluk bir referans işlem açın, işlem açıldıktan hemen sonra terminalden ACCOUNT_COMMISSION_BLOCKED değerini okuyun, ardından işlemi kapatın. Engellenen değer 1,0’a bölündüğünde lot başına oran elde edilir. Hesap ekstresiyle karşılaştırarak doğrulayın. Bu işlem, her broker ilişkisi için bir kez yapılmalıdır.

Neden Ortalama Değil de p95?

Ortalama spread, Asya seansı, gece konsolidasyonu ve düzenli trend koşulları gibi sakin dönemlerden etkilenir. Oysa strateji girişleri genellikle en yüksek belirsizliğin yaşandığı anlarla çakışır (bu, modellerin sinyal ürettiği anlardır). Min_ret girdisi olarak 95. persentil spread'i kullanmak, ortalama piyasa koşulları yerine tipik giriş koşullarındaki maliyet ortamını hesaba katar.

Kaynakça ve İlgili Makale

MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
Orijinal kod: https://www.mql5.com/en/code/73173

FVG Imbalance Marker Helper FVG Imbalance Marker Helper

A small educational MetaTrader 5 indicator that marks simple three-candle bullish and bearish Fair Value Gaps on the chart.

Confirmed Swing Points Helper Confirmed Swing Points Helper

A small educational MetaTrader 5 indicator that marks confirmed swing highs and lows and labels market structure as HH, HL, LH and LL.

Drawdown DNA Analyzer Drawdown DNA Analyzer

A native MQL5 script that analyzes the structure of an account's drawdowns, not just the single "maximum drawdown" figure. It reads a daily equity curve (Date,DailyPnL CSV), rebuilds the underwater curve, and splits it into individual drawdown episodes with their depth, duration and recovery time. It then reports the Ulcer Index, Pain Index, Recovery Factor and time spent underwater, and combines them into a single resilience score (A+ to F) with recommendations, printed in the Experts tab. No external libraries; if no file is found it generates a sample curve so it runs out of the box.

Profit Concentration Analyzer Profit Concentration Analyzer

A native MQL5 script that measures how concentrated a strategy's profit is — whether the edge is broad or rests on a few lucky trades. It reads a per-trade CSV (Date,Profit) and reports the share of net profit from the largest trades, the Gini coefficient of the winners, a concentration profile, a survival test that removes the best few trades and recomputes net profit and profit factor, and the largest single day versus a configurable consistency limit, combined into a concentration-and-consistency score (A+ to F) with recommendations. If no file is found it generates a sample set, so it runs out of the box. No external libraries, no Python, no AI. The helper ExportTrades.mq5 writes the file from your trade history.