Chiến lược giao dịch kết hợp nhiều chỉ số

Tác giả:ChaoZhang, Ngày: 2023-10-26 15:22:28
Tags:

img

Tổng quan

Chiến lược này kết hợp các chỉ số CCI, ADX và AO để tạo ra tín hiệu giao dịch cho các vị trí dài và ngắn. CCI xác định mức mua quá mức và bán quá mức, ADX xác định sức mạnh và hướng xu hướng, và AO hỗ trợ các thị trường dao động. Sự kết hợp nhiều chỉ số cải thiện sự ổn định và hiệu quả của hệ thống giao dịch.

Chiến lược logic

  1. CCI chỉ ra mua quá mức trên 100 và bán quá mức dưới -100. Chiến lược này đi dài khi CCI dưới 0.

  2. ADX đo sức mạnh xu hướng. DI + cho thấy sức mạnh xu hướng tăng, DI- cho thấy sức mạnh xu hướng giảm. ADX là sức mạnh xu hướng trung bình. Chiến lược này đi dài khi DI + dưới 25.

  3. AO là SMA nhanh trừ SMA chậm. AO tăng đại diện cho tăng động lực tăng, và AO giảm đại diện cho tăng động lực giảm. Chiến lược này đi dài khi AO dưới 0.

  4. Các quy tắc giao dịch là: Đi dài khi CCI < 0 và DI+ < 25 và AO < 0; Đóng dài khi DI+ > 25.

  5. Tính năng tính toán kích thước đơn đặt hàng dưới dạng vốn chủ sở hữu chia cho giá đóng cửa và làm tròn xuống, để điều chỉnh đơn đặt hàng khi thay đổi vốn chủ sở hữu tài khoản.

  6. Sử dụng strategy.entry cho tín hiệu dài, và strategy.close cho tín hiệu ra.

Ưu điểm

  1. CCI lọc tiếng ồn từ các thị trường khác nhau, giảm tín hiệu sai.

  2. ADX xác định xu hướng mạnh hơn sớm.

  3. AO tránh giao dịch thị trường hỗn loạn.

  4. Nhiều chỉ số xác minh tín hiệu, tăng độ tin cậy.

  5. Định kích thước vị trí năng động quản lý rủi ro hiệu quả.

  6. Lý luận đơn giản và rõ ràng, dễ làm theo.

Rủi ro

  1. CCI gặp khó khăn trong việc xác định phạm vi vkosd.

  2. ADX đã bị chậm trong việc bắt kịp xu hướng.

  3. AO đang phải vật lộn với sự hợp nhất.

  4. Cài đặt chỉ số kém dẫn đến lọc quá mức và bỏ lỡ giao dịch.

  5. Định giá động phụ thuộc vào biến động và thị trường.

  6. Khả năng rút vốn lớn, đòi hỏi quản lý rủi ro nghiêm ngặt.

Những cải tiến

  1. Tối ưu hóa các thông số CCI cho các thị trường khác nhau.

  2. Tối ưu hóa các thông số ADX để bắt được sự thay đổi xu hướng.

  3. Điều chỉnh các thông số AO cho môi trường biến động.

  4. Kết hợp thử nghiệm để tìm ra trọng lượng chỉ số tối ưu.

  5. Thêm stop loss để điều khiển rút.

  6. Tích hợp âm lượng để tránh sự phá vỡ sai.

  7. Tùy chỉnh kích thước vị trí cố định theo thiết bị.

Kết luận

Chiến lược này kết hợp CCI, ADX và AO để tạo ra các tín hiệu dài khá đáng tin cậy. Định kích thước năng động và kiểm soát rủi ro quản lý vị trí. Logic là đơn giản và rõ ràng cho người mới bắt đầu. Nhưng nó gặp khó khăn trong các thị trường khác nhau, với tiềm năng tối ưu hóa đáng kể cần thiết cho các thị trường khác nhau.


/*backtest
start: 2022-10-19 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Strategy Niel", shorttitle="Strategy Niel", max_bars_back=2000, initial_capital=1000)

//Input variables
buywhenadxabove = input(25)
buywhendiplusbelow = input(10)
buywhenccibelow = input(0)
buywhenawesomeoscillatorbelow = input(0)
sellwhendiplusabove = input(25)

//CCI script
numberofbarsforcci = input(20)
CCI = cci(close,numberofbarsforcci)

//+DI and ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
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)

//plot(sig, color=red, title="ADX")
//plot(up, color=blue, title="+DI")
//plot(down, color=orange, title="-DI")


//Awesome Oscillator
nLengthSlow = input(34, minval=1, title="Length Slow")
nLengthFast = input(5, minval=1, title="Length Fast")
xSMA1_hl2 = sma(hl2, nLengthFast)
xSMA2_hl2 = sma(hl2, nLengthSlow)
xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
cClr = xSMA1_SMA2 > xSMA1_SMA2[1] ? blue : red
//plot(xSMA1_SMA2, style=histogram, linewidth=1, color=cClr)

buy = sig > buywhenadxabove and up < buywhendiplusbelow  and CCI < buywhenccibelow and xSMA1_SMA2 < buywhenawesomeoscillatorbelow 

ordersize=floor(strategy.equity/close) // Floor returns largest integer, strategy.equity gives total equity remaining - allows to dynamically calculate the order size as the account equity increases or decreases.
strategy.entry("long",strategy.long,ordersize,when= buy) //strategy.entry let's you enter the market variables id ("long"), strategy.long (long position entry), size of the order and when the order should happen
bought = strategy.position_size[0] > strategy.position_size[1]
entry_price = valuewhen(bought, open, 0)
sell = up > sellwhendiplusabove 
strategy.close("long", when=sell ) //strategy.close let's you close your position with variables id ('long') and when this should happen




Thêm nữa