Đây là một chiến lược giao dịch định lượng nắm bắt sự đột phá xu hướng bằng cách sử dụng chỉ số ATR và giá đóng cửa. Chiến lược tính toán động các đường xu hướng trên và dưới để xác định hướng xu hướng và tạo ra các tín hiệu giao dịch khi giá đóng cửa phá vỡ đường xu hướng. Chiến lược cũng thiết lập mức dừng lỗ và mức giá mục tiêu và cho phép dừng lại dựa trên biến động.
Giải pháp:
Phân tích nhiều khung thời gian giúp lọc ra tiếng ồn để xác định xu hướng ổn định hơn. Xác nhận khối lượng và giá trước khi phá vỡ có thể loại bỏ các tín hiệu sai. Tối ưu hóa kích thước vị trí cải thiện hiệu quả vốn. Tối ưu hóa các thông số dừng lỗ và phần thưởng / rủi ro có thể tăng lợi nhuận điều chỉnh rủi ro. Làm tinh chỉnh logic dừng theo dõi cho phép nắm bắt nhiều lợi nhuận xu hướng hơn trong khi kiểm soát giảm.
Chiến lược này sử dụng ATR như một thước đo biến động để điều chỉnh động các vị trí đường xu hướng và nắm bắt sự đột phá xu hướng. Nó thiết lập các mục tiêu dừng lỗ và lợi nhuận hợp lý, sử dụng các điểm dừng để khóa lợi nhuận. Các tham số có thể điều chỉnh để thích nghi mạnh mẽ. Tuy nhiên, các chiến lược đột phá xu hướng dễ bị tổn thất trong điều kiện hỗn loạn và đòi hỏi tối ưu hóa và tinh chỉnh hơn nữa. Kết hợp nhiều khung thời gian, lọc tín hiệu, tối ưu hóa kích thước vị trí, tối ưu hóa tham số và các kỹ thuật khác có thể cải thiện hiệu suất và độ bền của chiến lược.
/*backtest start: 2023-03-16 00:00:00 end: 2024-03-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title = "Claw-Pattern", overlay=true, calc_on_every_tick=true, default_qty_type= strategy.percent_of_equity,default_qty_value=10, currency="USD") //Developer: Trading Strategy Guides //Creator: Trading Strategy Guides //Date: 3/18/2024 //Description: A trend trading system strategy atr_period = input(title="ATR Period", defval=120, type=input.integer) atr_mult = input(title="ATR Multiplier", defval=2, type=input.integer) dir = input(title="Direction (Long=1, Short=-1, Both = 0)", defval=1, type=input.integer) factor = input(title="Stop Level Deviation (% Chan.)", defval=0.75, type=input.float) rr = input(title="Reward to Risk Multiplier", defval=2, type=input.integer) trail_bar_start = input(title="Trail Stop Bar Start", defval=20, type=input.integer) col_candles = input(title="Enable Colored Candles", defval=false, type=input.bool) atr_signal = atr(atr_period) lower_trend = low - atr_mult*atr_signal upper_trend = high + atr_mult*atr_signal upper_trend := upper_trend > upper_trend[1] and close < upper_trend[1] ? upper_trend[1] : upper_trend lower_trend := lower_trend < lower_trend[1] and close > lower_trend[1] ? lower_trend[1] : lower_trend upper_color = barssince(cross(close, upper_trend[1])) > barssince(cross(close, lower_trend[1])) ? color.red : na lower_color = barssince(cross(close, upper_trend[1])) > barssince(cross(close, lower_trend[1])) ? na : color.green trend_line = lower_trend plot(lower_trend, color=lower_color, title="Lower Trend Color") plot(upper_trend, color=upper_color, title="Upper Trend Color") is_buy = strategy.position_size == 0 and crossover(close, upper_trend[1]) and upper_color[1]==color.red and (dir == 1 or dir == 0) is_sell = strategy.position_size == 0 and crossover(close, lower_trend[1]) and lower_color[1]==color.green and (dir == -1 or dir == 0) if is_buy strategy.entry("Enter Long", strategy.long) else if is_sell strategy.entry("Enter Short", strategy.short)