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

Tác giả:ChaoZhang, Ngày: 2023-10-18 12:27:29
Tags:

img

Tổng quan

Chiến lược này kết hợp nhiều chỉ số mô hình đáy để xác định các cơ hội đảo ngược lớn, áp dụng một xu hướng theo chiến lược dừng lỗ để nhắm mục tiêu lợi nhuận vượt quá dừng lỗ.

Nguyên tắc

Chiến lược chủ yếu sử dụng các chỉ số sau đây để xác định sự đảo ngược đáy:

  1. Chỉ số Bottom Sensitivity (Noros BottomSensitivity): Phát hiện các mẫu đáy cụ thể trên biểu đồ nến.

  2. Chỉ số chắc chắn của Volition (CVI): Xác định sự thay đổi trong tâm lý tăng / giảm.

  3. Tín hiệu chu kỳ cuối cùng (UCS): Khám phá việc bán quá mức dưới mức trung bình động.

  4. Chỉ số sức mạnh tương đối (RSI): Xác định các điều kiện bán quá mức.

  5. Kết hợp mẫu: Bao gồm nến, thanh pin và các mẫu dưới cùng khác.

Chiến lược này kết hợp nhiều chỉ số đáy, tạo ra tín hiệu mua khi số lượng các mẫu đáy đáp ứng các thiết lập tham số.

Người dùng có thể tùy chỉnh việc sử dụng và các tham số của mỗi chỉ số đáy, cung cấp sự linh hoạt cao.

Ưu điểm

  • Cải thiện độ chính xác bằng cách sử dụng nhiều chỉ số

  • Các thông số tùy chỉnh phù hợp với các sản phẩm khác nhau

  • Bộ lọc SMA ngăn chặn mua hàng đầu

  • Nến màu đỏ tùy chọn chỉ làm giảm nguy cơ

  • Các cảnh báo cho phép theo dõi thời gian thực

Rủi ro

  • Nhiều chỉ số có thể bỏ lỡ đáy

  • Các mô hình dưới không phải lúc nào cũng đảo ngược

  • Cần phải xem nếu âm lượng hỗ trợ đảo ngược

Tăng cường

  • Tối ưu hóa các thông số cho các sản phẩm khác nhau

  • Thêm kích cỡ vị trí vào cơ sở chi phí thấp hơn

  • Thực hiện dừng lỗ để khóa lợi nhuận

Tóm lại

Chiến lược xác định hiệu quả đáy với nhiều chỉ số, kiểm soát rủi ro với xu hướng sau khi dừng lỗ. Nhưng hỗ trợ khối lượng cần theo dõi. Người dùng có thể tối ưu hóa các thông số theo đặc điểm sản phẩm.


/*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")

Thêm nữa