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ỗ.
Chiến lược chủ yếu sử dụng các chỉ số sau đây để xác định sự đảo ngược đáy:
Chỉ số Bottom Sensitivity (Noro
Chỉ số chắc chắn của Volition (CVI): Xác định sự thay đổi trong tâm lý tăng / giảm.
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.
Chỉ số sức mạnh tương đối (RSI): Xác định các điều kiện bán quá mức.
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.
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
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ố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
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")