Chiến lược Supertrend Moving Stop Loss Take Profit là một chiến lược giao dịch định lượng dựa trên chỉ số Supertrend. Chiến lược này xây dựng các điều kiện đầu vào và xuất cảnh dài và ngắn để thực hiện dừng lỗ và chuyển lợi nhuận. Ưu điểm của chiến lược là nó có thể đạt được lợi nhuận cao hơn trong xu hướng bền vững, trong khi khóa hầu hết lợi nhuận thông qua chuyển lợi nhuận. Tuy nhiên, chiến lược cũng nhạy cảm với thất bại đột phá.
Đây là một chiến lược theo xu hướng dựa trên chỉ số siêu xu hướng. Chỉ số siêu xu hướng có thể xác định hướng của xu hướng giá. Nó tạo ra tín hiệu mua và bán khi đường siêu xu hướng vượt qua đường 0. Cụ thể, một tín hiệu mua được tạo ra khi đường siêu xu hướng vượt qua trên đường 0, một tín hiệu bán được tạo ra khi đường vượt qua dưới đường 0. Tỷ lệ giữa giá đóng và giá đóng ngày trước xác định điểm lợi nhuận chuyển động. ATR xác định điểm dừng lỗ. Do đó, một chiến lược dừng lỗ lợi nhuận chuyển động được xây dựng dựa trên chỉ số siêu xu hướng để xác định hướng xu hướng.
Lợi thế lớn nhất của chiến lược này là sự kết hợp của việc xác định xu hướng và chuyển động lấy lợi nhuận. Chỉ số Supertrend có thể nắm bắt xu hướng khá chính xác thông qua các đường chéo đường 0. Di chuyển lấy lợi nhuận cho phép khóa hầu hết lợi nhuận trong khi xu hướng tồn tại. Cài đặt dừng lỗ cũng giúp kiểm soát rủi ro. Do đó, chiến lược có thể đạt được lợi nhuận cao hơn trong các thị trường xu hướng rõ ràng. Ngoài ra, logic đơn giản và rõ ràng cũng là một lợi thế của chiến lược.
Rủi ro lớn nhất của chiến lược này là sự nhạy cảm của nó đối với thất bại đột phá. Trong các giai đoạn giới hạn phạm vi, chỉ số Supertrend có thể tạo ra các đột phá sai dẫn đến các vị trí được thiết lập sai. Điều này có thể dễ dàng dẫn đến việc bị mắc kẹt trong cạm bẫy. Ngoài ra, cơ chế lấy lợi nhuận di chuyển có thể thoát khỏi các vị trí quá sớm, bỏ lỡ các bước di chuyển tiếp theo. Cuối cùng, cài đặt dừng lỗ không đúng cũng có thể quá lỏng lẻo hoặc quá hung hăng, làm tăng rủi ro. Do đó, đây là những lĩnh vực mà chiến lược cần phải cảnh giác.
Chiến lược có thể được tối ưu hóa từ các khía cạnh sau: 1) Xác định hợp lý các thông số Supertrend để tránh tín hiệu sai; 2) Thêm các cơ chế để đánh giá độ tin cậy đột phá, chẳng hạn như tín hiệu khối lượng; 3) Tối ưu hóa các thông số di chuyển lấy lợi nhuận để giảm khả năng whipsaw trong khi đảm bảo lợi nhuận; 4) Sử dụng các điểm dừng động dựa trên biến động thay vì điểm dừng tĩnh; 5) Thêm các chỉ số khác cho các chiến lược tập hợp để cải thiện độ bền.
Nhìn chung, chiến lược Supertrend Moving Stop Loss Take Profit là một chiến lược theo xu hướng hợp lý. Nó có thể xác định một cách hợp lý hướng xu hướng và có cơ chế lấy lợi nhuận chuyển động. Nhưng nó cũng nhạy cảm với sự đột phá không hợp lệ và có một số rủi ro. Tăng cường thêm các tham số, quy tắc đánh giá, cơ chế dừng vv có thể cải thiện chiến lược và làm cho nó trở thành một chiến lược giao dịch ổn định và hiệu quả.
/*backtest start: 2023-01-01 00:00:00 end: 2024-01-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("ST Michael Moving TP", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15) // Stop loss and profit amount stop_loss = input(1500, title="Stop Loss Amount") profit = input (15000, title="Profit Amount") LongTrailProfit = input (0.91, title = "Long Trailing Profit Taking") ShortTrailProfit = input (1.01, title = "Short Trailing Profit Taking") atrPeriod = input(10, "ATR Length") factor = input.float(3.0, "Factor", step = 0.01) [_, direction] = ta.supertrend(factor, atrPeriod) long_condition = ta.change(direction) <0 short_condition = ta.change(direction) >0 stop_price_long = ta.valuewhen(long_condition, low[0]-stop_loss,0) profit_price_long = ta.valuewhen(long_condition, high[0]+profit,0) stop_price_short = ta.valuewhen(short_condition, high[0]+stop_loss,0) profit_price_short = ta.valuewhen(short_condition, low[0]-profit,0) atr=ta.atr(10) intrade_long = strategy.position_size > 0 intrade_short = strategy.position_size < 0 exitConditionLong = (close < (close[1]*LongTrailProfit)) exitConditionShort = (close > (close[1]*ShortTrailProfit)) if (long_condition) strategy.entry("Long3", strategy.long) if (intrade_long and exitConditionLong) strategy.close("Long3") if (short_condition) strategy.entry("Short3", strategy.short) if (intrade_short and exitConditionShort) strategy.close ("Short3") if (strategy.position_size>0) strategy.exit("exit_long",from_entry="Long3",limit=profit_price_long,stop=stop_price_long) if (strategy.position_size<0) strategy.exit("exit_short",from_entry="Short3",limit=profit_price_short,stop=stop_price_short)