コップック曲線に基づく定量的取引戦略


作成日: 2023-11-13 11:44:55 最終変更日: 2023-11-13 11:44:55
コピー: 0 クリック数: 725
1
フォロー
1617
フォロワー

コップック曲線に基づく定量的取引戦略

概要

この策略は,あまり知られていないコッポック曲線技術指標を利用して,取引を量化します.コッポック曲線は,スタンプ500指数または取引等価の変動率の加重移動平均を計算することによって導かれます.コッポック曲線の上部にゼロラインを突破すると,買入シグナルが生じ,ゼロラインを下部にゼロラインを突破すると,売却シグナルが生じます.利益をロックするには,トラッキングストップロスを使用することもできます.この策略は,$SPYのコッポック曲線を,他のETFや株式の買入販売代理シグナルとして使用します.

原則

この戦略は,取引信号を生成する技術指標としてコッポック曲線を使用する.コッポック曲線の計算式は次のとおりである.

コッポック曲線 = 10周期重力移動平均 ((14周期変化率ROC + 11周期変化率ROC)

変化率ROCの計算式は: ((現在のClose - N周期前のClose) / N周期前のClose

策略は,$SPYの閉盘価格に基づいて,そのCoppock曲線を計算する.カーブ上のゼロラインを横切ると買い信号が生じ,ゼロラインを横切ると売り信号が生じます.

利点

  • 独特のCoppock曲線指標を使用し,一般的な移動平均などの指標に比べて,より優れた予測性があります.
  • 設定可能な指標パラメータを最適化します.例えば,加重移動平均周期,変化率計算周期など.
  • $SPYを信号源として採用し,市場を代表する
  • トレーリングストップを選択して,利潤をロックし,撤回を減らす

リスク

  • コポック曲線はあまり普及していないので,その有効性を検証する必要があります.
  • 取引シグナルが遅れている可能性があり,最適化パラメータが必要です.
  • ストップ・ロスの設定が緩やかすぎると,取り戻しの機会が逃れかねない.
  • 単一の指標に 頼るだけで 誤った信号が出る

最適化の方向

  • 異なる市場,異なる株式をテストして,最適なパラメータの組み合わせを最適化します.
  • 偽信号をフィルタリングする他の指標と組み合わせて,例えば取引量
  • ダイナミック・オピティマイズ・ストップ・ローの比率
  • 取引数や価格突破を入場として考慮する

要約する

この戦略は,コップポック曲線の独特な曲線形状特性を利用して取引シグナルを生成する.コップポック曲線は,一般的な指標に比べて,より強い予測性を有する.しかし,独立した指標としての信頼性はまだ検証される必要がある.偽の信号をフィルタリングするために他の要因との組み合わせを使用することを推奨する.パラメータの最適化,ストップ・ロスの最適化,および他の指標の組み合わせにより,この戦略は,有効な量化取引システムになることができる.

ストラテジーソースコード
/*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)