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ố G-Channel. Chiến lược tính toán các cực trên và dưới của G-Channel và xác định xu hướng thị trường hiện tại dựa trên sự chéo chéo của giá và đường trung bình động G-Channel, tạo ra tín hiệu mua và bán phù hợp. Ngoài ra, các chiến lược được thiết lập để lấy lợi nhuận và 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 và 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 lấy lợi nhuận và dừng lỗ để kiểm soát rủi ro. Logic chiến lược rõ ràng và dễ thực hiện, làm cho nó phù hợp cho những người mới bắt đầu giao dịch định lượng để học. Tuy nhiên, chiến lược có thể tạo ra nhiều tín hiệu sai hơn trong thị trường biến động, và tỷ lệ lấy lợi nhuận và dừng lỗ cần phải được điều chỉnh theo đặc điểm của thị trường. Hơn nữa, nó không xem xét đặc điểm của tài sản giao dịch. Trong tương lai, chiến lược có thể được tối ưu hóa bằng cách giới thiệu các chỉ số kỹ thuật khác, điều chỉnh năng động tỷ lệ lấy lợi nhuận và dừng lỗ, và thêm các mô-đun kiểm soát rủi ro dựa trên các đặc điểm của tài sản giao dịch để cải thiện tính ổn định và lợi nhuận của chiến lược.
//@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))