Strategi Dagangan Kuantitatif Berasaskan Lengkungan Coppock

Penulis:ChaoZhang, Tarikh: 2023-11-13 11:44:55
Tag:

img

Ringkasan

Strategi ini menggunakan penunjuk teknikal Curve Coppock yang kurang dikenali untuk melaksanakan perdagangan kuantitatif. Curve Coppock diperoleh dengan mengambil purata bergerak bertingkat kadar perubahan (ROC) indeks pasaran seperti S&P 500 atau setara perdagangan seperti SPY ETF. Isyarat beli dihasilkan apabila Curve Coppock melintasi di atas sifar dan isyarat jual apabila melintasi di bawah. Isyarat stop loss pilihan tersedia untuk mengunci keuntungan. Strategi menggunakan kurva $ SPY Coppock sebagai proksi untuk menghasilkan isyarat perdagangan pada ETF dan saham lain.

Prinsip-prinsip

Strategi ini menggunakan Curve Coppock sebagai penunjuk teknikal untuk menjana isyarat perdagangan.

Kurva Coppock = WMA 10 tempoh (ROC 14 tempoh + ROC 11 tempoh)

Di mana kadar perubahan ROC dikira sebagai: (Tutup semasa - Tutup N tempoh lalu) / Tutup N tempoh lalu

Strategi ini mengira Curve Coppock berdasarkan harga penutupan $SPY. Isyarat beli dihasilkan apabila kurva melintasi di atas sifar dan isyarat jual apabila melintasi di bawah.

Kelebihan

  • Menggunakan ciri unik Coppock Curve yang mempunyai kuasa ramalan yang lebih baik daripada penunjuk biasa seperti purata bergerak
  • Parameter yang boleh dikonfigurasi untuk pengoptimuman seperti tempoh WMA, tempoh ROC dll.
  • Menggunakan $SPY sebagai sumber isyarat yang mempunyai perwakilan pasaran yang kuat
  • Pengecualian stop loss untuk mengunci keuntungan dan mengurangkan pengeluaran

Risiko

  • Curve Coppock bukan penunjuk yang digunakan secara meluas, keberkesanannya memerlukan pengesahan
  • Kelewatan isyarat mungkin wujud, parameter perlu dioptimumkan
  • Stop loss yang terlalu luas mungkin terlepas peluang pulback
  • Bergantung pada satu penunjuk boleh menghasilkan isyarat palsu

Arahan pengoptimuman

  • Uji kombinasi parameter optimum di pasaran dan stok yang berbeza
  • Gabungkan dengan penunjuk lain untuk menapis isyarat palsu e.g. jumlah
  • Peningkatan dinamik peratusan stop loss
  • Pertimbangkan isyarat kemasukan lain seperti bilangan bar atau kejayaan harga

Kesimpulan

Strategi ini menggunakan ciri-ciri bentuk lengkung unik dari lengkung Coppock untuk menghasilkan isyarat perdagangan. Berbanding dengan penunjuk biasa, lengkung Coppock mempunyai kuasa ramalan yang lebih kuat. Tetapi sebagai penunjuk bebas, kebolehpercayaannya memerlukan pengesahan. Ia disyorkan untuk menggabungkannya dengan faktor lain untuk menapis isyarat palsu. Melalui pengoptimuman parameter, pengoptimuman kehilangan berhenti dan menggabungkan dengan penunjuk lain, strategi ini boleh menjadi sistem perdagangan kuantitatif yang berkesan.


/*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)
    


Lebih lanjut