
Chiến lược này là một hệ thống giao dịch theo dõi xu hướng cao cấp kết hợp các chỉ số G-channel, RSI và MACD. Nó xác định các cơ hội giao dịch có khả năng cao bằng cách tính toán động các vùng hỗ trợ và kháng cự, kết hợp với các chỉ số động lực.
Chiến lược sử dụng một cơ chế lọc ba lần để đảm bảo độ tin cậy của tín hiệu giao dịch. Đầu tiên, kênh G xây dựng các vùng hỗ trợ và kháng cự động bằng cách tính toán giá cao nhất và thấp nhất trong chu kỳ được chỉ định.
Chiến lược này xây dựng một hệ thống giao dịch hoàn chỉnh bằng cách sử dụng nhiều chỉ số kỹ thuật tổng hợp. Ưu điểm cốt lõi của nó là cơ chế xác nhận tín hiệu đa chiều và hệ thống quản lý rủi ro hoàn hảo. Bằng cách tối ưu hóa và cải tiến liên tục, chiến lược có thể duy trì hiệu suất ổn định trong các môi trường thị trường khác nhau.
/*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)