Esta estrategia tiene como objetivo detectar los extremos del Oscilador de Momentum de Chande utilizando la detección de distribución extrema en marcos de tiempo de 1 minuto principalmente para Bitcoin y criptomonedas.
Después de una extensa investigación sobre el oscilador de momento de Chande, decidí crear una estrategia que utiliza niveles de percentil de distribución normal para recortar entradas. Esto a su vez puede crear buenas ganancias durante días consecutivos en el marco de tiempo de 1 minuto, con el objetivo final de obtener una versión más fuerte de esta estrategia que se ejecuta en un bot e imprimir algo de dinero. La estrategia está estrictamente definida, pero también se puede aflojar para hacer más operaciones, dando un mayor tamaño de muestra y una mejor relación Sharpe.
La estrategia comprueba si el valor de Chande está en un percentil extremo basado en los últimos cientos de valores de Chande. Si es así, abrirá una posición.
No hay stop loss o take profit implementado en el swing todavía, pero esta será la próxima adición para minimizar realmente las pérdidas y amplificar las ganancias potenciales.
Cualquier par de criptomonedas líquidas en los marcos de tiempo más bajos obtendrá un buen resultado con esta estrategia.
También tenemos una estrategia de 15M y 1H disponible.
La estrategia primero calcula el oscilador de impulso de Chande, que se basa en el cambio entre el cierre del período actual y el cierre del período anterior.
Luego registra los valores de Chande durante un cierto período de retroceso (períodos predeterminados de 425) y calcula los diferentes niveles de percentil. Cuando el valor actual de Chande alcanza un percentil extremo preestablecido (por defecto 1% para comprar, 99% para vender), activa una señal de entrada larga / corta. Las señales de salida se activan cuando el valor de Chande alcanza los niveles de percentil normales (por defecto 97.5% y 2.5%).
De esta manera, la estrategia puede capturar rupturas extremas del valor de Chande, lo que le permite detectar movimientos repentinos de tendencia.
La gestión del riesgo debe centrarse en el uso de paradas, normalizando los parámetros extremos y filtrando las señales con tendencia.
La estrategia se puede optimizar en varios aspectos:
Se añadirá el stop loss/profit taking para controlar las pérdidas por operación a niveles razonables.
Optimiza los parámetros ajustando las búsquedas de retrospectiva corta / larga para diferentes mercados.
Añadir condiciones de filtro con indicadores de tendencia como MA para eliminar señales falsas contra la tendencia general.
Combinar múltiples marcos de tiempo, utilizando un TF más alto para medir la dirección de la tendencia y un TF más bajo para la entrada.
Prueba la robustez de los parámetros en diferentes productos, ajusta para más variedades.
Introducir el aprendizaje automático para optimizar los parámetros y filtros dinámicamente.
En general, esta es una estrategia que utiliza valores extremos del oscilador de momento de Chande para capturar los movimientos de tendencia. Su lógica sencilla y ejecución eficiente lo hacen muy adecuado para capitalizar rápidamente las tendencias de explosión. Al mismo tiempo, se necesita controlar el riesgo, evitar la optimización excesiva y la optimización multidimensional para adaptarlo a través de los regímenes de mercado. En resumen, proporciona un enfoque efectivo para los estallidos de mercado comerciales que vale la pena investigar y aplicar.
/*backtest start: 2023-10-13 00:00:00 end: 2023-11-12 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Chande Minute Swinger", overlay=true) //Chande length = input(9, minval=1) src = close momm = change(src) f1(m) => m >= 0.0 ? m : 0.0 f2(m) => m >= 0.0 ? 0.0 : -m m1 = f1(momm) m2 = f2(momm) sm1 = sum(m1, length) sm2 = sum(m2, length) percent(nom, div) => 100 * nom / div chandeMO = percent(sm1-sm2, sm1+sm2) //Parameters to change lengthLookback = 425 //425 golden number buyPercentile = 1 sellPercentile = 99 linePercentileLow = 2.5 linePercentileHigh = 97.5 buy = percentile_nearest_rank(chandeMO, lengthLookback, buyPercentile) exitBuy= percentile_nearest_rank(chandeMO, lengthLookback, linePercentileHigh) sell = percentile_nearest_rank(chandeMO, lengthLookback, sellPercentile) exitSell = percentile_nearest_rank(chandeMO, lengthLookback, linePercentileLow) chandeMA = sma(chandeMO, 9) //sma for potential other strategies implementing cross / trend //Entry conditions closeLongCondition = chandeMO > exitBuy ? true : false closeShortCondition = chandeMO < exitSell ? true : false longCondition = chandeMO < buy shortCondition = chandeMO > sell if (longCondition) strategy.entry("long", strategy.long) if (shortCondition) strategy.entry("short", strategy.short) //Introducing the closes and a stoploss will minimise loss and bring up the sharpe ratio //Current settings are enabled for maximum potential but big risk //strategy.close("long", when=(closeLongCondition == true)) //strategy.close("short", when=(closeShortCondition == true))