
Chiến lược này sử dụng các chỉ số kỹ thuật đường cong Coppock ít được biết đến để thực hiện giao dịch định lượng. Đường cong Coppock được tạo ra bằng cách tính toán các chỉ số S&P 500 hoặc trung bình di chuyển có trọng số về tỷ lệ biến đổi của các đồng tiền giao dịch.
Chiến lược này sử dụng đường cong Coppock làm chỉ số kỹ thuật để tạo tín hiệu giao dịch. Công thức tính toán đường cong Coppock là:
Đường cong Coppock = 10 chu kỳ trung bình chuyển động trọng lượng (ROC 14 chu kỳ + ROC 11 chu kỳ)
Trong đó, công thức tính toán của tỷ lệ thay đổi ROC là: ((Close hiện tại - Close trước chu kỳ N) / Close trước chu kỳ N
Chiến lược này dựa trên giá đóng cửa của $SPY, tính theo đường cong Coppock của nó.
Chiến lược này sử dụng các đặc điểm hình dạng đường cong độc đáo của đường cong Coppock để tạo ra tín hiệu giao dịch. Đường cong Coppock có tính tiên đoán mạnh hơn so với các chỉ số thông thường. Tuy nhiên, tính đáng tin cậy của nó như một chỉ số độc lập vẫn cần được xác minh.
/*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)