
Strategi ini didasarkan pada indikator CCT Bollinger Band Oscillator yang dikembangkan oleh Steve Karnish, yang memungkinkan perdagangan reversal dengan mengidentifikasi harga yang melanggar garis rata-rata dan menggabungkan mekanisme penarikan balik.
Strategi ini menggunakan harga tinggi sebagai data sumber, lalu menghitung nilai dari CCT Band oscillator. Nilai dari oscillator berfluktuasi antara -200 dan -200, 0 mewakili harga rata-rata dikurangi 2 kali selisih standar, dan 100 mewakili harga rata-rata ditambah 2 kali selisih standar. Strategi ini menghasilkan sinyal perdagangan ketika oscillator melintasi atau melintasi rata-rata EMA-nya. Secara khusus, jika oscillator melintasi rata-rata EMA di atasnya dan jarak antara keduanya lebih besar dari margin yang ditetapkan, lakukan lebih banyak; jika oscillator melintasi rata-rata EMA di bawahnya dan jarak antara keduanya kurang dari margin yang ditetapkan negatif, lakukan kosong.
Metode pengendalian risiko:
Strategi ini dapat dioptimalkan dalam beberapa hal:
Strategi ini secara keseluruhan adalah strategi perdagangan kuantitatif yang didasarkan pada indikator CCT untuk menentukan harga berbalik. Strategi ini memiliki beberapa kelebihan, tetapi juga ada ruang untuk perbaikan. Dengan cara mengoptimalkan parameter, menambahkan indikator penyaringan, menggunakan teknik fitur, dan memperkenalkan pembelajaran mesin, stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut.
/*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)