Estrategia de media móvil doble

El autor:¿ Qué pasa?, fecha: 2024-02-21 14:43:26
Las etiquetas:

img

Resumen general

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.

Estrategia lógica

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.

Análisis de ventajas

Coge la tendencia

El canal de doble MA puede detectar eficazmente la dirección de la tendencia del precio.

Reducir la fuga falsa

El uso del filtro sobrecomprado/sobrevendido del RSI reduce algunas señales falsas de ruptura causadas por la fluctuación de los precios.

Control eficaz de los riesgos

El comercio sólo durante la sesión principal y tener órdenes máximas por día limita la frecuencia de negociación.

Análisis de riesgos

Falla de ruptura con volatilidad

Los parámetros pueden optimizarse y se pueden añadir más filtros para reducir dicho riesgo.

El riesgo de SL/TP fijo

El uso de pips fijos para SL/TP corre el riesgo de que se detenga/se pierda la ganancia en un mercado volátil.

Riesgo limitado de sesión de negociación

La apertura de posiciones solo durante sesiones fijas corre el riesgo de perder operaciones potenciales en otras horas.

Direcciones de optimización

Ajuste de parámetros

Optimice parámetros como la longitud de MA, las cifras de RSI, los puntos fijos SL / TP, etc. para encontrar la mejor combinación.

Filtros adicionales

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.

SL/TP dinámico

Utilice stop loss/take profit basado en porcentajes o dinámicos en lugar de pips fijos para manejar mejor los movimientos unilaterales del mercado.

Revisión manual

Revisa manualmente las señales, o sólo entra en la fuga confirmada para evitar quedar atrapado.

Conclusión

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"))






Más.