Chiến lược này tạo ra các tín hiệu giao dịch dựa trên sự chéo chéo của chỉ số hướng dương (DI +) và chỉ số hướng âm (DI-) được tính từ phạm vi trung bình thực sự (ATR).
Tính toán ATR(14): Tính toán phạm vi trung bình thực sự trong 14 ngày qua bằng cách sử dụng giá cao, thấp và gần.
Tính toán DI+ và DI-:
DI+ = 100 * RMA(MAX(UP,0),N) / ATNR
DI- = 100 * RMA(MAX(DOWN,0),N) / ATNR
Trong đó UP là chênh lệch giữa mức cao hiện tại và mức đóng cửa trước đó, DOWN là chênh lệch giữa mức thấp hiện tại và mức đóng cửa trước đó, N là khoảng thời gian tham số, mặc định là 14, và ATNR là ATR được tính từ bước 1.
Xác định nhập và xuất:
Khi DI + vượt qua DI-, một tín hiệu mua được tạo ra.
Khi DI + vượt dưới DI-, một tín hiệu bán được tạo ra.
Thiết lập dừng lỗ và lấy lợi nhuận:
Stop loss dài là giá nhập khẩu trừ ATR nhân số nhân stop loss
Lợi nhuận mua dài là giá nhập cảnh cộng với ATR nhân với nhân lợi nhuận lấy
Giá stop loss ngắn là giá đầu vào cộng với ATR nhân với nhân stop loss
Lợi nhuận ngắn là giá nhập khẩu trừ ATR nhân nhân nhân lợi nhuận
Sử dụng DI + / DI - chéo để xác định sự đảo ngược xu hướng cung cấp tín hiệu kịp thời cho hướng xu hướng mới.
ATR là chỉ số dừng lỗ / lấy lợi nhuận động có thể thiết lập mức hợp lý dựa trên biến động thị trường.
Chiến lược có ít thông số và dễ hiểu và thực hiện.
Kết quả thử nghiệm cho thấy chiến lược này có yếu tố lợi nhuận tích cực và vượt trội hơn mua & giữ.
Rủi ro tín hiệu sai từ sự giao thoa DI
Stop loss/take profit quá gần
Không hiệu quả trên thị trường giới hạn phạm vi
Nguy cơ rút vốn
Thêm các bộ lọc như trung bình động để tránh tín hiệu sai trong các giai đoạn giới hạn phạm vi.
Thực hiện kích thước vị trí như phân số cố định hoặc Martingale để kiểm soát rút tiền và tăng lợi nhuận.
Tối ưu hóa các tham số ATR để phù hợp với sự biến động của các công cụ giao dịch khác nhau.
Tối ưu hóa tham số trên thời gian DI, thời gian ATR, nhân ATR v.v. để tìm sự kết hợp tối ưu.
Thêm logic trong đêm và buổi họp sớm để chạy chiến lược 24/7.
Đây là một chiến lược đơn giản và thực tế tạo ra các tín hiệu từ DI crossover và thiết lập stop loss / take profit năng động với ATR. Với một số tham số ít, nó dễ dàng kiểm tra và tối ưu hóa. Nhưng DI crossover ít hiệu quả hơn trong quá trình hợp nhất. Tiếp theo, kết hợp các bộ lọc bổ sung là khu vực cải tiến chính. Nhìn chung chiến lược này cho thấy hiệu suất ổn định phù hợp với giao dịch trong ngày ngắn hạn.
/*backtest start: 2022-11-06 00:00:00 end: 2023-11-12 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © TheHulkTrading //@version=4 strategy("DI Crossing Daily Straregy HulkTrading", overlay=true) // ATR Multiplier. Recommended values between 1..4 atr_multiplier = input(1, minval=1, title="ATR Multiplier") //Length of DI. Recommended default value = 14 length = input(14, minval=1, title="Length di") up = change(high) down = -change(low) range = rma(tr, 14) //DI+ and DI- Calculations di_plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, length) / range) di_minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, length) / range) //Long and short conditions longCond = crossover(di_plus,di_minus) shortCond = crossunder(di_plus,di_minus) //Stop levels and take profits stop_level_long = strategy.position_avg_price - atr_multiplier*atr(14) take_level_long = strategy.position_avg_price + 2*atr_multiplier*atr(14) stop_level_short = strategy.position_avg_price + atr_multiplier*atr(14) take_level_short = strategy.position_avg_price - 2*atr_multiplier*atr(14) //Entries and exits strategy.entry("Long", strategy.long, when=longCond) strategy.exit("Close Long","Long", stop=stop_level_long, limit = take_level_long) strategy.entry("Short", strategy.short, when=shortCond) strategy.exit("Close Short","Short", stop=stop_level_short, limit = take_level_short)