Strategi ini menggunakan indikator teknis Curve Coppock yang kurang dikenal untuk menerapkan perdagangan kuantitatif. Curve Coppock diperoleh dengan mengambil rata-rata bergerak tertimbang dari tingkat perubahan (ROC) dari indeks pasar seperti S&P 500 atau setara perdagangan seperti SPY ETF. Sinyal beli dihasilkan ketika Curve Coppock melintasi di atas nol dan sinyal jual ketika melintasi di bawah. Sinyal stop loss trailing opsional tersedia untuk mengunci keuntungan.
Strategi ini menggunakan Kurva Coppock sebagai indikator teknis untuk menghasilkan sinyal perdagangan.
Kurva Coppock = WMA 10 periode (14-periode ROC + 11-periode ROC)
Di mana tingkat perubahan ROC dihitung sebagai: (Tutup saat ini - Tutup N periode yang lalu) / Tutup N periode yang lalu
Strategi ini menghitung kurva Coppock berdasarkan harga penutupan $SPY. Sinyal beli dihasilkan ketika kurva melintasi di atas nol dan sinyal jual ketika melintasi di bawah.
Strategi ini memanfaatkan karakteristik bentuk kurva unik dari Kurva Coppock untuk menghasilkan sinyal perdagangan. Dibandingkan dengan indikator umum, Kurva Coppock memiliki kekuatan prediktif yang lebih kuat. Tetapi sebagai indikator mandiri, keandalanannya perlu divalidasi. Disarankan untuk menggabungkannya dengan faktor lain untuk menyaring sinyal palsu. Melalui optimasi parameter, optimasi stop loss dan menggabungkan dengan indikator lain, strategi ini dapat menjadi sistem perdagangan kuantitatif yang efektif.
/*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)