Fan sayfamıza katılın
- Görüntülemeler:
- 7
- Derecelendirme:
- Yayınlandı:
-
Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git
CRiskCalculator, Uzman Danışmanlar ve işlem araçları için risk yönetimi ve hacim hesaplamalarını gerçekleştirmek üzere tasarlanmış, nesne yönelimli bir MQL5 başlık kütüphanesidir . Belirli bir hesap risk tutarı ve pip cinsinden Stop Loss mesafesine göre parasal pip değerlerini ve kesin lot büyüklüklerini hesaplar .
Otomatik ticarette sık karşılaşılan bir sorun, çapraz döviz çiftlerinde pozisyon büyüklüğünün hesaplanmasıdır (örneğin, EUR cinsinden bir hesapta GBPJPY ticareti yapmak) . Bu sınıf, MetaTrader 5’in yerel sembol özelliklerini, çapraz döviz çiftleri için yedek bir dönüştürme sistemiyle birleştirerek bu sorunu çözer .
Temel Özellikler
-
Çift Motorlu Hesaplama: Birincil hesaplama yöntemi olarak yerel broker özelliklerini ( SYMBOL_TRADE_TICK_VALUE ve SYMBOL_TRADE_TICK_SIZE ) kullanır . Bu parametreler mevcut değilse veya broker tarafından başlatılmamışsa, otomatik olarak manuel baz/fiyat para birimi çıkarma ve dönüştürme oranı sorgularına geri döner .
-
Broker Parametre Normalleştirme: Hesaplanan hacimleri otomatik olarak SYMBOL_VOLUME_MIN ile SYMBOL_VOLUME_MAX arasında sınırlar ve broker reddi hatalarını (TRADE_RETCODE_INVALID_VOLUME gibi) önlemek için SYMBOL_VOLUME_STEP değerine uyarlar .
-
Temiz OOP Tasarımı: CRiskCalculator sınıfı içinde kapsüllenmiş olup küresel kapsamda karmaşıklık yaratmaz; bu sayede mevcut EA projelerine veya özel göstergelere kolayca eklenebilir .
-
Kendi Kendini Yapılandırma: Başlatma sırasında mevcut hesap temel para birimini (ACCOUNT_CURRENCY) otomatik olarak algılar .
Entegrasyon Örneği
Bu sınıfı Expert Advisor'ınızda veya komut dosyanızda kullanmak için, CRiskCalculator.mqh dosyasını MQL5/Include/ dizinine yerleştirin ve nesneyi oluşturun :
#include <CRiskCalculator.mqh> // Grafikte yüksek kontrastlı bir panel oluşturmaya yarayan yardımcı işlev void DrawChartPanel(const string &lines[]) { int x = 20, y = 30; int width = 280, lineHeight = 18; int height = (ArraySize(lines) * lineHeight) + 20; // 1. Arka Plan Kutusu Oluştur (Beyaz, siyah veya özel grafiklerde görünür) string bgName = "RiskCalc_BG"; if(ObjectFind(0, bgName) < 0) ObjectCreate(0, bgName, OBJ_RECTANGLE_LABEL, 0, 0, 0); ObjectSetInteger(0, bgName, OBJPROP_CORNER, CORNER_LEFT_UPPER); ObjectSetInteger(0, bgName, OBJPROP_XDISTANCE, x); ObjectSetInteger(0, bgName, OBJPROP_YDISTANCE, y); ObjectSetInteger(0, bgName, OBJPROP_XSIZE, width); ObjectSetInteger(0, bgName, OBJPROP_YSIZE, height); ObjectSetInteger(0, bgName, OBJPROP_BGCOLOR, clrDarkSlateGray); ObjectSetInteger(0, bgName, OBJPROP_BORDER_COLOR, clrDodgerBlue); ObjectSetInteger(0, bgName, OBJPROP_BORDER_TYPE, BORDER_FLAT); ObjectSetInteger(0, bgName, OBJPROP_SELECTABLE, false); // 2. Panel içindeki metin satırlarını görüntüle for(int i = 0; i < ArraySize(lines); i++) { string lblName = "RiskCalc_Lbl_" + IntegerToString(i); if(ObjectFind(0, lblName) < 0) ObjectCreate(0, lblName, OBJ_LABEL, 0, 0, 0); ObjectSetInteger(0, lblName, OBJPROP_CORNER, CORNER_LEFT_UPPER); ObjectSetInteger(0, lblName, OBJPROP_XDISTANCE, x + 12); ObjectSetInteger(0, lblName, OBJPROP_YDISTANCE, y + 10 + (i * lineHeight)); ObjectSetString(0, lblName, OBJPROP_TEXT, lines[i]); ObjectSetString(0, lblName, OBJPROP_FONT, "Segoe UI"); ObjectSetInteger(0, lblName, OBJPROP_FONTSIZE, 9); ObjectSetInteger(0, lblName, OBJPROP_COLOR, (i == 0) ? clrYellow : clrWhite); ObjectSetInteger(0, lblName, OBJPROP_SELECTABLE, false); } ChartRedraw(0); } void OnStart() { // Risk hesaplayıcısını başlat CRiskCalculator riskCalc; string symbol = _Symbol; double riskAmount = 100.0; // Hesap para birimindeki hedef risk double slPips = 25.0; // Pip cinsinden Zarar Durdurma mesafesi // Parametreleri hesapla double lotSize = riskCalc.CalculateLotSize(symbol, riskAmount, slPips); double pipValPerLot = riskCalc.GetPipValuePerLot(symbol); // Çıktı satırlarını hazırla string info[6]; info[0] = "=== RISK & POSITION CALCULATOR ==="; info[1] = "Symbol: " + symbol; info[2] = "Account Currency: " + AccountInfoString(ACCOUNT_CURRENCY); info[3] = "Target Risk: $" + DoubleToString(riskAmount, 2); info[4] = "Calculated Lot Size: " + DoubleToString(lotSize, 2) + " lots"; info[5] = "Pip Value (1 Lot): " + DoubleToString(pipValPerLot, 2); // Grafik üzerinde GUI panelini görüntüle DrawChartPanel(info); }

Sınıf Referansı
| Yöntem | Dönüş Türü | Açıklama |
| GetPipValuePerLot(string sembol) | double | Hesap para biriminde 1 standart lot için 1 pip'in parasal değerini döndürür . |
| GetPipValue(string sembol, double hacim) | double | Belirtilen hacim için 1 pip'in toplam parasal değerini döndürür . |
| CalculateLotSize(string sembol, double riskMiktarı, double slPips) | double | Hedef nakit riski ve Stop Loss için lot büyüklüğünü hesaplar ve pip cinsinden normalleştirir . |
MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
Orijinal kod: https://www.mql5.com/en/code/77130
Gueta Position Sizer: Risk and Lot Guard HUD
MT5 için gerçek zamanlı risk hesaplayıcı ve lot büyüklüğü koruma HUD’si. Hesap bakiyesi, hedef risk yüzdesi ve dinamik ATR Stop Loss değerlerine göre kesin lot büyüklüğünü hesaplar; ayrıca minimum lot aşımı uyarısı da sunar.
RJO Daily Pivot Levels Classic and Fibonacci for MT5
MetaTrader 5 için Klasik ve Fibonacci yöntemlerini kullanan Günlük Pivot Noktaları göstergesi. Önceki tamamlanmış günlük mum çubuğunu kullanarak PP, R1-R3 ve S1-S3 değerlerini gösterir.
Margin Risk Simulator
Shows the prices of the current symbol at which the account reaches margin call and stop out, with a what-if mode for extra volume, the maximum volume you can add and pending orders that trigger on the way.
GridPro Panel — open-source grid trading EA with on-chart control panel
open-source grid trading EA with on-chart control panel