
La estrategia es un sistema de trading cuantitativo basado en la combinación de las formas de precios y los indicadores técnicos. Se realiza principalmente mediante la identificación de las rupturas de las formas triangulares y la confirmación de la dinámica de los indicadores RSI. La estrategia utiliza un método de regresión lineal para construir una línea de tendencia ascendente y descendente y determinar las señales de negociación a través de las rupturas de precios y la posición del RSI, lo que permite una combinación orgánica de análisis de forma y análisis de dinámica.
La lógica central de la estrategia incluye dos partes principales: la identificación de la forma del triángulo y la confirmación de la dinámica del RSI. En primer lugar, se utilizan métodos de regresión lineal para calcular los máximos y mínimos de los últimos N ciclos y se construye una línea de tendencia ascendente para formar un triángulo.
La estrategia Triangular Breakout combinada con la dinámica RSI es un sistema de comercio cuantitativo de estructura completa y lógica clara. A través de un mecanismo de doble confirmación de forma y dinámica, se mejora la fiabilidad de la señal de comercio. Aunque existe cierto riesgo, la estrategia tiene un buen valor práctico a través de medidas razonables de optimización de parámetros y control de riesgos.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-04 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Triangle Breakout with RSI", overlay=true)
// Input parameters
len = input.int(15, title="Triangle Length")
rsiPeriod = input.int(14, title="RSI Period")
rsiThresholdBuy = input.int(50, title="RSI Threshold for Buy")
rsiThresholdSell = input.int(50, title="RSI Threshold for Sell")
// Calculate the RSI
rsi = ta.rsi(close, rsiPeriod)
// Calculate highest high and lowest low for triangle pattern
highLevel = ta.highest(high, len)
lowLevel = ta.lowest(low, len)
// Create trendlines for the triangle
upperTrend = ta.linreg(high, len, 0)
lowerTrend = ta.linreg(low, len, 0)
// Plot the trendlines on the chart
plot(upperTrend, color=color.green, linewidth=2, title="Upper Trendline")
plot(lowerTrend, color=color.red, linewidth=2, title="Lower Trendline")
// Detect breakout conditions
breakoutUp = close > upperTrend
breakoutDown = close < lowerTrend
// Confirm breakout with RSI
buyCondition = breakoutUp and rsi > rsiThresholdBuy
sellCondition = breakoutDown and rsi < rsiThresholdSell
// Plot breakout signals with confirmation from RSI
plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, size=size.small)
plotshape(series=sellCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, size=size.small)
// Strategy: Buy when triangle breaks upwards and RSI is above 50; Sell when triangle breaks downwards and RSI is below 50
if (buyCondition)
strategy.entry("Buy", strategy.long)
if (sellCondition)
strategy.entry("Sell", strategy.short)
// Plot RSI on the bottom pane
hline(50, "RSI 50 Level", color=color.gray, linestyle=hline.style_dotted)
plot(rsi, color=color.blue, linewidth=2, title="RSI")