Strategi Pelacakan Pembalikan CCTBBO

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

img

Gambaran umum

Strategi ini didasarkan pada indikator CCT Bollinger Band Oscillator (CCTBO) yang dikembangkan oleh Steve Karnish.

Logika Strategi

Strategi ini menggunakan harga tinggi sebagai data sumber untuk menghitung nilai CCTBBO. Osilator berfluktuasi antara -200 dan 200, di mana 0 mewakili harga rata-rata dikurangi 2 standar deviasi dan 100 adalah harga rata-rata ditambah 2 standar deviasi. Sinyal perdagangan dihasilkan ketika osilator melintasi atau jatuh di bawah garis EMA-nya. Secara khusus, ketika osilator melintasi di atas garis EMA-nya dan jarak antara mereka lebih besar dari nilai margin yang ditetapkan, posisi panjang dibuka. Ketika osilator jatuh di bawah garis EMA-nya dan jaraknya kurang dari nilai set negatif, posisi pendek dibuka. Ukuran margin posisi dihitung sesuai dengan persentase yang ditetapkan. Selain itu, strategi ini menggunakan stop loss trailing berdasarkan perubahan persentase harga atau jumlah gerakan tik untuk keluar posisi.

Analisis Keuntungan

  • Menggunakan indikator CCT Bollinger Band Oscillator untuk mengurangi sinyal palsu
  • Menggabungkan garis EMA dan kondisi margin menyaring sinyal untuk menghindari perdagangan yang tidak valid yang berlebihan selama osilasi
  • Menggunakan mekanisme stop loss trailing untuk menghentikan kerugian secara tepat waktu ketika kerugian terlalu besar

Analisis Risiko

  • CCT oscillator sendiri memiliki beberapa lag, sehingga kehilangan waktu terbaik untuk pembalikan harga
  • Nilai margin yang berlebihan dan pengaturan periode EMA yang terlalu pendek meningkatkan frekuensi perdagangan dan risiko
  • Pengaturan stop loss yang terlalu longgar meningkatkan risiko kerugian

Manajemen Risiko:

  • Sesuaikan periode garis EMA, gunakan periode yang lebih lama untuk menyaring
  • Sesuai menyesuaikan nilai margin untuk menyeimbangkan risiko dan laba
  • Mengurangi persentase posisi untuk mengendalikan kerugian tunggal
  • Mengurangi rentang kerugian stop trailing untuk berhenti lebih cepat

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Ganti dengan indikator volatilitas lainnya seperti Bollinger Bands, Keltner Channels, dll untuk menentukan entri dan keluar
  2. Tambahkan indikator penyaringan lainnya seperti MACD, RSI untuk memastikan keandalan sinyal
  3. Gunakan algoritma pembelajaran mesin untuk mengoptimalkan parameter otomatis seperti periode EMA, nilai margin, dll.
  4. Tambahkan mekanisme ukuran posisi seperti pecahan tetap, Martingale untuk mengendalikan risiko perdagangan
  5. Mengoptimalkan mekanisme stop loss trailing menggunakan volatility atau ATR stop

Ringkasan

Singkatnya, ini adalah strategi perdagangan kuantitatif untuk mengidentifikasi pembalikan harga menggunakan indikator CCT Bollinger Band. Ini memiliki keuntungan tertentu tetapi juga ruang untuk perbaikan. Dengan mengoptimalkan parameter, menambahkan filter, menggunakan rekayasa fitur, memperkenalkan pembelajaran mesin, dll, stabilitas dan profitabilitas strategi ini 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)
    
    

Lebih banyak