Chiến lược dự đoán xu hướng thích ứng đa giai đoạn


Ngày tạo: 2024-02-01 14:34:38 sửa đổi lần cuối: 2024-02-01 14:34:38
sao chép: 0 Số nhấp chuột: 344
1
tập trung vào
1166
Người theo dõi

Chiến lược dự đoán xu hướng thích ứng đa giai đoạn

Tổng quan

Chiến lược này sử dụng các chỉ số đánh giá rủi ro động trung bình và chiết khấu đa chu kỳ để dự đoán chuyển động và đầu ra tín hiệu giao dịch kết hợp với các điểm phân loại trong hoạt động của thị trường. Chiến lược này được gọi là Chiến lược dự đoán chuyển động đa chu kỳ thích nghi.

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

Lý luận cốt lõi của chiến lược được chia thành hai dòng chính: dòng chính đầu tiên là sử dụng các tham số khác nhau để xây dựng hệ thống phán đoán lọc đa chu kỳ của trung bình di chuyển thích ứng nAMA, dòng chính thứ hai là sử dụng các tham số khác nhau để xây dựng hệ thống đánh giá rủi ro chiết khấu out để xây dựng hệ thống đánh giá rủi ro đa chu kỳ. Cuối cùng, hai dòng chính được kết hợp, tạo ra tín hiệu mua khi chu kỳ ngắn vượt quá chu kỳ dài.

Cụ thể, trong dòng chính đầu tiên, thiết lập trung bình di chuyển thích ứng với 10 chu kỳ và 4,24 tham số. Trong dòng chính thứ hai, thiết lập 7 chu kỳ và 4,300 tham số. Cuối cùng, 10 chu kỳ trong dòng chính đầu tiên được so sánh với 31 chu kỳ trong dòng chính thứ hai để tạo thành giao dịch.

Ngoài ra, trong chiến lược còn có mô-đun xác nhận giá trị. Chỉ khi khối lượng giao dịch lớn hơn khối lượng giao dịch trung bình 6 chu kỳ, tín hiệu giao dịch sẽ có hiệu lực. Điều này có thể lọc các tín hiệu giả đến một mức độ nhất định. Cuối cùng, trong chiến lược, các điểm phân loại ở các cấp chu kỳ khác nhau được vẽ như một tín hiệu tham khảo.

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

Ưu điểm lớn nhất của chiến lược này là sử dụng cấu trúc thích ứng đa chu kỳ, có thể điều chỉnh chu kỳ động theo các tham số thích ứng theo hoạt động của thị trường. Cho dù trong chương xu hướng hay trong khu vực chấn động, bạn có thể tìm thấy kết hợp chu kỳ tham số phù hợp, do đó cải thiện khả năng nắm bắt chuyển động của chiến lược.

Ngoài ra, chiến lược sử dụng hệ thống đánh giá rủi ro chiết khấu để lọc liên kết nhiều chu kỳ, có thể kiểm soát rủi ro giao dịch một cách hiệu quả và tránh tạo vị trí trong giai đoạn rủi ro cao. Đồng thời, chiến lược cũng đặt điều kiện lọc giá lượng để tránh phát sinh tín hiệu sai khi lượng không đủ.

Phân tích rủi ro chiến lược

Rủi ro lớn nhất của chiến lược này là cần nhiều vòng tròn để đánh giá đồng bộ, do đó khả năng nắm bắt thị trường đảo ngược ngắn hạn là kém. Khi đường thời gian ngắn và đường thời gian dài thay đổi cùng một lúc, có thể tạo ra tín hiệu không rõ ràng. Có thể tối ưu hóa bằng cách rút ngắn chu kỳ tham số.

Ngoài ra, các chu kỳ chính của các hệ thống đánh giá rủi ro chuyển động và chiết khấu tự điều chỉnh ngắn hơn so với bảng lớn và có một số độ trễ ở mức độ lái dài hơn. Bạn có thể kéo dài chu kỳ chính để giảm độ trễ.

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

  1. Giảm các tham số chu kỳ chính cho đường đánh giá rủi ro của đường trung bình di chuyển và đường chênh lệch, thay đổi thành 5 chu kỳ và 20 chu kỳ, cải thiện khả năng nắm bắt sự đảo ngược thị trường ngắn hạn.

  2. Tăng các tham số chu kỳ chính đến 20 chu kỳ và 50 chu kỳ, giảm sự chậm trễ do thị trường thúc đẩy ở cấp độ cao hơn.

  3. Tối ưu hóa các tham số giao dịch, thay đổi thành 0.5 lần ATR, giảm khả năng giao dịch ồn.

  4. Thêm các chỉ số xác thực kết quả như MACD, tăng độ tin cậy của tín hiệu.

Tóm tắt

Chiến lược này sử dụng nhiều chỉ số kỹ thuật như trung bình di chuyển thích ứng, đánh giá rủi ro chiết khấu và phân tích giá trị để xây dựng hệ thống quyết định giao dịch thích ứng nhiều chu kỳ. Thông qua điều chỉnh tối ưu hóa các tham số, có thể áp dụng cho các loại thị trường khác nhau, tự động xác định xu hướng và khu vực.

Mã nguồn chiến lược
/*backtest
start: 2023-01-25 00:00:00
end: 2024-01-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Best Rabbit Strategy", shorttitle="Rabbit God",overlay=true)
Length = input(10, minval=1)
xPrice = close
xvnoise = abs(xPrice - xPrice[1])
Fastend = input(2)
Slowend = input(30)
nfastend = 2/(Fastend + 1)
nslowend = 2/(Slowend + 1)
nsignal = abs(xPrice - xPrice[Length])
nnoise = sum(xvnoise, Length)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
nAMA = nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1]))

Length2 = input(10, minval=1)
xPrice2 = close
xvnoise2 = abs(xPrice2 - xPrice2[1])
Fastend2 = input(4)
Slowend2 = input(24)
nfastend2 = 2/(Fastend2 + 1)
nslowend2 = 2/(Slowend2 + 1)
nsignal2 = abs(xPrice2 - xPrice2[Length2])
nnoise2 = sum(xvnoise, Length2)
nefratio2 = iff(nnoise2 != 0, nsignal2 / nnoise2, 0)
nsmooth2 = pow(nefratio2 * (nfastend2 - nslowend2) + nslowend2, 2) 
nAMA2 = nz(nAMA2[1]) + nsmooth2 * (xPrice2 - nz(nAMA2[1]))

price = input(hl2)
len = input(defval=7,minval=1)
FC = input(defval=4,minval=1)
SC = input(defval=300,minval=1)
len1 = len/2
w = log(2/(SC+1))
H1 = highest(high,len1)
L1 = lowest(low,len1)
N1 = (H1-L1)/len1
H2 = highest(high,len)[len1]
L2 = lowest(low,len)[len1]
N2 = (H2-L2)/len1
H3 = highest(high,len)
L3 = lowest(low,len)
N3 = (H3-L3)/len
dimen1 = (log(N1+N2)-log(N3))/log(2)
dimen = iff(N1>0 and N2>0 and N3>0,dimen1,nz(dimen1[1]))
alpha1 = exp(w*(dimen-1))
oldalpha = alpha1>1?1:(alpha1<0.01?0.01:alpha1)
oldN = (2-oldalpha)/oldalpha
N = (((SC-FC)*(oldN-1))/(SC-1))+FC
alpha_ = 2/(N+1)
alpha = alpha_<2/(SC+1)?2/(SC+1):(alpha_>1?1:alpha_)
out = (1-alpha)*nz(out[1]) + alpha*price

price2 = input(hl2)
len2 = input(defval=31,minval=1)
FC2 = input(defval=40,minval=1)
SC2 = input(defval=300,minval=1)
len12 = len2/2
w2 = log(2/(SC2+1))
H12 = highest(high,len12)
L12 = lowest(low,len12)
N12 = (H1-L1)/len12
H22 = highest(high,len2)[len12]
L22 = lowest(low,len2)[len12]
N22 = (H22-L22)/len12
H32 = highest(high,len2)
L32 = lowest(low,len2)
N32 = (H32-L32)/len2
dimen12 = (log(N12+N22)-log(N32))/log(2)
dimen2 = iff(N12>0 and N22>0 and N32>0,dimen12,nz(dimen12[1]))
alpha12 = exp(w*(dimen2-1))
oldalpha2 = alpha12>1?1:(alpha12<0.01?0.01:alpha12)
oldN2 = (2-oldalpha2)/oldalpha2
N4 = (((SC2-FC2)*(oldN2-1))/(SC2-1))+FC2
alpha_2 = 2/(N4+1)
alpha2 = alpha_2<2/(SC2+1)?2/(SC2+1):(alpha_2>1?1:alpha_2)
out2 = (1-alpha2)*nz(out2[1]) + alpha2*price2

tf = input(title="Resolution",  defval = "current")
vamp = input(title="VolumeMA",  defval=6)
vam = sma(volume, vamp)

up = high[3]>high[4] and high[4]>high[5] and high[2]<high[3] and high[1]<high[2] and volume[3]>vam[3]
down = low[3]<low[4] and low[4]<low[5] and low[2]>low[3] and low[1]>low[2] and volume[3]>vam[3]
fractalup =  up ? high[3] : fractalup[1] 
fractaldown = down ? low[3] : fractaldown[1]

fuptf = request.security(syminfo.tickerid,tf == "current" ? timeframe.period : tf, fractalup)
fdowntf = request.security(syminfo.tickerid,tf == "current" ? timeframe.period : tf, fractaldown)

plot(fuptf, "FractalUp", color=lime, linewidth=1, style=cross, transp=0, offset =-3, join=false)
plot(fdowntf, "FractalDown", color=red, linewidth=1, style=cross, transp=0, offset=-3, join=false)

buyEntry= nAMA[0]>nAMA2[0] and out[0]>out2[0]
sellEntry= nAMA[0]<nAMA2[0] and out[0]<out2[0]

if (buyEntry)
    strategy.entry("Buy", strategy.long, comment="Long Position Entry")


if (sellEntry)
    strategy.entry("Sell", strategy.short, comment="Short Position Entry")