Chiến lược này được gọi là
Cốt lõi của chiến lược này là sử dụng chỉ số Supertrend để xác định xu hướng giá hiện tại. Supertrend kết hợp trung bình động và ATR, có hiệu quả trong việc đánh giá hướng xu hướng giá. Khi hướng của Supertrend đảo ngược, nó báo hiệu rằng xu hướng giá đang thay đổi.
Cụ thể, chiến lược này đầu tiên tính toán hướng siêu xu hướng, RSI và ADX. Khi siêu xu hướng giảm, và RSI cho thấy xu hướng tăng đang phai mờ, nó sẽ đi vào ngắn. Khi siêu xu hướng xuất hiện một lần nữa, nó sẽ đóng vị trí ngắn.
Ưu điểm lớn nhất của chiến lược này là nó có thể tự động xác định xu hướng giá và thực hiện các bước vào và ra dựa trên xu hướng, mà không cần đánh giá thủ công. Ngoài ra, sử dụng RSI và ADX làm bộ lọc có thể ngăn chặn hiệu quả các đột phá sai và cải thiện lợi nhuận.
Rủi ro lớn nhất là Supertrend không chính xác trong việc đánh giá xu hướng giá, có thể tạo ra các tín hiệu không chính xác.
Tối ưu hóa có thể được thực hiện bằng cách điều chỉnh các thông số Supertrend và thêm stop loss để giảm rủi ro.
Một số khía cạnh của chiến lược này có thể được tối ưu hóa:
Tối ưu hóa các thông số Supertrend để cải thiện độ chính xác
Thêm stop loss sau vào kiểm soát cho mỗi lỗ giao dịch
Thêm thêm các bộ lọc như Bollinger Bands, KDJ để cải thiện lợi nhuận
Xây dựng các quy tắc nhập và ra dài tương tự để hoàn thành chiến lược
Kết luận, đây là một chiến lược giao dịch tự động đánh giá xu hướng dựa trên Supertrend. Ưu điểm là mức độ tự động hóa cao và phát hiện xu hướng tự động. Nhược điểm là độ chính xác thấp của Supertrend và không có stop loss. Điều chỉnh tham số, thêm bộ lọc và stop loss có thể tăng lợi nhuận và kiểm soát rủi ro.
/*backtest start: 2023-01-16 00:00:00 end: 2024-01-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Supertrend Strategy", overlay=true) atrPeriod = input(10, "ATR Length") factor = input.float(3.0, "Factor", step = 0.01) [_, direction] = ta.supertrend(factor, atrPeriod) adxlen = input(7, title="ADX Smoothing") dilen = input(7, title="DI Length") dirmov(len) => up = ta.change(high) down = -ta.change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truerange = ta.rma(ta.tr, len) plus = fixnan(100 * ta.rma(plusDM, len) / truerange) minus = fixnan(100 * ta.rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) adx sig = adx(dilen, adxlen) if ta.change(direction) < 0 and ta.rsi(close, 21) < 66 and ta.rsi(close, 3) > 80 and ta.rsi(close, 28) > 49 and sig > 20 strategy.entry("My Long Entry Id", strategy.long) if ta.change(direction) > 0 strategy.close("My Long Entry Id") //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)