
Chiến lược này là một hệ thống giao dịch theo dõi xu hướng dựa trên các kênh G tùy chỉnh và các đường trung bình di chuyển của chỉ số (EMA). Các kênh G bao gồm đường ray trên (a), đường ray dưới (b) và đường ray giữa (avg) để xác định ranh giới của kênh bằng cách tính toán động giá hiện tại và lịch sử. Chiến lược này kết hợp với EMA như một bộ lọc xu hướng, tạo ra tín hiệu giao dịch thông qua sự giao thoa của giá với đường kênh và mối quan hệ vị trí với EMA, để nắm bắt hiệu quả các điểm biến đổi xu hướng thị trường.
Lịch lý cốt lõi của chiến lược bao gồm hai thành phần chính: kênh G và bộ lọc EMA. G channel được tính dựa trên giá hiện tại và dữ liệu lịch sử, điều chỉnh chiều rộng của kênh động bằng thuật toán thích ứng. đường lên (a) lấy giá hiện tại so với giá lớn hơn trong giai đoạn lên trước và điều chỉnh động dựa trên tham số chiều rộng và chiều dài của kênh; đường xuống (b) sử dụng phương pháp tương tự để tính toán giá tối thiểu; đường giữa là trung bình toán học của đường lên xuống.
Hệ thống giao dịch lọc xu hướng G-channel và EMA là một chiến lược giao dịch hoàn chỉnh kết hợp giữa phá vỡ kênh và theo dõi xu hướng. Thông qua tính năng động của kênh G và chức năng xác nhận xu hướng của EMA, chiến lược này có thể nắm bắt hiệu quả các điểm biến đổi của thị trường và kiểm soát rủi ro giao dịch. Mặc dù có một số hạn chế, nhưng thông qua hướng tối ưu hóa được đề xuất, hiệu suất tổng thể của chiến lược sẽ được nâng cao hơn nữa.
/*backtest
start: 2024-11-04 00:00:00
end: 2024-12-04 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("G-Channel with EMA Strategy", overlay=true)
// G-Channel Indicator
length = input.int(100, title="G-Channel Length")
src = input(close, title="Source")
var float a = na
var float b = na
a := math.max(src, nz(a[1])) - (nz(a[1]) - nz(b[1])) / length
b := math.min(src, nz(b[1])) + (nz(a[1]) - nz(b[1])) / length
avg = (a + b) / 2
// G-Channel buy/sell signals
crossup = ta.crossover(close, b)
crossdn = ta.crossunder(close, a)
bullish = ta.barssince(crossdn) <= ta.barssince(crossup)
// EMA Indicator
emaLength = input.int(200, title="EMA Length")
ema = ta.ema(close, emaLength)
// Buy Condition: G-Channel gives a buy signal and price is below EMA
buySignal = bullish and close < ema
// Sell Condition: G-Channel gives a sell signal and price is above EMA
sellSignal = not bullish and close > ema
// Plotting the G-Channel and EMA
plot(a, title="Upper", color=color.blue, linewidth=2, transp=100)
plot(b, title="Lower", color=color.blue, linewidth=2, transp=100)
plot(avg, title="Average", color=bullish ? color.lime : color.red, linewidth=1, transp=90)
plot(ema, title="EMA", color=color.orange, linewidth=2)
// Strategy Execution
if (buySignal)
strategy.entry("Buy", strategy.long)
if (sellSignal)
strategy.entry("Sell", strategy.short)
// Plot Buy/Sell Signals
plotshape(buySignal, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")