
La estrategia es un sistema de trading de seguimiento de tendencias avanzado que combina el canal G, el RSI y el MACD. Identifica oportunidades de trading de alta probabilidad mediante el cálculo dinámico de las áreas de soporte y resistencia, en combinación con el indicador de dinámica. El núcleo de la estrategia consiste en utilizar un indicador de canal G personalizado para determinar las tendencias del mercado, mientras que el RSI y el MACD se utilizan para confirmar los cambios de dinámica y generar una señal de negociación más precisa.
La estrategia utiliza un mecanismo de triple filtración para garantizar la fiabilidad de la señal de negociación. En primer lugar, el canal G construye dinámicamente las áreas de soporte y resistencia mediante el cálculo de los precios más altos y más bajos en un período de tiempo determinado. Cuando el precio rompe el canal, el sistema identifica los posibles puntos de cambio de tendencia.
La estrategia construye un sistema de negociación completo mediante la aplicación integrada de varios indicadores técnicos. Su principal ventaja reside en el mecanismo de confirmación de señales multidimensional y el sistema de gestión de riesgos completo. Con la optimización y mejora continuas, la estrategia espera mantener un rendimiento estable en diferentes entornos de mercado.
/*backtest
start: 2024-11-19 00:00:00
end: 2024-12-18 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("VinSpace Optimized Strategy", shorttitle="VinSpace Magic", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// Input Parameters
length = input.int(100, title="Length")
src = input(close, title="Source")
stop_loss_pct = input.float(1, title="Stop Loss (%)") / 100
take_profit_pct = input.float(3, title="Take Profit (%)") / 100
rsi_length = input.int(14, title="RSI Length")
rsi_overbought = input.int(70, title="RSI Overbought")
rsi_oversold = input.int(30, title="RSI Oversold")
macd_short = input.int(12, title="MACD Short Length")
macd_long = input.int(26, title="MACD Long Length")
macd_signal = input.int(9, title="MACD Signal Length")
// ---- G-Channel Calculations ----
var float a = na
var float b = na
a := math.max(src, na(a[1]) ? src : a[1]) - (na(a[1]) ? 0 : (a[1] - b[1]) / length)
b := math.min(src, na(b[1]) ? src : b[1]) + (na(a[1]) ? 0 : (a[1] - b[1]) / length)
avg = (a + b) / 2
// ---- RSI Calculation ----
rsi = ta.rsi(src, rsi_length)
// ---- MACD Calculation ----
[macdLine, signalLine, _] = ta.macd(src, macd_short, macd_long, macd_signal)
macd_hist = macdLine - signalLine
// ---- Trend Detection Logic ----
crossup = b[1] < close[1] and b > close
crossdn = a[1] < close[1] and a > close
bullish = ta.barssince(crossdn) <= ta.barssince(crossup)
c = bullish ? color.new(color.green, 0) : color.new(color.red, 0)
// Plotting the Average
p1 = plot(avg, "Average", color=c, linewidth=2)
p2 = plot(close, "Close price", color=c, linewidth=1)
// Adjusted fill with transparency
fill(p1, p2, color=color.new(c, 90))
// ---- Buy and Sell Signals ----
showcross = input(true, title="Show Buy/Sell Labels")
plotshape(showcross and bullish and not bullish[1], location=location.belowbar, style=shape.labelup, color=color.green, size=size.small, text="Buy", textcolor=color.white, offset=-1)
plotshape(showcross and not bullish and bullish[1], location=location.abovebar, style=shape.labeldown, color=color.red, size=size.small, text="Sell", textcolor=color.white, offset=-1)
// ---- Entry and Exit Conditions ----
enterLong = bullish and rsi < rsi_oversold and macd_hist > 0
enterShort = not bullish and rsi > rsi_overbought and macd_hist < 0
// Exit Conditions
exitLong = ta.crossunder(close, avg) or rsi > rsi_overbought
exitShort = ta.crossover(close, avg) or rsi < rsi_oversold
// Position Size (example: 10% of equity)
posSize = 1
// Submit Entry Orders
if enterLong
strategy.entry("EL", strategy.long, qty=posSize)
if enterShort
strategy.entry("ES", strategy.short, qty=posSize)
// Submit Exit Orders
if exitLong
strategy.close("EL")
if exitShort
strategy.close("ES")
// Set Stop Loss and Take Profit for the trades
strategy.exit("Take Profit/Stop Loss Long", from_entry="EL", loss=stop_loss_pct * close, profit=take_profit_pct * close)
strategy.exit("Take Profit/Stop Loss Short", from_entry="ES", loss=stop_loss_pct * close, profit=take_profit_pct * close)