
Đây là chiến lược giao dịch đột phá theo đà dựa trên Kênh Donchian, kết hợp hai điều kiện chính: đột phá giá và xác nhận khối lượng. Chiến lược này nắm bắt xu hướng tăng của thị trường bằng cách theo dõi xem giá có vượt ra khỏi phạm vi giá được xác định trước và có cần sự hỗ trợ của khối lượng hay không. Chiến lược này sử dụng các tham số trễ để cải thiện độ ổn định của kênh và cung cấp khả năng lựa chọn điều kiện thoát linh hoạt.
Logic cốt lõi của chiến lược bao gồm những phần chính sau:
Đây là một chiến lược đi theo xu hướng được thiết kế tốt và có logic rõ ràng. Bằng cách kết hợp đột phá về giá và xác nhận khối lượng, chiến lược này duy trì tính linh hoạt đồng thời đảm bảo độ tin cậy. Thiết kế tham số của chiến lược giúp nó có khả năng thích ứng cao, nhưng cũng đòi hỏi các nhà đầu tư phải tối ưu hóa và điều chỉnh theo các điều kiện cụ thể của thị trường. Nhìn chung, đây là một khuôn khổ chiến lược cần được tối ưu hóa và thực hành thêm.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-15 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=6
strategy("Breakout Strategy", overlay=true, calc_on_every_tick=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, pyramiding=1, fill_orders_on_standard_ohlc=true)
// Input Parameters
start_date = input(timestamp("2018-01-01 00:00"), "Start Date")
end_date = input(timestamp("2060-01-01 00:00"), "End Date")
in_time_range = true
length = input.int(27, title="Donchian Channel Length", minval=1, tooltip="Number of bars used to calculate the Donchian channel.")
lag = input.int(10, title="Donchian Channel Offset", minval=1, tooltip = "Offset to delay the Donchian channel, enhancing stability.")
volume_mult = input.float(1.4, title="Volume Multiplier", minval=0.1, step=0.1, tooltip="Multiplier for the average volume to filter breakout conditions.")
closing_condition = input.string("Mid", title="Trade Closing Band", options= ["Upper","Lower","Mid"], tooltip = "Donchian Channel Band to use for exiting trades: Upper, Lower, or Middle.") //
// Donchian Channel (Lagged for Stability)
upper_band = ta.highest(high[lag], length)
lower_band = ta.lowest(low[lag], length)
middle_band = (upper_band + lower_band) / 2
plot(upper_band, color=color.blue, title="Upper Band (Lagged)")
plot(middle_band, color=color.orange, title="Middle Band")
plot(lower_band, color=color.blue, title="Lower Band (Lagged)")
// Volume Filter
avg_volume = ta.sma(volume, length)
volume_condition = volume > avg_volume * volume_mult
// Long Breakout Condition
long_condition = close > upper_band and volume_condition
bool reverse_exit_condition = false
// Exit Condition (Close below the middle line)
if closing_condition == "Lower"
reverse_exit_condition := close < lower_band
else if closing_condition == "Upper"
reverse_exit_condition := close < upper_band
else
reverse_exit_condition := close < middle_band
// Long Strategy: Entry and Exit
if in_time_range and long_condition
strategy.entry("Breakout Long", strategy.long)
// Exit on Reverse Signal
if in_time_range and reverse_exit_condition
strategy.close("Breakout Long", comment="Reverse Exit")