4時間のCCI逆転戦略

作者: リン・ハーンチャオチャン開催日:2023年10月13日 15:29:05
タグ:

概要

CCI指標をベースとした逆転取引戦略である.CCI指標が過剰購入または過剰販売レベルを示したときに逆転取引を開く.全体的に,この戦略は,CCI指標の過剰購入および過剰販売機能を使用して価格逆転機会を把握する.

戦略の論理

第一に,この戦略は,CCI指標に基づいています.CCI指標の公式は,

CCI = (典型的な価格 - 単純な移動平均値) / (0.015 * 標準偏差)

どこに? 典型的な価格 = (最高値 + 最低値 + 閉じる) /3 単純な移動平均 = 過去N日間の典型的な価格の移動平均
標準偏差 = 過去N日間の典型的な価格の偏差の平方根

この戦略は 11 期間の CCI インディケーターを使用しています.そして -150 は過剰販売レベル,150 は過剰購入レベルとして設定されています.

各バーの閉じる度に,11期CCIインジケーターがチェックされます.CCIが-150を下回ると,ロング信号が生成されます.CCIが150を超えると,ショート信号が生成されます.

シグナルを受け取った後,市場オーダーを使用して ポジションを開きます. 1%の利益目標と 0.5%のストップロスは設定されます.

利点分析

  1. CCI指標を使用することで,価格逆転の機会を効果的に把握できます.
  2. CCI パラメータは最適化のために調整できます
  3. 固定利益目標とストップ損失比でリスクを効果的に制御する
  4. シンプルで明快な戦略論理,理解し実行しやすい

リスク分析

  1. CCI インジケーターは多くの誤った信号を生成し,入力信号は信頼できない可能性があります.
  • 解決策: CCI パラメータを最適化し,他の指標でフィルターを追加
  1. 固定利益目標とストップ損失比は異なる製品に適合しない可能性があります.
  • 解決策: 動的利益目標とストップ損失を追加
  1. 戦略は CCI にのみ依存し,不効率の危険性が高い
  • 解決策: 安定性を高めるために複数の指標を組み合わせる
  1. 取引コストは考慮されない ライブ公演は影響を受けるかもしれない
  • 解決策: スリップ管理を追加し,取引頻度を減らす

オプティマイゼーションの方向性

  1. より良いパラメータ組み合わせを見つけるためにCCIパラメータを最適化
  2. シグナルフィルタリングのためのMACD,KDJなどの他の指標を追加
  3. 固定比率ではなく動的な利益目標とストップ損失を確立する
  4. 取引の頻度を下げる戦略を最適化し,取引コストに影響を減らす
  5. ライブ取引のための最適なパラメータ組み合わせを見つけるためにバックテスト最適化を行います.

概要

4時間CCI逆転戦略は,逆転取引のためのCCI指標を使用するシンプルな戦略である.明確な論理と簡単な実装の利点がある.しかし,信頼性のないCCI信号や柔軟性のない利益目標/ストップ損失などの弱点もある.CCIパラメータを最適化し,フィルター指標を追加し,ダイナミックな出口を開発することによってさらなる改善が可能である.全体的にこの戦略は,定量的な取引のためのCCIベースのアイデアを提供し,実用化する前にさらなる最適化を必要とする.


/*backtest
start: 2023-09-12 00:00:00
end: 2023-10-12 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("4H CCI Strategy", overlay=true)
length = input( 11 )
overSold = input( -150 )
overBought = input( +150 )
price1 = high
price2 = low
ucci = cci(price1, length)
dcci = cci(price2, length)
vcci = cci(ohlc4, 11)

resCustom = input(title="Timeframe", defval="15")
Length = input(16, minval=1)
xPrice = request.security(syminfo.tickerid, resCustom, hlc3)
xvnoise = abs(xPrice - xPrice[1])
nfastend = 0.666
nslowend = 0.0645
nsignal = abs(xPrice - xPrice[Length])
nnoise = sum(xvnoise, Length)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
nAMA = nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1]))
basis1 = nAMA
slope = change(basis1,1)

if (not na(vcci))
    if (crossover(dcci, overSold))
        strategy.entry("CCILE", strategy.long, comment="CCILE")
        strategy.exit("exit", "CCILE", profit = 0.01, loss = 0.005)
    if (crossunder(ucci, overBought))
        strategy.entry("CCISE", strategy.short, comment="CCISE")
        strategy.exit("exit", "CCISE", profit = 0.01, loss = 0.005)
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

もっと