Chiến lược dài hạn và ngắn hạn của chỉ báo động lượng


Ngày tạo: 2023-11-02 16:34:48 sửa đổi lần cuối: 2023-11-02 16:34:48
sao chép: 0 Số nhấp chuột: 644
1
tập trung vào
1617
Người theo dõi

Chiến lược dài hạn và ngắn hạn của chỉ báo động lượng

Tổng quan

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á.

Nguyên tắc chiến lược

  1. Tính ADX, DMI và CCI.

    • ADX được sử dụng để đánh giá sức mạnh của xu hướng, khi ADX cao hơn ngưỡng thiết lập, xu hướng được coi là đủ mạnh.
    • DMI bao gồm DI+ và DI-, tương ứng cho thấy cường độ của xu hướng tăng và xu hướng giảm. Khi DI+ cao hơn DI-, nó được coi là xu hướng tăng, ngược lại là xu hướng giảm.
    • CCI được sử dụng để đánh giá tình trạng quá mua quá bán. Khi CCI thấp hơn 100, nó là quá bán và cao hơn 100 là quá mua.
  2. Đánh giá xu hướng.

    • Khi DI+ đeo trên DI- thì được đánh giá là xu hướng tăng.
    • Khi DI- đi qua DI+, nó được coi là xu hướng giảm.
  3. Vào sân.

    • Khi xu hướng tăng lên, ADX cao hơn ngưỡng và CCI thấp hơn -100, hãy tham gia nhiều hơn.
    • Khi xu hướng đi xuống, ADX cao hơn ngưỡng và CCI cao hơn 100, hãy tham gia vào thị trường.
  4. Bỏ trận thua.

    • Khi làm nhiều hơn, khi mặc DI+ dưới DI- thì thanh toán.
    • Khi trống, khi DI + mặc DI - thanh toán.

Phân tích lợi thế chiến lược

  1. 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.

  2. Sử dụng DMI để xác định xu hướng và giảm khả năng phán đoán sai.

  3. 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.

  4. 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.

  5. Có một hệ thống ngăn chặn để hạn chế tổn thất.

Rủi ro và bảo hiểm

  1. 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.

  2. 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.

  3. 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.

  4. 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ể.

Hướng tối ưu hóa chiến lược

  1. 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.

  2. Tối ưu hóa tham số DMI, cân bằng độ chậm trễ và độ nhạy.

  3. 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.

  4. 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.

  5. Kiểm tra các giống thương mại để tìm ra giống phù hợp nhất.

  6. 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.

Tóm tắt

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.

Mã nguồn chiến lược
/*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))))