
Strategi ini menggunakan kombinasi dari beberapa indikator bentuk dasar untuk mengidentifikasi waktu reversal yang signifikan, mengambil strategi tracking trend untuk menghentikan kerugian, dengan tujuan untuk mendapatkan keuntungan lebih dari stop loss.
Strategi ini didasarkan pada beberapa indikator berikut untuk menilai reversal dasar:
Noro’s BottomSensivity: menentukan apakah garis K menunjukkan bentuk dasar tertentu.
Indeks Keinginan untuk Kepastian (CVI): menilai psikologis pluralitas menghadapi transformasi.
Indikator Terakhir (UCS): menilai kondisi di mana overfall keluar dari garis rata-rata.
Indeks RSI: untuk menilai oversold.
Kombinasi bentuk: termasuk bentuk dasar yang beragam seperti kerucut, paku, dll.
Strategi ini menggunakan kombinasi dari beberapa indikator dasar, dan menghasilkan sinyal beli ketika jumlah bentuk dasar yang ditetapkan oleh parameter strategi terpenuhi. Strategi ini juga menambahkan penilaian indikator RSI untuk memfilter false breakout, dan hanya akan memicu pembelian jika oversold.
Pengguna dapat mengkonfigurasi penggunaan dan parameter masing-masing indikator penilaian dasar, yang memungkinkan fleksibilitas yang tinggi. Pada saat yang sama, strategi menambahkan penyaringan rata-rata SMA, untuk menghindari melakukan lebih banyak di bawah tren.
Menggunakan berbagai indikator untuk meningkatkan kepastian
Parameter indikator yang dapat disesuaikan untuk varietas yang berbeda
SMA berfilter rata, menghindari overtaking
Dapat dikonfigurasi hanya untuk jalur K merah, mengurangi risiko
Alarm pop-up, pemantauan langsung
Pertimbangan kombinasi multi-indikator mungkin melewatkan bagian bawah
Bottomline tidak selalu berbalik
Perhatikan apakah volume transaksi dapat mendukung pembalikan.
Mengoptimalkan konfigurasi parameter indikator, menyesuaikan untuk varietas yang berbeda
Meningkatkan manajemen posisi, menurunkan harga biaya melalui penambahan posisi
Meningkatkan strategi stop loss dan melacak trend stop loss
Strategi ini memanfaatkan penilaian multi-indikator untuk meningkatkan akurasi identifikasi dasar, dan mengontrol risiko secara efektif dengan melacak tren untuk menghentikan kerugian dan mengunci keuntungan. Namun, tetap perlu memperhatikan apakah volume perdagangan dapat mendukung kenaikan tren reversal. Pengguna dapat mengoptimalkan parameter berdasarkan karakteristik varietas untuk menyesuaikan diri dengan lingkungan pasar yang berbeda.
/*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")