Karobein bermaksud strategi pengembalian berdasarkan arah aliran


Tarikh penciptaan: 2023-11-03 16:56:13 Akhirnya diubah suai: 2023-11-03 16:56:13
Salin: 1 Bilangan klik: 752
1
fokus pada
1617
Pengikut

Karobein bermaksud strategi pengembalian berdasarkan arah aliran

Gambaran keseluruhan

Strategi ini berdasarkan pada indikator Karobein Mean Return dan pergerakan harga. Ia menggunakan indikator pembantu pergerakan harga untuk membuat penilaian trend, dan digabungkan dengan indikator Karobein Mean Return untuk masuk ke dalam pasaran.

Prinsip Strategi

Strategi ini mula-mula mendapat indikator pergerakan harga dengan mengira kadar perubahan harga dalam tempoh yang berbeza. Apabila indikator pergerakan harga melintasi garis penurunan yang dinamik, ia menghasilkan isyarat multihead, dan apabila ia melintasi, ia menghasilkan isyarat kosong.

Kemudian digabungkan dengan penunjuk pulangan rata-rata Karobein untuk menentukan masa masuk tertentu. Penunjuk pulangan rata-rata Karobein dikira berdasarkan sifat pulangan rata-rata harga, yang dapat mencerminkan percepatan dan laluan turun naik harga. Penunjuk ini mempunyai ciri-ciri gelombang positif yang membantu menentukan arah pergerakan harga dan titik waktu.

Apabila penunjuk pergerakan harga menghantar isyarat, isyarat masuk akan dihasilkan jika penunjuk pengembalian nilai rata-rata Karobein berada di rantau arah yang sesuai.

Kelebihan Strategik

  1. Strategi ini mengambil kira pergerakan harga dan pulangan nilai purata, dan mempunyai kebolehan yang lebih kuat untuk menilai trend.

  2. Penunjuk Kembalikan Nilai Rata-Rata Karobein dapat menentukan titik-titik perubahan harga dengan tepat, meningkatkan ketepatan masa masuk.

  3. Tempoh pegangan boleh disesuaikan secara bebas melalui parameter, yang digunakan untuk tempoh masa yang berbeza.

  4. Ia boleh menyesuaikan parameter penurunan nilai dinamik dalam masa nyata untuk menyesuaikan diri dengan perubahan pasaran.

Risiko Strategik

  1. Strategi ini adalah strategi trend-following yang mudah disandarkan dalam trend goyah.

  2. Karobein Mean Value Regression Indicator mempunyai tahap ketinggalan dan mungkin terlepas titik peralihan harga.

  3. Perhatian perlu diberikan kepada tetapan parameter kitaran pegangan, kerana terlalu lama memegang kedudukan boleh menyebabkan kerugian meningkat.

  4. Parameter penurunan nilai dinamik harus disesuaikan dengan betul, tidak baik untuk menetapkan terlalu besar, jika tidak, anda akan kehilangan masa masuk ke lapangan.

Penyelesaian untuk menghadapi risiko:

  1. Indikator trend boleh menentukan kejatuhan yang akan datang, dan menghentikan kerugian dengan tepat pada masanya.

  2. Pilih pengembalian nilai purata Karobein untuk tempoh yang sesuai, tidak boleh terlalu ketinggalan.

  3. Uji parameter tempoh pegangan yang berbeza, pilih tempoh pegangan yang sesuai untuk anda.

  4. Menyesuaikan julat nilai terhad dinamik, tidak boleh terlalu luas untuk mengelakkan titik kemasukan yang terlepas.

Arah pengoptimuman strategi

  1. Boleh menguji kitaran pengiraan dinamik harga yang berbeza, parameter pengoptimuman.

  2. Anda boleh menyertakan penunjuk kadar turun naik untuk menentukan kejatuhan yang akan datang, dan anda boleh menetapkan stop loss.

  3. Kaedah ini boleh dioptimumkan untuk parameter penunjuk pengembalian nilai purata Karobein, yang menjadikannya lebih sensitif.

  4. Syarat penapisan tambahan boleh ditambah, seperti indikator jumlah transaksi, untuk meningkatkan kualiti isyarat.

  5. Parameter pengoptimuman dinamik algoritma pembelajaran mesin boleh digunakan.

ringkaskan

Strategi ini mempertimbangkan faktor dinamik harga dan faktor pulangan nilai rata-rata secara menyeluruh, mempunyai kemampuan untuk menilai trend dan menghasilkan isyarat yang lebih kuat. Ia boleh disesuaikan dengan parameter untuk menyesuaikan diri dengan keadaan pasaran yang berbeza. Langkah seterusnya dapat dioptimumkan dari segi masa masuk, hentikan kerugian, menjadikan strategi lebih stabil dan kuat.

Kod sumber strategi
/*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)