Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
CSetupLedger: a per-setup win rate ledger for Expert Advisors - librería para MetaTrader 5
- Visualizaciones:
- 11
- Ranking:
- Publicado:
-
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
Por qué lo escribí
Mi scalper opera con dos configuraciones: un bloque de órdenes alcista y su reflejo bajista. El Strategy Tester me dio un mismo factor de rentabilidad para ambas. Dediqué dos semanas a ajustar los parámetros que se aplicaban por igual a cada configuración.
Después, dividí las operaciones por tipo de configuración. En el USDCAD M1, el lado alcista había provocado el 88 % de las pérdidas. El lado bajista estaba prácticamente en equilibrio. La cifra que necesitaba había estado en mi propio historial de operaciones todo este tiempo. Simplemente no tenía forma de interpretarla.
Este curso te enseña a interpretarlo.
Lo que te ofrece
Registras tus tipos de configuración una sola vez al iniciar el programa. Cada uno recibe un identificador. Ese identificador se añade a tu base de números mágicos, de modo que cada pedido lleva su propia etiqueta de configuración desde el momento en que se envía.
A partir de ahí, el libro mayor responde a tres preguntas para cada configuración: cuántas ganancias y pérdidas ha habido; cuál ha sido el resultado neto tras el swap y la comisión; y si la tasa de aciertos ya ha generado confianza.
Esa última pregunta es la razón por la que he creado esto. Tres ganancias en tres operaciones suponen una tasa de acierto del 100 por ciento. Es también lo que consigue, aproximadamente, una vez cada doce intentos, una moneda que sale cara el 44 por ciento de las veces. Por eso, la clase muestra un límite inferior de la puntuación de Wilson junto a la tasa bruta y la compara con la tasa de acierto de equilibrio que exige tu ratio de recompensa. Con una relación de 1:2, ese umbral se sitúa en el 33,3 %. Una configuración solo se considera fiable cuando incluso su tasa pesimista supera ese umbral. Al principio, todo indica «aún no es fiable». Esa es la respuesta honesta cuando solo tienes veinte operaciones.
Cómo utilizarlo
#include <CSetupLedger.mqh> CSetupLedger ledger; int SETUP_BULL, SETUP_BEAR; int OnInit() { ledger.Init(552001); // tu base mágica SETUP_BULL = ledger.Register("Bullish OB"); // id 0 -> número mágico 552001 SETUP_BEAR = ledger.Register("Bearish OB"); // id 1 -> magia 552002 ledger.RebuildFromHistory(); // leer el registro de la cuenta Print(ledger.Report(2.0)); // 2,0 = relación recompensa-riesgo return INIT_SUCCEEDED; }
Aplica la configuración a la operación antes de que se envíe la orden.
trade.SetExpertMagicNumber((ulong)ledger.MagicFor(SETUP_BULL));Cierra la posición una vez que se haya liquidado.
double net = 0.0; if(ledger.ProcessClosedPosition(posId, setupId, net)) Print(ledger.Report(2.0));
La función Report() devuelve un bloque de texto. Funciona como Print () y como Comment (). Aquí tienes una ejecución real mía en el USDCAD M1.
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

El mismo informe, pasado a Comment (), aparece en la esquina del gráfico mientras se ejecuta el EA. El recuadro sobre la barra es la etiqueta de entrada. Registra cuál era el historial de esa configuración antes de que se realizara la operación. Aquí, el panel indica 4 ganancias y 6 pérdidas. Tasa bruta del 40 %. Límite inferior de Wilson del 16,8 %. Así pues, tras diez operaciones, el veredicto sigue siendo «aún no es fiable», que es precisamente el objetivo de la columna.
Los recuentos son ganancias frente a pérdidas. Así pues, son 764 operaciones en la configuración alcista y 584 en la bajista. Ambos saldos netos se suman a la propia pérdida neta del simulador, al céntimo. Realiza esa conciliación en tus propios resultados antes de confiar en cualquier registro, incluido este. Si las operaciones por configuración no suman el recuento de operaciones del probador, significa que las posiciones se están contando mal y cualquier porcentaje por encima de esa línea carece de valor.
Tres trampas que te ayuda a evitar
Las versiones escritas a mano suelen equivocarse en esto. Yo mismo me equivoqué en dos de ellas antes de que existiera este curso.
Las operaciones no son transacciones. El historial de MT5 es una lista de operaciones. Una posición cerrada en tres partes genera tres operaciones OUT. Al recorrer las operaciones y contar cada una de las rentables como una ganancia, una sola transacción ganadora se convierte en tres ganancias. El libro mayor agrupa por DEAL_POSITION_ID , por lo que un cierre parcial sigue contando una sola vez.
DEAL_PROFIT no es el resultado. El swap y la comisión se encuentran en sus propios campos. En un EA de swing, esa diferencia es meramente estética. En un scalper, determina si la operación ha generado beneficios o no. Una operación que haya obtenido 3 USD de variación de precio y haya pagado 4 USD en comisiones es una pérdida. El libro mayor suma el beneficio más el swap más las comisiones.
POSITION_TICKET no es POSITION_IDENTIFIER . La función HistorySelectByPosition () requiere el identificador. Ambos tienen el mismo valor en una cuenta de compensación la mayor parte del tiempo, por lo que el error pasa desapercibido hasta que una cuenta de cobertura o un cierre parcial los separa. Entonces, la selección devuelve un resultado vacío y no proporciona ninguna información.
La única regla que no debes incumplir
El orden de registro es un formato de datos. El identificador de configuración no existe en ningún otro sitio salvo en los números mágicos de las operaciones que ya se han cerrado. Si el mes que viene se inserta una nueva configuración en medio de la lista, todas las operaciones históricas de la configuración que antes tenían ese identificador se convierten silenciosamente en operaciones de la nueva. No se produce ningún error. A partir de ese momento, los números simplemente son incorrectos.
Las nuevas configuraciones van al final de la lista. Si retiras una configuración, deja su llamada a `Register () ` donde está para que el identificador siga ocupado. Un breve comentario encima del bloque de registro que lo explique vale su peso en oro.
Lo que no hará
Mantiene un registro por posición. Un EA que acumule una segunda entrada en la misma posición de compensación atribuirá todo el volumen a la primera configuración. Si el tuyo hace eso, necesitará en su lugar un modelo por operación.
El límite máximo es de dieciséis operaciones. Aumenta el valor de SETUP_LEDGER_MAX si necesitas más. Dieciséis operaciones en una sola cuenta también significan dieciséis muestras pequeñas, y la columna «Wilson» te lo indicará.
Un resultado neto exactamente igual a cero se considera una pérdida. Las operaciones sin resultado son poco frecuentes y tratarlas como ganancias es el error más halagador.
ProcessClosedPosition() sustituye a la selección global del historial, ya que llama a HistorySelectByPosition (). No la llames en medio de tu propio bucle de historial sin volver a seleccionar después.
Además, evalúa tus salidas en lugar de tu idea. Una configuración que interpreta correctamente la dirección pero coloca mal su stop se puntúa como una mala configuración. A la hora de decidir qué operar mañana, podría decirse que esa es la respuesta correcta. No es lo mismo que juzgar si la idea era sólida.
Requisitos
MetaTrader 5. No hay dependencias más allá de la biblioteca estándar. Coloca el archivo en MQL5/Include/ e inclúyelo. Escrito y probado en la versión 6190.
Una última cosa. Un libro mayor creado a partir de una sola prueba retrospectiva «in sample» evalúa dicha prueba. No valida una estrategia. Las pruebas «out of sample» en un periodo que nunca hayas ajustado son una tarea aparte y esta clase no las sustituye.
— Ali Rajput
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/code/77531
Session Candle Counter: candles numbered from the cash open, DST aware
Se numeran todas las velas de la jornada bursátil actual a partir de la apertura al contado de Fráncfort, Londres, Nueva York o Tokio. La referencia se convierte de la hora local de la bolsa a la hora del servidor del bróker con ajuste automático al horario de verano, por lo que la primera vela tras la apertura es siempre la número uno, tanto en verano como en invierno.
RiskGuard Lite - Percent-Risk EMA/ATR EA
EA educativo para MT5: entradas mediante cruces de EMA en barras cerradas, stop loss y take profit basados en el ATR, tamaño del lote calculado a partir de un porcentaje fijo del capital mediante OrderCalcProfit, filtro de spread, aislamiento de números mágicos y comprobaciones de los códigos de respuesta del servidor. Una plantilla sencilla para crear EAs con control de riesgos. No se garantizan beneficios.
Accumulation/Distribution
El indicador Accumulation/Distribution (Acumulación/Distribución) queda determinado por los cambios que se producen en el precio y en el volumen.
Accelerator Oscillator (AC)
El indicador Acceleration/Deceleration (AC, Aceleración/Desaceleración) mide la aceleración y la desaceleración de la fuerza impulsora del mercado.