Strategi Pengesanan Pembalikan CCTBBO

Penulis:ChaoZhang, Tarikh: 2023-11-23 13:42:03
Tag:

img

Ringkasan

Strategi ini berdasarkan pada penunjuk CCT Bollinger Band Oscillator (CCTBO) yang dibangunkan oleh Steve Karnish. Ia mengenal pasti pembalikan harga dengan mengesan penembusan harga purata bergerak yang digabungkan dengan mekanisme hentian.

Logika Strategi

Strategi ini menggunakan harga tinggi sebagai data sumber untuk mengira nilai CCTBBO. Osilator berfluktuasi antara -200 dan 200, di mana 0 mewakili harga purata dikurangkan 2 penyimpangan standard dan 100 adalah harga purata ditambah 2 penyimpangan standard. Isyarat perdagangan dihasilkan apabila osilator melintasi atau jatuh di bawah garis EMA. Khususnya, apabila osilator melintasi di atas garis EMA dan jarak di antara mereka lebih besar daripada nilai margin yang ditetapkan, kedudukan panjang dibuka. Apabila osilator jatuh di bawah garis EMA dan jaraknya kurang daripada nilai set negatif, kedudukan pendek dibuka. Saiz margin kedudukan dikira mengikut peratusan yang ditetapkan. Di samping itu, strategi menggunakan stop loss yang mengikuti berdasarkan perubahan harga peratusan atau bilangan pergerakan tik untuk keluar dari kedudukan.

Analisis Kelebihan

  • Menggunakan penunjuk CCT Bollinger Band Oscillator yang berpengaruh untuk mengurangkan isyarat palsu
  • Menggabungkan garis EMA dan keadaan margin menapis isyarat untuk mengelakkan dagangan yang tidak sah yang berlebihan semasa turun naik
  • Menggunakan mekanisme stop loss untuk menghentikan kerugian tepat pada masanya apabila kerugian terlalu besar

Analisis Risiko

  • Osilator CCT sendiri mempunyai beberapa kelewatan, sehingga kehilangan masa terbaik untuk pembalikan harga
  • Nilai margin yang berlebihan dan tetapan tempoh EMA yang terlalu pendek meningkatkan kekerapan perdagangan dan risiko
  • Set stop loss yang terlalu longgar meningkatkan risiko kerugian

Pengurusan Risiko:

  • Sesuaikan tempoh garis EMA, gunakan tempoh yang lebih lama untuk menapis
  • Sesuaikan nilai margin dengan betul untuk mengimbangi risiko dan pulangan
  • Mengurangkan peratusan kedudukan untuk mengawal kerugian tunggal
  • Mengurangkan julat kehilangan hentian untuk hentian yang lebih cepat

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Ganti dengan penunjuk turun naik lain seperti Bollinger Bands, Saluran Keltner, dll untuk menentukan kemasukan dan keluar
  2. Tambah penapis lain seperti MACD, RSI untuk memastikan kebolehpercayaan isyarat
  3. Gunakan algoritma pembelajaran mesin untuk mengoptimumkan parameter automatik seperti tempoh EMA, nilai margin, dll
  4. Tambah mekanisme saiz kedudukan seperti pecahan tetap, Martingale untuk mengawal risiko perdagangan
  5. Mengoptimumkan mekanisme hentian kerugian dengan menggunakan turun naik atau hentian ATR

Ringkasan

Ringkasnya, ini adalah strategi perdagangan kuantitatif untuk mengenal pasti pembalikan harga menggunakan penunjuk CCT Bollinger Band. Ia mempunyai kelebihan tertentu tetapi juga ruang untuk peningkatan. Dengan mengoptimumkan parameter, menambah penapis, menggunakan kejuruteraan ciri, memperkenalkan pembelajaran mesin, dll, kestabilan dan keuntungan strategi ini dapat ditingkatkan lagi.


/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-17 11:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// This strategy is based on the CCT Bollinger Band Oscillator (CCTBO) 
// developed by Steve Karnish of Cedar Creek Trading and coded by LazyBear.
// Indicator is available here https://www.tradingview.com/v/iA4XGCJW/

strategy("Strategy CCTBBO v2 | Fadior", shorttitle="Strategy CCTBBO v2", pyramiding=0, precision=2, calc_on_order_fills=false, initial_capital=1000, default_qty_type=strategy.percent_of_equity, currency="USD", default_qty_value=100, overlay=false)

length_stddev=input(title="Stddev loopback period",defval=20)
length_ema=input(title="EMA period", defval=2)
margin=input(title="Margin", defval=0, type=float, step=0.1)
price = input(title="Source", defval=high)
digits= input(title="Number of digits",defval=2,step=1,minval=2,maxval=6)
offset = input(title="Trailing offset (0.01 = 1%) :", defval=0.013, type=float, step=0.01)
pips= input(title="Offset in ticks ?",defval=false,type=bool)

src=request.security(syminfo.tickerid, "1440", price)

cctbbo=100 * ( src + 2*stdev( src, length_stddev) - sma( src, length_stddev ) ) / ( 4 * stdev( src, length_stddev ) )

ul=hline(150, color=gray, editable=true)
ll=hline(-50, color=gray)
hline(50, color=gray)
fill(ul,ll, color=green, transp=90)
plot(style=line, series=cctbbo, color=blue, linewidth=2)
plot(ema(cctbbo, length_ema), color=red)

d = digits == 2 ? 100 : digits == 3 ? 1000 : digits == 4 ? 10000 : digits == 5 ? 100000 : digits == 6 ? 1000000 : na

TS = 1
TO = pips ? offset : close*offset*d
CQ = 100
TSP = TS
TOP = (TO > 0) ? TO : na

longCondition = crossover(cctbbo, ema(cctbbo, length_ema)) and cctbbo - ema(cctbbo, length_ema) > margin
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Close Long", "Long", qty_percent=CQ, trail_points=TSP, trail_offset=TOP)


shortCondition = crossunder(cctbbo, ema(cctbbo, length_ema)) and cctbbo - ema(cctbbo, length_ema) < -margin
if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Close Short", "Short", qty_percent=CQ, trail_points=TSP, trail_offset=TOP)
    
    

Lebih lanjut