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