Chiến lược này xác định xu hướng giá bằng cách tính toán chỉ số Supertrend và thiết lập các vị trí dài hoặc ngắn khi xu hướng thay đổi.
Chiến lược này sử dụng hàm ta.supertrend() để tính toán chỉ số Supertrend. Supertrend kết hợp phạm vi trung bình thực sự và giá trung bình để xác định giá có đang trong xu hướng tăng hay giảm. Khi giá thay đổi từ xu hướng giảm sang xu hướng tăng, chiến lược phát hiện sự thay đổi hướng bằng cách sử dụng ta.change() và thiết lập một vị trí dài. Khi giá chuyển từ xu hướng tăng sang xu hướng giảm, một vị trí ngắn được thực hiện.
Mức stop loss stop_loss và take profit level profit được thiết lập để đặt lệnh stop loss và take profit sau khi nhập vào các vị trí để kiểm soát rủi ro.
Cụ thể, chiến lược được thực hiện thông qua các bước sau:
Các bước trên có thể nắm bắt hiệu quả những thay đổi xu hướng và nắm giữ các vị trí tại những thời điểm thích hợp.
Ưu điểm lớn nhất của chiến lược này là khả năng theo dõi tự động những thay đổi xu hướng mà không cần đánh giá bằng tay.
Ngoài ra, các mức dừng lỗ và lấy lợi nhuận được xác định trước cho phép dừng lỗ và lấy lợi nhuận tự động, có hiệu quả giới hạn lỗ giao dịch đơn và khóa lợi nhuận.
So với các chiến lược trung bình động đơn giản, chiến lược này có khả năng xác định xu hướng vượt trội và phù hợp hơn với các thị trường xu hướng.
Rủi ro lớn nhất của chiến lược này đến từ việc điều chỉnh tham số không đúng của chỉ số Supertrend. Nếu các tham số không được đặt đúng cách, hiệu quả của chỉ số trong việc phát hiện thay đổi xu hướng sẽ bị ảnh hưởng. Một khoảng thời gian ATR quá dài hoặc một yếu tố quá nhỏ có thể làm chậm phản ứng của Supertrend đối với biến động giá, gây ra cơ hội nhập cảnh bị bỏ lỡ.
Ngoài ra, mức dừng lỗ và lấy lợi nhuận ảnh hưởng đáng kể đến hiệu suất chiến lược. Một mức dừng lỗ quá chặt sẽ dễ dàng bị dừng sớm. Một mức lấy lợi nhuận quá rộng có thể bỏ lỡ các điểm thoát lý tưởng. Nỗ lực tối ưu hóa rộng rãi là cần thiết để tìm ra các giá trị tham số tối ưu cho các điều kiện thị trường và công cụ giao dịch khác nhau.
Cuối cùng, giống như tất cả các chiến lược theo xu hướng, sự đảo ngược xu hướng đột ngột và whipsaws vẫn có thể gây ra tổn thất cần phải được kiểm soát thông qua quản lý tiền đúng cách.
Các khía cạnh sau đây của chiến lược có thể được tăng cường:
Tối ưu hóa các thông số của chỉ số Supertrend, bao gồm thời gian và yếu tố ATR thông qua backtesting.
Bao gồm các quy tắc định kích thước vị trí dựa trên các chỉ số hiệu suất như lợi nhuận và rút tiền.
Tăng cường với các mô hình học máy để hỗ trợ xác định xu hướng.
Thêm bộ lọc dựa trên các chỉ số khác như đường trung bình động và các biện pháp biến động để tránh tín hiệu sai.
Tối ưu hóa động mức dừng lỗ và lấy lợi nhuận dựa trên biến động thị trường và kích thước vị trí.
Các cải tiến trên có thể cải thiện lợi nhuận, ổn định và quản lý rủi ro của chiến lược.
Nhìn chung, đây là một chiến lược theo xu hướng rất thực tế. Nó tự động theo dõi những thay đổi xu hướng và sử dụng stop loss và take profit để kiểm soát rủi ro. So với các chiến lược trung bình động đơn giản, nó có khả năng xác định xu hướng vượt trội và phù hợp hơn với các thị trường xu hướng. Với một số tối ưu hóa tham số và tăng cường học máy, chiến lược này có thể đạt được sự ổn định và lợi nhuận tốt hơn. Nó xứng đáng với nghiên cứu và ứng dụng thêm.
/*backtest start: 2024-01-04 00:00:00 end: 2024-01-11 00:00:00 period: 5m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Supertrend Strategy", overlay=true, default_qty_type=strategy.percent_of_equity) // Stop loss and profit amount stop_loss = input(300, title="Stop Loss Amount") profit = input (800, title="Profit Amount") 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 long_condition_1= (long_condition)?1:0 short_condition_2 = (short_condition)?1: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) if (long_condition) strategy.entry("Michael3 Long Entry Id", strategy.long) if (short_condition) strategy.entry("Michael3 Short Entry Id", strategy.short) if (strategy.position_size>0) strategy.exit("exit_long",from_entry="Michael3 Long Entry Id",limit=profit_price_long,stop=stop_price_long) if (strategy.position_size<0) strategy.exit("exit_short",from_entry="Michael3 Short Entry Id",limit=profit_price_short,stop=stop_price_short) //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)