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
Komut dosyaları

Broker Spec Inspector - MetaTrader 5 için komut dosyası

Seckin Erkut
Seckin Erkut
Algo Trading Systems Developer. I develop strategies and portfolios not by hypes but from solid academic literature.

I put my money where my mouth is, be sure to check the performance of my EAs through my signals.
| Turkish English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Italiano
Görüntülemeler:
13
Derecelendirme:
(2)
Yayınlandı:
Güncellendi:
MQL5 Freelance Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git
İşlemlerini otomatikleştiren her yatırımcı, er ya da geç 130 numaralı “Geçersiz stop emirleri” hatasıyla ya da hiç görünmeyen bir emirle karşılaşır. Genellikle ilk tepki, EA’yı suçlamaktır. Çoğu zaman EA’da bir sorun yoktur ve sunucu, sözleşme limitini uygulamaktadır.
uygulamaktadır: stop seviyesi, donma seviyesi veya pozisyon boyutlandırmanızın uymadığı minimum lot adımı gibi. Bu limitler sembol ve broker başına farklılık gösterir ve
değişebilir. Bu komut dosyası bunları görüntüler.
Herhangi bir grafiğe yükleyin. Yalnızca teknik özellikleri okur — hiçbir şeyi açmaz, değiştirmez veya kapatmaz ve algoritmik ticaretin etkinleştirilmesine gerek yoktur. Virgülle ayrılmış bir sembol listesi girin veya giriş alanını boş bırakın; program, Piyasa İzleme'deki seçiminizi tarar.

NE BASAR

Her bir enstrüman için: rakamlar, nokta, tik boyutu ve değeri, sözleşme büyüklüğü, minimum / adım / maksimum lot, spread ve dalgalı olup olmadığı, işlem modu, uzun ve kısa swaplar ile mevcut serbest marjınıza göre hesaplanan bir minimum lot için gerekli marj. Ardından asıl soruyu yanıtlayan kısım:

Aracı Kurum Uyarısı

--- XAUUSD (bid 4402.15 / ask 4402.63) ---------------------
stops level 350 pts | freeze level 0 pts | EFFECTIVE band 351 pts
VERDICT: a stop/pending placed 100 pts from price would be REJECTED as 'Invalid price' (band is 351 pts)
buy at ask 4402.63: you asked SL 4401.63 -> nearest legal SL 4399.12 (moved out)
En son satır, en yararlı olanıdır. Bu satır, sadece bu sembolde 100 puanlık bir stop emrinin başarısız olduğunu söylemekle kalmaz; bunun yerine sunucunun kabul edeceği kesin seviyeyi de belirtir.
KURAL
İki ayrı sınır, bir stop emrini reddedebilir ve bunlardan yalnızca birini kontrol eden araçlar, brokerların yarısında yanlış sonuç verir:
double MinStopDistance(const string sym)
{
long stops = SymbolInfoInteger(sym, SYMBOL_TRADE_STOPS_LEVEL);
long freeze = SymbolInfoInteger(sym, SYMBOL_TRADE_FREEZE_LEVEL);
long band = (stops > freeze ? stops : freeze) + 1;
return band * SymbolInfoDouble(sym, SYMBOL_POINT);
}

Bu dört satırda üç karar yer almaktadır.
"band" değeri, iki sınırdan daha BÜYÜK olanıdır; çünkü bazı sunucular donma değerini sıfırda bırakıp durdurma değerlerini uygular, diğerleri ise tam tersini yapar. Hangisi daha büyükse onu seçmek, hangi tür sunucuda olduğunuzu bilmeden her iki durumu da kapsar.
Bir puan eklenir, çünkü bandın tam kenarında yer alan bir seviye hala birçok sunucu tarafından reddedilmektedir. Belgelenen kural "daha yakın" iken, uygulanan kural genellikle "daha yakın veya eşit"tir ve bir puanın hiçbir maliyeti yoktur.
Sonuç, puan olarak değil, PRICE birimleri cinsinden döndürülür. Bu, gerçek stop seviyesini belirlerken ihtiyacınız olan şeydir ve 5 basamaklı sembollerde on katlık bir hataya neden olan puan ile pip arasındaki karışıklığı ortadan kaldırır.
KENDİ EA'NIZDA KULLANIN
Kopyalamaya değer olan ikinci işlev budur. Bu işlev, istediğiniz stop seviyesini alır ve sunucunun kabul edeceği, fiyatın doğru tarafında bulunan en yakın stop seviyesini döndürür:
double LegalStopLoss(const string sym, const bool isBuy,
const double price, const double wanted)
{
double dist = MinStopDistance(sym);
int digits = (int)SymbolInfoInteger(sym, SYMBOL_DIGITS);
double sl = wanted;
if(isBuy) { if(price - sl < dist) sl = price - dist; }
else { if(sl - price < dist) sl = price + dist; }
return NormalizeDouble(sl, digits);
}

Zaten yasal olan bir durak değişmeden geri gelir, bu nedenle her durağı bu duraktan geçirecek şekilde rota oluşturmak güvenlidir. Mevcut hesaplamanızı sarmak için tek bir satır yeterlidir:
double sl = LegalStopLoss(_Symbol, true, ask, ask - atr * 1.5);
Bu durum, dalgalanmanın bant genişliğine göre yüksek olduğu durumlarda en önemli hale gelir. EURUSD için uygun olan bir ATR stop seviyesi, sakin bir seans sırasında altın veya bir endeks için bant sınırları içine düşebilir — işte tam da bu anda reddedilme sizi şaşırtır, çünkü aynı kod dün işe yaramıştı.

ÇIKTININ OKUNMASI İLE İLGİLİ NOTLAR

Geniş bir bant genişliği, brokerın zorluk çıkardığı anlamına gelmez. Bu durum genellikle sembolün fiyatlandırılma ve riskten korunma şeklini yansıtır ve bir sunucuda çalışan bir scalping EA'sının, tek bir kod satırı değiştirilmeden başka bir sunucuda çalışmaz hale gelmesinin sebebidir.
Geçiş yapmadan önce karşılaştırın. CSV dışa aktarma özelliği varsayılan olarak etkindir ve MQL5\Files klasörüne BrokerSpecs.csv dosyasını yazar; bu dosyada her sembol için bir satır bulunur ve her satırda bant, minimum stop mesafesi ve en yakın geçerli seviye bilgileri yer alır. Komut dosyasını iki brokerda çalıştırın, dosyaları yan yana koyun; bir haftalık hata ayıklama süresine mal olabilecek farklılıklar bir dakika içinde gözünüzün önüne serilir.
Ölçeklendirmeden önce marjınızı kontrol edin. Marj sütunu, bir minimum lot için geçerlidir. Eğer bu rakam halihazırda serbest marjınıza yakınsa, pozisyon büyüklüğünüzde henüz hesaplamadığınız bir sınır vardır.

Semboller Market Watch'ta bulunmalı ve en az bir tick almış olmalıdır. Bir sembol için tick verisi yoksa, grafiğini bir kez açıp işlemi tekrar çalıştırın.


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

Risk Guard — risk-based lot size, daily loss lock, max positions, oversized-trade trim, forced stop-loss Risk Guard — risk-based lot size, daily loss lock, max positions, oversized-trade trim, forced stop-loss

Enforces your own risk rules on every position, whether opened by hand or by another EA: shows the lot size that matches your risk, locks the account for the day after a set loss, caps open positions, trims positions that risk more than allowed, and adds a stop-loss to any position opened without one.

Prop-Firm Equity Guard - daily and max drawdown protection (FTMO-style) Prop-Firm Equity Guard - daily and max drawdown protection (FTMO-style)

Strict risk management utility for prop-firm challenges. Automatically monitors your entire account to prevent daily and max drawdown failures. It acts as a safety buffer against spread spikes and revenge trading by instantly closing all positions and pending orders before your evaluation is terminated.

Custom Simple Moving Average Custom Simple Moving Average

Eğime göre renk değiştiren ve fiyat ile ortalamanın kesişme noktalarını oklarla işaretleyen iki aşamalı uyarlanabilir hareketli ortalama (temel ortalama + ikincil düzeltme).

Smart Loss Exit — early exit for losing positions (ATR adverse excursion, time in trade, EMA invalidation, RSI, money cap) with a CSV journal Smart Loss Exit — early exit for losing positions (ATR adverse excursion, time in trade, EMA invalidation, RSI, money cap) with a CSV journal

Closes losing positions early, before the full stop-loss, when a rule says the trade is not coming back: adverse move beyond N x ATR, too long in loss, EMA trend flipped, RSI against the position, or a money cap. Never touches a position in profit. Observe-only mode journals what would be closed without closing anything. Every exit is written to CSV with the rule, the age and the maximum adverse excursion, so the rules can be tuned from data.