
Strategi ini didasarkan pada indikator Karobein Mean Return dan pergerakan harga. Ini menggunakan indikator tambahan dinamika harga untuk menilai tren, dan dikombinasikan dengan indikator Karobein Mean Return untuk masuk ke pasar. Strategi ini berlaku untuk perdagangan garis panjang dan menengah.
Strategi ini pertama-tama mendapatkan indikator dinamika harga dengan menghitung tingkat perubahan harga pada periode yang berbeda. Ketika indikator dinamika harga melewati garis nilai tren dinamis, sinyal multihead dihasilkan, dan ketika melewati garis nilai tren turun, sinyal headless dihasilkan.
Indikator ini kemudian dikombinasikan dengan Indikator Regresi Rata-Rata Karobein untuk menentukan waktu masuk tertentu. Indikator Regresi Rata-Rata Karobein didasarkan pada sifat regresi rata-rata harga, yang dapat mencerminkan akselerasi dan jalur pergerakan harga. Indikator ini memiliki karakteristik gelombang positif yang membantu menentukan arah dan titik waktu pergerakan harga.
Ketika indikator dinamika harga mengirimkan sinyal, sinyal masuk akan dihasilkan jika indikator regression rata-rata Karobein berada di area arah yang sesuai.
Strategi ini menggabungkan dua faktor, yaitu dinamika harga dan regresi nilai rata-rata, dengan kemampuan menilai tren yang lebih kuat.
Karobein Average Regression Indicator dapat secara akurat menentukan titik pivot harga, meningkatkan akurasi waktu masuk.
Periode kepemilikan dapat diatur secara bebas melalui parameter, yang berlaku untuk periode waktu yang berbeda.
Dapat menyesuaikan parameter penurunan nilai dinamis secara real-time untuk beradaptasi dengan perubahan pasar.
Strategi ini adalah strategi trend-following, yang mudah ditiru dalam tren goyangan.
Indikator Regression Mean Karobein memiliki tingkat keterlambatan yang mungkin akan melewatkan titik balik harga.
Perhatikan pengaturan parameter siklus kepemilikan, karena terlalu lama memegang posisi dapat menyebabkan peningkatan kerugian.
Parameter penurunan nilai dinamis harus disesuaikan dengan benar, jangan terlalu besar, atau Anda akan kehilangan waktu masuk ke lapangan.
Solusi untuk menghadapi risiko:
Indikator ini dapat digunakan untuk mengindikasikan terjadinya kejutan dengan cepat dan menghentikan posisi pada waktu yang tepat.
Pilih indikator regresi rata-rata Karobein periode yang sesuai, jangan terlalu terbelakang.
Ujilah parameter jangka waktu yang berbeda dan pilihlah jangka waktu yang sesuai untuk Anda sendiri.
Adaptasi Dynamic Threshold Range, tidak boleh terlalu lebar untuk menghindari titik masuk yang bocor.
Dapat menguji siklus penghitungan dinamika harga yang berbeda, parameter pengoptimalan.
Indikator volatilitas dapat ditambahkan untuk mengetahui adanya gempa, dan stop loss dapat diatur.
Optimalkan parameter indikator regresi rata-rata Karobein untuk membuatnya lebih sensitif.
Kondisi penyaringan tambahan dapat ditambahkan, seperti indikator volume transaksi, untuk meningkatkan kualitas sinyal.
Parameter optimasi dinamis algoritma pembelajaran mesin dapat digunakan.
Strategi ini secara komprehensif mempertimbangkan faktor dinamika harga dan faktor regresi rata-rata, memiliki kemampuan untuk menilai tren dan menghasilkan sinyal yang lebih kuat. Dapat disesuaikan dengan parameter untuk menyesuaikan diri dengan lingkungan pasar yang berbeda. Langkah selanjutnya dapat dioptimalkan lebih lanjut dari sisi waktu masuk, stop loss, membuat strategi lebih stabil dan kuat.
/*backtest
start: 2022-10-27 00:00:00
end: 2023-11-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// author: capissimo
strategy("Normalized Vector Strategy, ver.3 (sc)", precision=2, overlay=false)
// This is a scaled Normalized Vector Strategy with a Karobein Oscillator
// original: Drkhodakarami (https://www.tradingview.com/script/Fxv2xFWe-Normalized-Vector-Strategy-By-Drkhodakarami-Opensource/)
// Repainting: in general there two types of repainting:
// * when the last candle is constantly being redrawn
// * when the indicator draws a different configuration after it has been deactivated/reactivated, i.e. refreshed
// The former is a natural behaviour, which presents a constant source of frustration,
// when a signal directly depends on the current market situation and can be overcome
// with various indirect techniques like divergence.
// The latter suggests a flaw in the indicator design.
// Unfortunately, the Normalized Vector Strategy is repainting in the latter sense, although being
// really promising. Would be nice if our community suggests a solution to this problem ))
// This strat consistently performs with high accuracy, showing up to 96% scores
// Here are some of the best parameters:
// TF Lookback Performance (ca.)
// 1m 13 92%
// 3m 34 92%
// 5m 85 92%
// 15m 210 90%
// 30m 360 89%
// 1H 1440,720 94%, 87%
// The Karobein Oscillator has an intrinsic sinusoidal behaviour that helps in determining direction and timing.
// It does not repaint.
// original: alexgrover (https://www.tradingview.com/script/JiNi0f62-Karobein-Oscillator/)
scaleMinimax(X, p, min, max) =>
hi = highest(X, p), lo = lowest(X, p)
(max - min) * (X - lo)/(hi - lo) + min
price = input(close, "Price Data")
tf = input(34, "Timeframe", minval=1, maxval=1440)
thresh = input(14., "Threshold", minval=.1, step=.1)
div = input(1000000,"Divisor", options=[1,10,100,1000,10000,100000,1000000,10000000,100000000])
showVol = input(false, "Volume")
useold = input(true, "Use Old System")
lime = color.new(color.lime, 10), fuchsia = color.new(color.fuchsia, 10),
black = color.new(color.black, 100), gray = color.new(color.gray, 50)
vol = useold ? security(syminfo.tickerid, tostring(tf), volume, barmerge.gaps_off, barmerge.lookahead_on)
: security(syminfo.tickerid, tostring(tf), volume)
obv = cum(change(price) > 0 ? vol : change(price) < 0 ? -vol : 0*vol)
prix = showVol ? obv : price
getdiff(prc, tf) =>
prev = useold ? security(syminfo.tickerid, tostring(tf), prc[1], barmerge.gaps_off, barmerge.lookahead_on) :
security(syminfo.tickerid, tostring(tf), prc[1])
curr = useold ? security(syminfo.tickerid, tostring(tf), prc, barmerge.gaps_off, barmerge.lookahead_on) :
security(syminfo.tickerid, tostring(tf), prc)
(curr/prev) - 1
p = getdiff(prix, tf)
up = thresh/div, dn = -thresh/div
longCondition = crossover(p, up)
shortCondition = crossunder(p, dn)
bg = longCondition ? lime : shortCondition ? fuchsia : black
cl = p > up ? color.green : p < dn ? color.red : color.silver
bgcolor(bg, editable=false)
plot(scaleMinimax(up, 2500, -1, 1), color=lime, editable=false, transp=0)
hline(0, linestyle=hline.style_dotted, title="base line", color=gray, editable=false)
plot(scaleMinimax(dn, 2500, -1, 1), color=fuchsia, editable=false, transp=0)
plot(scaleMinimax(p, 2500, -1, 1), color=cl, style=plot.style_histogram, transp=70, editable=false)
plot(scaleMinimax(p, 2500, -1, 1), color=cl, style=plot.style_linebr, title="prediction", transp=0, editable=false)
strategy.entry("L", true, 1, when=longCondition)
strategy.entry("S", false, 1, when=shortCondition)
alertcondition(longCondition, title='Long', message='Long Signal!')
alertcondition(shortCondition, title='Short', message='Short Signal!')
//*** Karobein Oscillator
per = input(8, "Karobein Osc Lookback")
prix2 = ema(price, per)
a = ema(prix2 < prix2[1] ? prix2/prix2[1] : 0, per)
b = ema(prix2 > prix2[1] ? prix2/prix2[1] : 0, per)
c = (prix2/prix2[1])/(prix2/prix2[1] + b)
d = 2*((prix2/prix2[1])/(prix2/prix2[1] + c*a)) - 1
plot(scaleMinimax(d, 2500, -1, 1), color=color.orange, transp=0)