
Đây là một chiến lược giao dịch định lượng sử dụng chỉ số ATR và giá đóng cửa để nắm bắt sự phá vỡ xu hướng. Chiến lược này đánh giá hướng xu hướng bằng cách tính toán động đường xu hướng lên xuống và tạo ra tín hiệu giao dịch khi giá đóng cửa phá vỡ đường xu hướng. Chiến lược này đồng thời thiết lập mức dừng và giá mục tiêu và có thể dừng lại theo biến động.
Giải pháp:
Nhiều chu kỳ thời gian giúp lọc tiếng ồn và nắm bắt xu hướng ổn định hơn. Chứng minh chỉ số giá trị trước khi phá vỡ có thể loại bỏ tín hiệu sai. Tối ưu hóa quản lý vị trí có thể cải thiện hiệu quả sử dụng vốn. Tối ưu hóa các tham số Stop Loss và Loss Ratio có thể cải thiện tỷ lệ rủi ro lợi nhuận chiến lược.
Chiến lược này sử dụng ATR để đo lường tỷ lệ biến động, điều chỉnh vị trí đường xu hướng một cách động, nắm bắt các trường hợp phá vỡ xu hướng. Đặt mục tiêu dừng lỗ và lợi nhuận một cách hợp lý và sử dụng lệnh dừng lỗ di động để khóa lợi nhuận. Các tham số có thể điều chỉnh được, thích ứng mạnh mẽ. Tuy nhiên, chiến lược phá vỡ xu hướng cũng dễ bị ảnh hưởng bởi các tình huống xung đột, cần được tối ưu hóa và cải thiện thêm.
/*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)