Strategi perdagangan kuantitatif berdasarkan kurva Coppock


Tanggal Pembuatan: 2023-11-13 11:44:55 Akhirnya memodifikasi: 2023-11-13 11:44:55
menyalin: 0 Jumlah klik: 730
1
fokus pada
1621
Pengikut

Strategi perdagangan kuantitatif berdasarkan kurva Coppock

Ringkasan

Strategi ini memanfaatkan indikator teknis kurva Coppock yang kurang dikenal untuk melakukan perdagangan kuantitatif. Kurva Coppock berasal dari rata-rata bergerak tertimbang dari perhitungan perubahan S&P 500 atau nilai setara transaksi. Ketika melewati garis nol di atas kurva Coppock, sinyal beli dihasilkan, dan ketika melewati garis nol di bawahnya, sinyal jual dihasilkan.

Prinsip

Strategi ini menggunakan kurva Coppock sebagai indikator teknis untuk menghasilkan sinyal perdagangan.

Kurva Coppock = rata-rata pergerakan berimbang 10 siklus (ROC 14 siklus + ROC 11 siklus)

Di mana rumus perhitungan untuk perubahan ROC adalah: ((Close saat ini - Close sebelum N siklus) / Close sebelum N siklus

Strategi ini didasarkan pada harga penutupan $SPY dan menghitung kurva Coppock-nya. Ketika kurva melewati garis nol di atas menghasilkan sinyal beli, dan ketika melewati garis nol di bawah menghasilkan sinyal jual.

Keunggulan

  • Menggunakan indikator kurva Coppock yang unik, memiliki prospek yang lebih baik dibandingkan dengan indikator seperti rata-rata bergerak yang umum
  • Optimalisasi parameter indikator yang dapat dikonfigurasi, seperti siklus rata-rata bergerak berbobot, siklus perhitungan tingkat perubahan, dll.
  • Menggunakan $SPY sebagai sumber sinyal, representasi pasar yang kuat
  • Trailing stop dapat dipilih untuk mengunci keuntungan dan mengurangi penarikan

Risiko

  • Kurva Coppock bukanlah indikator yang sangat populer, dan validitasnya perlu diverifikasi
  • Sinyal perdagangan mungkin tertunda, parameter yang perlu dioptimalkan
  • Stop loss yang terlalu longgar dapat melewatkan kesempatan untuk mundur
  • Bergantung pada satu indikator saja dapat menimbulkan sinyal palsu

Arah optimasi

  • Uji coba pasar yang berbeda, saham yang berbeda untuk mengoptimalkan kombinasi parameter terbaik
  • Kombinasi dengan indikator lain untuk memfilter sinyal palsu, seperti volume transaksi
  • Persentase Stop Loss Optimasi Dinamis
  • Pertimbangkan jumlah transaksi atau harga terobosan sebagai entry

Meringkaskan

Strategi ini memanfaatkan karakteristik bentuk kurva yang unik dari kurva Coppock untuk menghasilkan sinyal perdagangan. Jika dibandingkan dengan indikator umum, kurva Coppock memiliki prospek yang lebih kuat. Namun, keandalan sebagai indikator independen masih perlu diverifikasi.

Kode Sumber Strategi
/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © RolandoSantos

//@version=4
strategy(title = "Coppock Curve", shorttitle = "Copp Curve Strat", default_qty_type=strategy.cash, default_qty_value=10000, initial_capital=10000)

///trail stop
longTrailPerc = input(title="Trail Long Loss (%)", minval=0.0, step=0.1, defval=100) * 0.01

// Determine trail stop loss prices
longStopPrice = 0.0

longStopPrice := if (strategy.position_size > 0)
    stopValue = close * (1 - longTrailPerc)
    max(stopValue, longStopPrice[1])
else
    0
//Use SPY for Copp Curve entries and exits//
security = input("SPY")
ticker = security(security, "D", close)

///Copp Curve////
wmaLength = input(title="WMA Length", type=input.integer, defval=10)
longRoCLength = input(title="Long RoC Length", type=input.integer, defval=14)
shortRoCLength = input(title="Short RoC Length", type=input.integer, defval=11)
source = ticker
curve = wma(roc(source, longRoCLength) + roc(source, shortRoCLength), wmaLength)

///Lower Band Plot///
band1 = hline(0)
band0 = hline(100)
band2 = hline(-100)
fill(band1, band0, color=color.green, transp=90)
fill(band2, band1, color=color.red, transp=90)
plot(curve, color=color.white)

///Trade Conditions///
Bull = curve > 0
Bear = curve < 0

///Entries and Exits//
if (Bull)
    strategy.entry("Long", strategy.long, comment = "LE")
    

if (Bear)
    strategy.close("Long", qty_percent=100, comment="close")
    
// Submit exit orders for trail stop loss price
if (strategy.position_size > 0)
    strategy.exit(id="Long Trail Stop", stop=longStopPrice)