Chiến lược giao dịch định lượng dựa trên đường cong Coppock


Ngày tạo: 2023-11-13 11:44:55 sửa đổi lần cuối: 2023-11-13 11:44:55
sao chép: 0 Số nhấp chuột: 730
1
tập trung vào
1621
Người theo dõi

Chiến lược giao dịch định lượng dựa trên đường cong Coppock

Tổng quan

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.

Nguyên tắc

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

Ưu điểm

  • Sử dụng chỉ số đường cong Coppock độc đáo, có khả năng dự đoán tốt hơn so với các chỉ số phổ biến như đường trung bình di chuyển
  • Các tham số chỉ số có thể được cấu hình để tối ưu hóa, chẳng hạn như chu kỳ trung bình di chuyển có trọng lượng, chu kỳ tính toán tỷ lệ thay đổi
  • Sử dụng $SPY như một nguồn tín hiệu, đại diện mạnh mẽ cho thị trường
  • Có thể chọn trailing stop stop để khóa lợi nhuận, giảm rút lui

Rủi ro

  • Đường cong Coppock không phải là một chỉ số phổ biến, cần phải xác minh tính hiệu quả của nó
  • Các tín hiệu giao dịch có thể bị trì hoãn và cần các tham số tối ưu hóa
  • Cài đặt dừng lỗ quá lỏng lẻo có thể bỏ lỡ cơ hội rút tiền
  • Dựa vào chỉ số duy nhất có thể tạo ra tín hiệu sai

Hướng tối ưu hóa

  • Kiểm tra các thị trường khác nhau, các cổ phiếu khác nhau để tối ưu hóa các tham số tốt nhất
  • Kết hợp với các chỉ số khác để lọc các tín hiệu giả, chẳng hạn như khối lượng giao dịch
  • Tỷ lệ phần trăm dừng lỗ tối ưu hóa động
  • Xem xét số lần giao dịch hoặc giá phá vỡ như là một bước vào

Tóm tắt

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.

Mã nguồn chiến lược
/*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)