Esta estrategia combina RSI, MACD, Bandas de Bollinger y limita los factores de subida/baja para implementar el comercio de rotación de impulso de múltiples factores. La estrategia primero juzga si múltiples indicadores técnicos dan señales de compra o venta simultáneamente. Si es así, se ejecutarán las operaciones de compra o venta correspondientes. Mientras tanto, la estrategia adopta stop profit y stop loss móviles para bloquear ganancias y controlar riesgos.
Los principales componentes de esta estrategia son:
Juicio por factores
Entrada y salida
Optimización de la estrategia
Varios factores mejoran la precisión de la entrada
La estrategia considera múltiples factores como el RSI y el MACD en lugar de un solo indicador. Esto reduce las señales falsas y mejora la precisión de entrada.
La característica de impulso capta las tendencias
Los indicadores como el RSI y el MACD tienen una característica de impulso obvia, que captan los cambios de tendencia de precios.
El mecanismo de detención de pérdidas y ganancias controla los riesgos
El movimiento del stop profit puede bloquear las ganancias de forma dinámica siguiendo el mercado.
Una lógica sencilla y clara
La estrategia combina indicadores técnicos comunes y tiene una cierta universalidad.
Desempeño deficiente en el mercado alcista
La estrategia se centra en el comercio de reversión media, que puede desencadenar frecuentes pérdidas de parada en un mercado alcista.
Frecuencia de operaciones potencialmente demasiado alta
Si los parámetros se establecen con demasiada sensibilidad, la frecuencia de negociación puede ser demasiado alta, aumentando los costes y el deslizamiento.
Riesgo de divergencia entre indicadores
La estrategia se basa en señales consistentes en todos los indicadores, pero a veces pueden ocurrir divergencias, lo que resulta en señales incorrectas.
Pérdida de parada de penetración
Los puntos de stop loss fijos pueden ser penetrados, y el cambio de stock o stop loss dinámico puede ayudar a evitar este riesgo.
Optimizar los parámetros para reducir la frecuencia de las operaciones
Los parámetros de RSI y los períodos de MA se analizarán para encontrar combinaciones con una menor frecuencia de negociación.
Añadir factores estadísticos para mejorar la eficiencia
Incorporar estadísticas específicas de las acciones como la volatilidad y la liquidez para establecer parámetros y mejorar la eficiencia.
Combinar indicadores de nivel de mercado como el VIX
Ajustar los parámetros de estrategia basados en indicadores de pánico del mercado como VIX para reducir la frecuencia de las operaciones durante los crashes en todo el mercado.
Prueba de diferentes períodos de retención
Prueba la tenencia a largo plazo frente a la rotación a corto plazo para ver su impacto en el rendimiento de la estrategia.
Optimizar y probar el stop profit/loss
Investigue técnicas de stop-profit/pérdida dinámicas más avanzadas y pruebelas.
Esta estrategia combina múltiples indicadores técnicos y adopta stop profit/loss móvil para bloquear las ganancias y controlar los riesgos al tiempo que garantiza una alta precisión de entrada. La lógica es simple y clara. El rendimiento se puede mejorar aún más a través de la optimización de parámetros y la selección de indicadores.
/*backtest start: 2023-09-24 00:00:00 end: 2023-10-24 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("RSI, TD Seq, MACD, BB Strategy - Calculation Trailing Profit",overlay=true) RSIDifference = input(-7, minval=-50, maxval=50, title="RSI Difference") TD = close > close[4] ?nz(TD[1])+1:0 TS = close < close[4] ?nz(TS[1])+1:0 TDUp = TD - valuewhen(TD < TD[1], TD , 1 ) TDDn = TS - valuewhen(TS < TS[1], TS , 1 ) TDcheckUP = iff(TD == 2, true, false) TDCheckDOWN = iff(TS == 2, true, false) [_, _, histLine] = macd(close, 12, 26, 9) MACDCheckDown = iff(histLine > 0 and histLine[1] > 0 and histLine[2] > 0 and histLine[3] > 0 and histLine[4] > 0, true, false) MACDCheckUp = iff(histLine < 0 and histLine[1] < 0 and histLine[2] < 0 and histLine[3] < 0 and histLine[4] < 0, true, false) RSICal = rsi(close, 14) RSICalNewUp = 50 + RSIDifference RSICalNewDown = 50 - RSIDifference RSICheckUp = iff(RSICal <= RSICalNewUp, true, false) RSICheckDown = iff(RSICal >= RSICalNewDown, true, false) basis = sma(close, 20) dev = 2 * stdev(close, 20) upperBB = basis + dev lowerBB = basis - dev BBCheckUp = iff(close > upperBB, true, false) BBCheckDown = iff(close < lowerBB, true, false) //BBCheckUp = false //BBCheckDown = false BuyCheck = iff(TDcheckUP == true and MACDCheckUp == true and RSICheckUp == true and BBCheckUp == false, true, false) SellCheck = iff(TDCheckDOWN == true and MACDCheckDown == true and RSICheckDown == true and BBCheckDown == false, true, false) ProfitStratA = input(50, minval=0, maxval=10000, title="Profit", step=0.5) ProfitTrailingA = input(10, minval=0, maxval=10000, title="Profit", step=0.5) useStopLoss = input(false, title="Use Stop Loss?") LossstratA = input(145, minval=0, maxval=10000, title="Stop Loss", step=0.5) colB = input(100, minval=0, maxval=100, title="0-show / 100-hide Strategy", step=100) ProfitStrat = ProfitStratA * 10 ProfitTrailing = ProfitTrailingA * 10 Lossstrat = useStopLoss ? LossstratA * 10 : 1000000 if (strategy.position_size > 0) strategy.exit("BuyClose", "Buy", trail_points=ProfitStrat, trail_offset=ProfitTrailing, loss=Lossstrat) if (strategy.position_size < 0) strategy.exit("SellClose", "Sell", trail_points=ProfitStrat, trail_offset=ProfitTrailing, loss=Lossstrat) if (BuyCheck == true and strategy.position_size == 0) strategy.entry("Buy", strategy.long, comment="Long Entry") if (SellCheck == true and strategy.position_size == 0) strategy.entry("Sell", strategy.short, comment="Short Entry") plotshape(BuyCheck, color=blue, transp=colB, style=shape.arrowup, text="Buy\n", location=location.belowbar) plotshape(SellCheck, color=orange, transp=colB, style=shape.arrowdown, text="Sell\n", location=location.abovebar)