Chiến lược đảo ngược đáy đa khung thời gian


Ngày tạo: 2023-10-18 12:27:29 sửa đổi lần cuối: 2023-10-18 12:27:29
sao chép: 0 Số nhấp chuột: 642
1
tập trung vào
1617
Người theo dõi

Chiến lược đảo ngược đáy đa khung thời gian

Tổng quan

Chiến lược này sử dụng sự kết hợp của nhiều chỉ số hình thái cơ bản để xác định thời điểm đảo ngược mạnh, sử dụng chiến lược theo dõi xu hướng để dừng lỗ và mục tiêu đạt được lợi nhuận vượt mức dừng lỗ.

Nguyên tắc

Chiến lược này chủ yếu dựa trên một số chỉ số sau đây để đánh giá sự đảo ngược của đáy:

  1. Chỉ số độ nhạy dưới cùng của Noro: Xác định xem dòng K có hình dạng dưới cùng cụ thể hay không.

  2. Chỉ số ý chí xác định ((CVI): đánh giá tâm lý đa thê đang đối mặt với sự thay đổi.

  3. Chỉ số cuối cùng ((UCS): đánh giá tình trạng vượt mức và rời khỏi đường trung bình.

  4. Chỉ số lợi nhuận (RSI): đánh giá tình trạng quá bán.

  5. Gói hình dạng: bao gồm hình nón, hình đinh và nhiều hình nền khác nhau.

Chiến lược này sử dụng nhiều kết hợp các chỉ số dưới cùng, tạo ra tín hiệu mua khi đáp ứng số lượng hình dạng dưới cùng của các tham số chiến lược. Để lọc các đột phá giả mạo, chiến lược cũng thêm vào phán đoán của chỉ số RSI, chỉ kích hoạt mua khi quá bán.

Người dùng có thể tùy chỉnh sử dụng và tham số của các chỉ số phán đoán dưới cùng, tạo ra sự linh hoạt cao. Đồng thời, chiến lược thêm bộ lọc đường trung bình SMA, tránh làm nhiều việc dưới xu hướng.

Ưu điểm

  • Sử dụng nhiều chỉ số đánh giá để tăng độ chắc chắn

  • Các tham số chỉ số có thể tùy chỉnh, phù hợp với các giống khác nhau

  • Hướng dẫn sử dụng các bộ lọc SMA

  • Có thể cấu hình chỉ vào tuyến K đỏ, giảm nguy cơ

  • Có thể kích hoạt báo động cửa sổ bật, giám sát thời gian thực

Rủi ro

  • Các kết quả kết hợp đa chỉ số có thể đã bỏ lỡ đáy

  • Hình dạng đáy không nhất thiết phải liên tục đảo ngược

  • Cần quan tâm đến việc liệu khối lượng giao dịch có hỗ trợ cho sự đảo ngược hay không

Hướng tối ưu hóa

  • Tối ưu hóa cấu hình tham số chỉ số, điều chỉnh để phù hợp với các giống khác nhau

  • Tăng quản lý kho, giảm chi phí bằng cách tăng kho

  • Tăng chiến lược dừng lỗ, theo dõi xu hướng dừng lỗ

Tóm tắt

Chiến lược này tận dụng tối đa các biện pháp đánh giá đa chỉ số để cải thiện độ chính xác của nhận dạng cơ sở, có thể kiểm soát rủi ro hiệu quả bằng cách theo dõi xu hướng để chặn lỗ và khóa lợi nhuận. Tuy nhiên, vẫn cần chú ý đến việc khối lượng giao dịch có thể hỗ trợ xu hướng đảo ngược không. Người dùng có thể tối ưu hóa các tham số theo đặc điểm của giống để thích ứng với môi trường thị trường khác nhau.

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

// the original indicator is Noro's BottomSensivity v0.6
//@version=4
strategy("Noro's BottomSensivity v0.6 strategy + rsi + Alarm", shorttitle="Bottom 0.6 StRsiAlarm", overlay=true)

overSold = input(35)
overBought = input(70)
botsens = input(defval = 3, minval = 1, maxval = 4, title = "Bottom-Sensivity")
smalen = input(defval = 25, minval = 20, maxval = 200, title = "SMA Length")
bars = input(defval = 3, minval = 2, maxval = 4, title = "Bars of Locomotive")
useloc = input(true, title = "Use bottom-pattern Locomotive?")
usepin = input(true, title = "Use bottom-pattern Pin-bar?")
usecvi = input(true, title = "Use bottom-indicator CVI?")
useucs = input(true, title = "Use bottom-indicator UCS?")
usevix = input(true, title = "Use bottom-indicator WVF?")
usersi = input(true, title = "Use bottom-indicator RSI?")
usered = input(false, title = "Only red candles?")
usesma = input(true, title = "Use SMA Filter?")
showsma = input(false, title = "Show SMA Filter?")

//SMA Filter
sma = sma(close, smalen)
colsma = showsma == true ? red : na
plot(sma, color = colsma)

//VixFix method
//Start of ChrisMoody's code
pd = 22
bbl = 20
mult = 2
lb = 50
ph = .85
pl = 1.01
hp = false
sd = false
wvf = ((highest(close, pd)-low)/(highest(close, pd)))*100
sDev = mult * stdev(wvf, bbl)
midLine = sma(wvf, bbl)
lowerBand = midLine - sDev
upperBand = midLine + sDev
rangeHigh = (highest(wvf, lb)) * ph
rangeLow = (lowest(wvf, lb)) * pl
//End of ChrisMoody's code

//Locomotive mmethod
bar = close > open ? 1 : close < open ? -1 : 0
locob = bar == 1 and bar[1] == -1 and bar[2] == -1 and (bar[3] == -1 or bars < 3) and (bar[4] == -1 or bars < 4) ? 1 : 0

//PIN BAR
body = abs(close - open)
upshadow = open > close? (high - open) : (high - close)
downshadow = open > close ? (close - low) : (open - low)
pinbar = open[1] > close[1] ? (body[1] > body ? (downshadow > 0.5 * body ? (downshadow > 2 * upshadow ? 1 : 0 ) : 0 ) : 0 ) : 0

//CVI method
//Start of LazyBear's code
ValC=sma(hl2, 3)
bull=-.51
bear=.43
vol=sma(atr(3), 3)
cvi = (close-ValC) / (vol*sqrt(3))
cb= cvi <= bull ? green : cvi >=bear ? red : cvi > bull ? blue : cvi < bear ? blue : na
bull1 = cvi <= bull
bear1 = cvi >= bear
bull2 = bull1[1] and not bull1
bear2 = bear1[1] and not bear1
//End of LazyBear's code

//UCS method
//Start of UCS's code
ll = lowest(low, 5)
hh = highest(high, 5)
diff = hh - ll
rdiff = close - (hh+ll)/2
avgrel = ema(ema(rdiff,3),3)
avgdiff = ema(ema(diff,3),3)
mom = ((close - close[3])/close[3])*1000
SMI = avgdiff != 0 ? (avgrel/(avgdiff/2)*100) : 0
SMIsignal = ema(SMI,3)
ucslong = SMI < -35  and mom > 0 and mom[1] < 0 ? 1 : 0
//End of UCS's code

//RSI method
//Chris Moody's code
up = rma(max(change(close), 0), 2)
down = rma(-min(change(close), 0), 2)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsib = rsi < 10 ? 1 : 0
//Chris Moody's code

//sum
locobot = useloc == false ? 0 : locob
vixfixbot = usevix == false ? 0 : wvf >= upperBand or wvf >= rangeHigh ? 1 : 0
cvibot = usecvi == false ? 0 : bull2 == true ? 1 : 0
ucsbot = useucs == false ? 0 : ucslong == 1 ? 1 : 0
rsibot = usersi == false ? 0 : rsib
pinbot = usepin == false ? 0 : pinbar
score = vixfixbot + locobot + cvibot + ucsbot + rsibot + pinbot

//arrows
bottom = usered == false ? usesma == false ? score >= botsens ? 1 : 0 : high < sma and score >= botsens ? 1 : 0 : usesma == false ? score >= botsens and close < open ? 1 : 0 : high < sma and score >= botsens and close < open ? 1 : 0
plotarrow(bottom == 1 ? 1 : na, title="Buy arrow", colorup=lime, maxheight=60, minheight=50, transp=0)
data = bottom == 1
plotchar(data, char=" ", text="BUY!", location=location.belowbar, color=green, size=size.small)


//Market buy and exit
strategy.entry("BUY!", strategy.long, when =(bottom == 1) and(rsi(close,14)<overSold))
strategy.close("BUY!", when = (crossunder(rsi(close,14), overBought)))
alarm = bottom == 1 and(rsi(close,14)<overSold)
alertcondition(alarm == 1,title="BUY+RSI",message="BUY+RSI")