RiskGuard Toolkit Library
- Bibliotecas
-
AL MOOSAWI ABDULLAH JAFFER BAQER
To trade successfully we need to go through the proven path that others had gone and reached!
Here are 17 quotes from such successful investors:
1- Limit your size in any position so that fear does not become the prevailing instinct guiding your judgment.
Joe Vidich - Versión: 1.1
- Activaciones: 5
| Biblioteca RiskGuard Toolkit para desarrolladores de MQL5 - versión 1.01 |
|---|
|
Deja de reescribir el mismo código de riesgo en cada asesor experto
Todo EA que se precie necesita los mismos elementos, aburridos pero fundamentales: un tamaño de lote que se ajuste al riesgo que pretendes asumir, un stop que respete la volatilidad, un filtro de spread, una ventana de sesión, un límite de pérdidas diario y una comprobación previa a la operación para garantizar que la orden será realmente aceptada. Escribir esto de nuevo para cada proyecto supone una pérdida de horas, y los pequeños errores (un lote no normalizado al paso de volumen, un stop dentro del nivel de los stops, una comprobación de margen olvidada) son precisamente lo que hace que falle la validación de mercado o que las cuentas reales se comporten de forma anómala.
RiskGuard Toolkit es una biblioteca MQL5 compacta y compilada que te ofrece todo esto en 16 funciones probadas. Importa la biblioteca una vez y utiliza lo que necesites: desde el cálculo de un solo lote hasta una comprobación completa de una sola línea del tipo «¿puedo operar ahora?», que explica por qué cuando la respuesta es no.
Lo que obtienes
Determinación del tamaño de la posición. RG_LotsByRiskPercent y RG_LotsByRiskMoney devuelven un tamaño de lote que supone exactamente la pérdida de riesgo que elijas si se alcanza el stop, tomando como límite mínimo el lote mínimo del símbolo. Si pasas 0 como distancia de stop, se utiliza automáticamente un stop razonable basado en la volatilidad. RG_NormalizeLots redondea cualquier lote al paso del bróker y lo limita al rango permitido. RG_MoneyPerLot te indica cuánto se pierde con un lote completo en cualquier distancia de precio, con un valor por defecto para los símbolos cuyo valor de tick se indica como cero.
Herramientas de volatilidad. RG_ATR devuelve de forma segura un valor ATR para cualquier símbolo, marco temporal y período (0 cuando falta historial; nunca da un error de matriz). RG_ATRStopPrice te proporciona un precio de stop listo para una compra o venta a partir de un precio de entrada, un marco temporal, un período y un multiplicador.
Filtros de mercado. RG_SpreadPoints y RG_SpreadOK se encargan de las comprobaciones del spread; RG_InSession admite ventanas de negociación, incluidas las ventanas nocturnas que se prolongan más allá de la medianoche.
Comprobaciones de órdenes con nivel de validación. RG_StopsValid comprueba el SL/TP con respecto al nivel de stops; RG_MarginOK compara el margen requerido con el margen libre; y RG_OrderLimitOK respeta el límite de órdenes de la cuenta y el límite de volumen del símbolo —las mismas comprobaciones que realizan los validadores de MQL5 Market—.
Protección diaria. RG_TodayClosedProfit suma el resultado cerrado de hoy, incluyendo el swap y la comisión, filtrado opcionalmente por número mágico; RG_DailyLossOK indica si se ha alcanzado el límite de pérdidas diario.
Comprobación en una sola llamada. RG_CanTrade realiza comprobaciones de spread, sesión, pérdidas diarias, stops, margen y límite de órdenes en una sola llamada y rellena una cadena de motivo, como «OK» o la causa exacta del rechazo, ideal para el registro y el estado en el gráfico.
Mantenimiento. RG_Version devuelve la versión de la biblioteca para que tu EA pueda registrarla.
Cómo utilizarlo
1. Tras la compra, copia RiskGuardLib.ex5 en la carpeta MQL5\Libraries de tu terminal.
2. En tu EA o script, declara las funciones que necesites dentro de un bloque #import "RiskGuardLib.ex5" ... #import (las firmas se enumeran a continuación).
3. Llámalas como cualquier otra función, por ejemplo: lots = RG_LotsByRiskPercent(_Symbol, 1.0, 0); luego, si (RG_CanTrade(_Symbol, true, lots, sl, tp, 30, 7, 20, 3.0, magic, reason)) envía tu orden; de lo contrario, Print(reason).
4. Compila tu EA. Eso es todo: sin DLL, sin acceso a archivos, sin recursos adicionales.
Firmas de funciones
string RG_Version()
double RG_NormalizeLots(string symbol, double lots)
double RG_MoneyPerLot(string symbol, double priceDistance)
double RG_LotsByRiskPercent(string symbol, double riskPercent, double slDistance)
double RG_LotsByRiskMoney(string symbol, double riskMoney, double slDistance)
double RG_ATR(string symbol, ENUM_TIMEFRAMES tf, int period, int shift)
double RG_ATRStopPrice(string symbol, bool isBuy, double entry, ENUM_TIMEFRAMES tf, int period, double mult)
int RG_SpreadPoints(string symbol)
bool RG_SpreadOK(string symbol, int maxPoints)
bool RG_InSession(int startHour, int endHour)
bool RG_StopsValid(string symbol, bool isBuy, double price, double sl, double tp)
bool RG_MarginOK(string symbol, bool isBuy, double lots)
bool RG_OrderLimitOK(string symbol, double lots)
double RG_TodayClosedProfit(long magic)
bool RG_DailyLossOK(double maxLossPercent, long magic)
bool RG_CanTrade(string symbol, bool isBuy, double lots, double sl, double tp, int maxSpread, int startHour, int endHour, double maxDailyLossPct, long magic, string &reason)
Notas sobre los parámetros
riskPercent: porcentaje del capital a arriesgar por operación. riskMoney: importe fijo en la moneda de la cuenta a arriesgar. slDistance: distancia del stop en unidades de precio; 0 utiliza un stop automático basado en la volatilidad. maxPoints / maxSpread: spread máximo en puntos; 0 desactiva el filtro. startHour / endHour: ventana de tiempo del servidor; si los valores son iguales, significa que siempre está abierto. maxLossPercent / maxDailyLossPct: límite de pérdida diaria como porcentaje del saldo; 0 lo desactiva. magic: filtro de número mágico; -1 cuenta todas las operaciones. reason: recibe «OK» o el motivo del rechazo.
Las capturas de pantalla muestran un pequeño script de demostración creado a partir de la biblioteca que muestra en el gráfico el stop calculado, el tamaño del lote y el resultado de la puerta sin enviar ninguna orden. Sus ajustes son: porcentaje de riesgo (1,0), marco temporal del ATR (H1), período del ATR (14), multiplicador de stop del ATR (1,5), spread máximo (30 puntos), hora de inicio y fin de la sesión (0 / 24), pérdida diaria máxima (3 %) y filtro «magic» (-1 = todas).
Por qué les gusta a los desarrolladores
Menos rechazos en la validación, código más limpio, riesgo uniforme en todos tus EA y un único lugar en el que realizar mejoras cuando cambien tus reglas. Funciona con cualquier símbolo, cualquier divisa de cuenta y tanto con cuentas de cobertura como de compensación. Ligero: sin trabajo pesado por cada tick, sin estado global que tengas que gestionar.
Crea robots más seguros y más rápido: añade RiskGuard a tu caja de herramientas hoy mismo y escríbeme si necesitas ayuda para integrarlo en tu proyecto.
