Strategi perdagangan kuantitatif berdasarkan keluk Coppock


Tarikh penciptaan: 2023-11-13 11:44:55 Akhirnya diubah suai: 2023-11-13 11:44:55
Salin: 0 Bilangan klik: 730
1
fokus pada
1621
Pengikut

Strategi perdagangan kuantitatif berdasarkan keluk Coppock

Gambaran keseluruhan

Strategi ini menggunakan petunjuk teknikal Coppock Curve yang kurang dikenali untuk mencapai perdagangan kuantitatif. Kurva Coppock berasal dari purata bergerak bertimbangan dengan mengira kadar perubahan indeks Standard & Poor’s 500 atau setara dagangan.

Prinsip

Strategi ini menggunakan kurva Coppock sebagai penunjuk teknikal untuk menghasilkan isyarat perdagangan. Formula untuk mengira kurva Coppock adalah:

Kurva Coppock = purata bergerak bertimbangan 10 kitaran (ROC 14 kitaran + ROC 11 kitaran)

Di mana formula untuk mengira kadar perubahan ROC adalah: ((Close semasa - Close sebelum N kitaran) / Close sebelum N kitaran

Strategi ini adalah berdasarkan harga penutupan $SPY, dan mengira keluk Coppock. Apabila keluk tersebut melewati garis nol, ia menghasilkan isyarat beli, dan apabila ia melewati garis nol, ia menghasilkan isyarat jual.

Kelebihan

  • Menggunakan petunjuk kurva Coppock yang unik, mempunyai prospek yang lebih baik daripada petunjuk seperti purata bergerak yang biasa
  • Parameter penunjuk yang boleh dikonfigurasi untuk pengoptimuman, seperti kitaran purata bergerak bertimbangan, kitaran pengiraan kadar perubahan dan sebagainya
  • Menggunakan $SPY sebagai sumber isyarat, representasi pasaran yang kuat
  • Trailing stop boleh dipilih untuk mengunci keuntungan dan mengurangkan penarikan balik

Risiko

  • Coppock tidak begitu popular dan perlu diperiksa
  • Isyarat dagangan mungkin tertunda, parameter yang perlu dioptimumkan
  • Tetapan Stop Loss yang terlalu longgar boleh kehilangan peluang untuk menarik balik
  • Bergantung kepada satu petunjuk mudah menyebabkan isyarat palsu

Arah pengoptimuman

  • Uji pasaran yang berbeza, saham yang berbeza untuk mengoptimumkan kombinasi parameter terbaik
  • Menapis isyarat palsu dengan penunjuk lain, seperti jumlah transaksi
  • Peratusan Stop Loss Optimasi Dinamik
  • Pertimbangkan jumlah dagangan atau penembusan harga sebagai pintu masuk

ringkaskan

Strategi ini memanfaatkan ciri bentuk kurva unik Coppock untuk menghasilkan isyarat perdagangan. Ia mempunyai prospek yang lebih kuat daripada petunjuk biasa. Tetapi kebolehpercayaan sebagai petunjuk bebas masih perlu disahkan. Ia disyorkan untuk menggunakan kombinasi dengan faktor-faktor lain untuk menyaring isyarat palsu.

Kod 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)