
Chiến lược này sử dụng các chỉ số động lực như đường dẫn trung bình (ADX), chỉ số chuyển động (DMI) và chỉ số đường đi của hàng hóa (CCI) để xác định hướng xu hướng và theo dõi xu hướng. Khi ADX và chỉ số xu hướng xác nhận xu hướng hình thành, hãy thiết lập vị trí khi CCI vượt quá.
Tính ADX, DMI và CCI.
Đánh giá xu hướng.
Vào sân.
Bỏ trận thua.
Sử dụng ADX để đánh giá xu hướng mạnh hoặc yếu, tránh giao dịch vô nghĩa khi không có xu hướng rõ ràng.
Sử dụng DMI để xác định xu hướng và giảm khả năng phán đoán sai.
Bước vào khi CCI vượt quá, bạn có thể bắt kịp thời điểm biến động xu hướng, giảm rủi ro vào.
Việc sử dụng kết hợp các chỉ số động lực có thể cải thiện độ chính xác phán đoán.
Có một hệ thống ngăn chặn để hạn chế tổn thất.
Khi ADX đi xuống, sẽ có nhiều giao dịch lo lắng dẫn đến tổn thất. Bạn có thể tăng ngưỡng đầu vào ADX một cách thích hợp để đảm bảo xu hướng đủ rõ ràng.
Chỉ số DMI bị tụt hậu, có thể bỏ lỡ cơ hội đầu tiên của xu hướng. Nó có thể được kết hợp với các chỉ số khác hoặc phân tích kỹ thuật đồ họa để xác định thời gian nhập cảnh.
CCI dễ tạo ra giao dịch thường xuyên. CCI có thể được nới lỏng một cách thích hợp, lọc một số tiếng ồn.
Khi thực hiện nhiều lệnh nhượng quyền và giữ vị trí, bạn có thể xem xét áp dụng chiến lược trung lập thị trường chứng khoán, đưa ra quy tắc bảo vệ thời gian để giảm rủi ro vị trí tổng thể.
Tối ưu hóa tham số ADX để tìm sự cân bằng tốt nhất giữa lọc tiếng ồn và bắt theo xu hướng theo thời gian.
Tối ưu hóa tham số DMI, cân bằng độ chậm trễ và độ nhạy.
Tối ưu hóa các tham số CCI, cân bằng tần số giao dịch và khả năng nắm bắt sự đảo ngược.
Thử nghiệm thêm hoặc sửa đổi các chỉ số khác để tìm kết hợp tốt hơn. Ví dụ: MACD, KDJ, v.v.
Kiểm tra các giống thương mại để tìm ra giống phù hợp nhất.
Tối ưu hóa chiến lược quản lý vị trí, kiểm soát rủi ro trong khi vẫn có khả năng theo dõi xu hướng.
Chiến lược này sử dụng ADX phán đoán xu hướng, DMI xác định hướng, CCI định vị điểm đảo chiều tư tưởng để theo dõi xu hướng giao dịch, có logic mạnh mẽ hơn. Tuy nhiên, vẫn cần tối ưu hóa cho các tham số và phối hợp với quản lý vị trí để kiểm soát rủi ro. Nếu các tham số được điều chỉnh ở mức độ thích hợp, áp dụng trên các giống có xu hướng rõ ràng, chiến lược này có khả năng thu được lợi nhuận ổn định.
/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("ADX Strategy", currency = "USD", initial_capital = 1000, overlay=true)
adxlen = input(9, title="ADX Smoothing")
dilen = input(14, title="DI Length")
ADX_Entry = input(25, title="ADX Entry")
dirmov(len) =>
up = change(high)
down = -change(low)
truerange = rma(tr, len)
plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
[adx, plus, minus]
[sig, up, down] = adx(dilen, adxlen)
cci_length = input(20, minval=1, title="CCI Length")
cci_ma = sma(close, cci_length)
cci = (close - cci_ma) / (0.015 * dev(close, cci_length))
stop_loss = syminfo.mintick * 100
open_longs = strategy.position_size > 0
open_shorts = strategy.position_size < 0
possible_bull = false
possible_bull := not open_longs ? (possible_bull[1] and not crossunder(up,down) ? true : false) : false
possible_bear = false
possible_bear := not open_shorts ? (possible_bear[1] and not crossunder(down,up) ? true : false) : false
bool bull_entry = crossover(up,down)
if(bull_entry and up < ADX_Entry and cci < 0)
possible_bull := true
bull_entry := false
if(possible_bull and up > ADX_Entry and cci > -100)
bull_entry := true
bool bear_entry = crossover(down,up)
if(bear_entry and down < ADX_Entry and cci > 0)
possible_bear := true
bear_entry := false
if(possible_bear and down >= ADX_Entry and cci < 100)
bear_entry := true
strategy.entry("Short", strategy.short, qty = 1,comment="Short", stop=high[1] - stop_loss, when = bear_entry)
strategy.entry("Long", strategy.long, qty = 1, comment="Long", stop=low[1] - stop_loss, when = bull_entry )
strategy.close_all(when = (open_shorts and (crossover(up,down) or crossover(sig,down))) or (open_longs and ( crossover(down,up) or crossover(sig, up))))