
Chiến lược phát hiện xu hướng G-Channel là một chiến lược giao dịch định lượng dựa trên chỉ số kênh G. Chiến lược này tạo ra tín hiệu mua và bán bằng cách tính toán các cực đoan trên và dưới của kênh G và đánh giá xu hướng thị trường hiện tại dựa trên sự giao thoa của giá với đường trung bình kênh G. Đồng thời, chiến lược này cũng đặt các điều kiện dừng lỗ để kiểm soát rủi ro.
Chiến lược phát hiện xu hướng G-Channel là một chiến lược giao dịch định lượng đơn giản dựa trên chỉ số G-Channel, tạo ra tín hiệu mua bán bằng cách nắm bắt xu hướng thị trường và thiết lập các điều kiện kiểm soát rủi ro dừng lỗ. Lập luận của chiến lược rõ ràng, dễ thực hiện, phù hợp với việc học giao dịch mới. Tuy nhiên, chiến lược này có thể tạo ra nhiều tín hiệu giả đối với thị trường rung động, tỷ lệ dừng lỗ cần được điều chỉnh theo đặc điểm của thị trường và không xem xét đặc điểm của loại giao dịch.
//@version=5
// Full credit to AlexGrover: https://www.tradingview.com/script/fIvlS64B-G-Channels-Efficient-Calculation-Of-Upper-Lower-Extremities/
strategy("G-Channel Trend Detection Strategy", shorttitle="G-Trend", overlay=true)
// Input parameters
length = input.int(100, title="Length")
src = input(close, title="Source")
take_profit_percent = input.float(5.0, title="Take Profit (%)")
stop_loss_percent = input.float(2.0, title="Stop Loss (%)")
showcross = input.bool(true, title="Show Cross")
// Initialize variables
var float a = na
var float b = na
// Calculate a and b
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
// Calculate average
avg = (a + b) / 2
// Determine trend and color
crossup = ta.crossunder(b, close)
crossdn = ta.crossunder(a, close)
bullish = ta.barssince(crossdn) <= ta.barssince(crossup)
c = bullish ? color.lime : color.red
// Plotting
p1 = plot(avg, "Average", color=c, linewidth=1)
p2 = plot(close, "Close price", color=c, linewidth=1)
fill(p1, p2, c)
// Generate buy and sell signals
buy_signal = showcross and bullish and not bullish[1]
sell_signal = showcross and not bullish and bullish[1]
// Plot buy and sell signals on chart
plotshape(buy_signal ? avg : na, location=location.belowbar, style=shape.labeldown, color=color.new(color.lime, 0), size=size.tiny, text="Buy", textcolor=color.white, offset=-1)
plotshape(sell_signal ? avg : na, location=location.abovebar, style=shape.labelup, color=color.new(color.red, 0), size=size.tiny, text="Sell", textcolor=color.white, offset=-1)
// Alerts
alertcondition(buy_signal, title="Buy Signal", message="Buy Signal Detected")
alertcondition(sell_signal, title="Sell Signal", message="Sell Signal Detected")
// Calculate take profit and stop loss levels
take_profit_level = close * (1 + take_profit_percent / 100)
stop_loss_level = close * (1 - stop_loss_percent / 100)
// Strategy Entry and Exit
if (buy_signal)
strategy.entry("Buy", strategy.long)
if (sell_signal)
strategy.entry("Sell", strategy.short)
// Define the take profit and stop loss conditions for long positions
strategy.exit("Take Profit/Stop Loss", "Buy", limit=take_profit_level, stop=stop_loss_level)
// Define the take profit and stop loss conditions for short positions
strategy.exit("Take Profit/Stop Loss", "Sell", limit=close * (1 - take_profit_percent / 100), stop=close * (1 + stop_loss_percent / 100))