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