Esta estrategia utiliza promedios móviles duales para formar un canal y capturar la dirección de la tendencia. Las señales de negociación se generan cuando el precio se rompe a través del canal. El indicador RSI también se incorpora para filtrar falsas rupturas.
La estrategia emplea dos promedios móviles de longitud 5, uno calculado desde el precio más alto y el otro desde el precio más bajo, para formar un canal de precios.
Para evitar una falsa ruptura, el indicador RSI se agrega para medir los niveles de sobrecompra / sobreventa. Ir largo solo si el RSI es superior a 80 y ir corto solo si el RSI es inferior a 20.
Además, la estrategia se negocia solo durante la sesión de Londres (3am - 11am), con un máximo de 5 órdenes por día y un máximo de 2% de pérdida de capital por día.
El canal de doble MA puede detectar eficazmente la dirección de la tendencia del precio.
El uso del filtro sobrecomprado/sobrevendido del RSI reduce algunas señales falsas de ruptura causadas por la fluctuación de los precios.
El comercio sólo durante la sesión principal y tener órdenes máximas por día limita la frecuencia de negociación.
Los parámetros pueden optimizarse y se pueden añadir más filtros para reducir dicho riesgo.
El uso de pips fijos para SL/TP corre el riesgo de que se detenga/se pierda la ganancia en un mercado volátil.
La apertura de posiciones solo durante sesiones fijas corre el riesgo de perder operaciones potenciales en otras horas.
Optimice parámetros como la longitud de MA, las cifras de RSI, los puntos fijos SL / TP, etc. para encontrar la mejor combinación.
Añadir más indicadores o condiciones para verificar las señales, por ejemplo, mayor volumen, reducción de la anchura de BB, etc., para evitar errores.
Utilice stop loss/take profit basado en porcentajes o dinámicos en lugar de pips fijos para manejar mejor los movimientos unilaterales del mercado.
Revisa manualmente las señales, o sólo entra en la fuga confirmada para evitar quedar atrapado.
La estrategia es bastante simple y práctica en general, utilizando un canal doble de MA para determinar la tendencia y el RSI para filtrar las fallas. La gestión del riesgo a través de las horas de negociación y el límite de pérdida también define la tolerancia al riesgo. Todavía hay mucho margen de mejora, por ejemplo, ajuste de parámetros, mejor mecanismo SL / TP, etc.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-16 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © SoftKill21 //@version=4 strategy(title="Moving Average", shorttitle="MA", overlay=true) timeinrange(res, sess) => time(res, sess) != 0 len = input(5, minval=1, title="Length") src = input(high, title="Source") offset = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500) out = sma(src, len) plot(out, color=color.white, title="MA", offset=offset) len2 = input(5, minval=1, title="Length") src2 = input(low, title="Source") offset2 = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500) out2 = sma(src2, len2) plot(out2, color=color.white, title="MA", offset=offset2) length = input( 5 ) overSold = input( 10 ) overBought = input( 80 ) price = input(close, title="Source RSI") vrsi = rsi(price, length) longcond= close > out and close > out2 and vrsi > overBought shortcont = close < out and close < out2 and vrsi < overSold tp=input(150,title="tp") sl=input(80,title="sl") strategy.entry("long",1,when=longcond) //strategy.close("long",when= close < out2) strategy.exit("long_exit","long",profit=tp,loss=sl) strategy.entry("short",1,when=shortcont) //strategy.close("short",when=close >out) strategy.exit("short_exit","short",profit=tp,loss=sl) // maxOrder = input(6, title="max trades per day") // maxRisk = input(2,type=input.float, title="maxrisk per day") // strategy.risk.max_intraday_filled_orders(maxOrder) // strategy.risk.max_intraday_loss(maxRisk, strategy.percent_of_equity) // strategy.close_all(when =not timeinrange(timeframe.period, "0300-1100"))