
Die Strategie ist ein fortgeschrittenes Trend-Tracking-Trading-System, das G-Channel, RSI und MACD-Indikatoren kombiniert. Es identifiziert hochprobabilistische Handelschancen durch die dynamische Berechnung von Unterstützungs- und Widerstandsbereichen in Verbindung mit Dynamikanzeigern. Der Kern der Strategie liegt in der Verwendung von benutzerdefinierten G-Channel-Indikatoren, um Markttrends zu bestimmen, während RSI und MACD zur Bestätigung von Dynamikanpassungen verwendet werden, um eine genauere Handelssignalgeneration zu ermöglichen.
Die Strategie verwendet einen dreifachen Filtermechanismus, um die Zuverlässigkeit von Handelssignalen zu gewährleisten. Erstens erstellt der G-Kanal dynamisch Unterstützungs- und Widerstandsbereiche, indem er die höchsten und niedrigsten Preise innerhalb eines bestimmten Zeitraums berechnet. Wenn der Preis den Kanal durchbricht, erkennt das System potenzielle Trendwendepunkte. Zweitens wird der RSI-Indikator verwendet, um festzustellen, ob der Markt überkauft oder überverkauft ist, um wertvollere Handelsmöglichkeiten auszuwählen.
Die Strategie baut ein vollständiges Handelssystem auf, indem sie mehrere technische Indikatoren kombiniert verwendet. Ihre Kernvorteile liegen in einem mehrdimensionalen Signalbestätigungsmechanismus und einem ausgefeilten Risikomanagementsystem. Durch kontinuierliche Optimierung und Verbesserung wird die Strategie in der Lage sein, ihre Leistung in verschiedenen Marktumgebungen stabil zu halten.
/*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)