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.
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.
Pengurusan Risiko:
Strategi ini boleh dioptimumkan dalam aspek berikut:
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)