長期適応型CCIボトムキャッチング商品取引戦略


作成日: 2023-12-21 14:30:03 最終変更日: 2023-12-21 14:30:03
コピー: 0 クリック数: 726
1
フォロー
1623
フォロワー

長期適応型CCIボトムキャッチング商品取引戦略

概要

この戦略は,商品通路指数 ((CCI) の指標をベースに,動的適応エントリーの基準を用い,トレンドの逆転のタイミングを判断し,また,トラッキング・ストップ・ロスを利用して利益をロックする.戦略の名称は,CCIの底部を捕捉する商品取引戦略に,戦略の核心的な要点を含んでいる:逆転の機会を捕捉するために,オーバーセール領域を判断するCCIの指標を使用し,動的適応エントリーを用い,エントリーのタイミングを水平的に最適化する.

戦略原則

核心指標はCCI指標で,超売り地域を判断してトレンドの逆転の機会を提示する.また,異なる指標と市場環境に応じてCCI超売り地域の幅も異なることがあります.したがって,この戦略は,過去の一段間のCCIの最低点の位置を判断し,動的にCCIの買取レベルを設定する見張りのある方法を使用します.過去40日間のCCIの最低点が90より大きい場合は,新超売り地域レベルとして-90;過去50日間のCCIの最低点が70より大きい場合は,新超売り地域レベルとして-70.

具体的には,デフォルトの購入信号のCCIレベルは-145である。それから,過去40日、50日など,異なる日数におけるCCIの最低点の位置を判断する.最低点がデフォルトレベルの次のレベルである−90であるならば,−90を新規エントリーレベルとする。最低点がさらに−90より高い場合は,−70を新規エントリーレベルとする,このように推し進めます。このようなエントリーレベルは,−145 /−90 /−70 /−50 /−4 /0 /+25 /+50 /+70の間,動的に切り替えることができる。CCIが適切なレベルより低いときは購入信号が生成される。

また,ストップ・ロスを追跡して利潤を固定する戦略も採用されており,ストップ・ロスのレベルは価格の動きに合わせて上昇する.

優位分析

  • CCI指標を用いた超売り地域判断の考え方は明確で信頼できる
  • エントリー 戦略が異なるタイプの市場環境に自動的に適応できるように,水平の動的適応設計
  • ストップ・トラッキングのデザインは,戦略を利潤に有効にします.

固定されたエントリーレベルと比較して,このような動的設計は,エントリーのタイミングを最適化することができる. 高いエントリー基準を追求することは,下落が強い市場ではリスクを軽減することができる. 振動区間整理の市場では,エントリー基準を下げることは,より多くの機会を掴むことができる. このような設計は,戦略の適応性を強化する.

CCI自体は,過買過売を判断する指標としてより明確で信頼性があり,CCIに基づいてトレンドの逆転を判断する考え方が有効である.ダイナミックエントリーの設計と組み合わせると,この戦略の全体的な優位性は顕著である.

リスク分析

  • CCI指標は完璧ではなく,ある程度の遅れがある.価格がCCI読書を素早く破るとき,判断は失効する可能性がある.
  • Entries 水平的な動的調整は,市場環境の変化に完璧に適応することもできず,調整が遅い場合も,最適な entries タイミングを逃すこともあります
  • 商品市場の変動が大きく,不適切な止損設定により大きな損失が発生する可能性があります.

CCIによるトレンド転換点判断の考え方は遅滞性がある.価格が急激に上昇したり暴落したりすると,エントリーのタイミングは不正確である可能性がある.さらに,エントリーの水平のダイナミックな適応機構は,現在の市場環境に完璧にマッチするのも難しい.これはエントリーが必ずしも最適のタイミングではないことを引き起こしている.最後に,商品市場自体は波動性があり,ストップ損失を設定したとしても,特定のパラメータを設定しなかったとしても,大きな損失を引き起こす可能性があります.

最適化の方向

  • CCIパラメータと平滑周期を最適化し,異なる時間長さのCCI効果をテストする
  • より多くのエントリーレベルをテストし,よりよいデフォルト値や適応デザインを探します.
  • 異なるストップパラメータをテストし,商品市場の高い変動特性に合わせてストップ幅を適切に上昇させる

主に,CCIパラメータ自体,エントリーレベル設定,およびストップダストパラメータのいくつかの側面から最適化することができます.特定の標識に対して,より優位なパラメータを正確に特定することで,戦略の効果を向上させることができます.

要約する

この戦略は,CCI指標を集約して,超買い超売を判断する考えと,動的適応性エントリーレベル設計を使用して,突破的なトレンドをキャプチャする.固定パラメータと比較して,動的エントリーレベルは,戦略の適応性を明らかに強化している.エントリーによる反転キャプチャモデルと追跡ストップを組み合わせて,強力な勢いの機会を掴み,タイムストップをすることができる.この戦略は,パラメータを正確に設定した前提で,全体的な効果が強固である.

ストラテジーソースコード
/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Extended Adaptive CCI Entry Strategy for Commodities", shorttitle="Ext_Adaptive_CCI_Entry_Com", overlay=true)

// Inputs
cciLength = input(20, title="CCI Period")
defaultCCIEntryOversold = input(-145, title="Default CCI Entry Oversold Level")
adaptiveCCIEntryLevel90 = input(-90, title="Adaptive CCI Entry Level for 40 Days")
adaptiveCCIEntryLevel70_50Days = input(-70, title="Adaptive CCI Entry Level for 50 Days")
adaptiveCCIEntryLevel50 = input(-50, title="Adaptive CCI Entry Level for 60 Days")
adaptiveCCIEntryLevel4 = input(-4, title="Adaptive CCI Entry Level for 90 Days")
adaptiveCCIEntryLevel0 = input(0, title="Adaptive CCI Entry Level for 120 Days")
adaptiveCCIEntryLevel25 = input(25, title="Adaptive CCI Entry Level for 140 Days")
adaptiveCCIEntryLevel50_160Days = input(50, title="Adaptive CCI Entry Level for 160 Days")
adaptiveCCIEntryLevel70_180Days = input(70, title="Adaptive CCI Entry Level for 180 Days")
lookback40 = input(40, title="Lookback Period for -90 Level")
lookback50 = input(50, title="Lookback Period for -70 Level")
lookback60 = input(60, title="Lookback Period for -50 Level")
lookback90 = input(90, title="Lookback Period for -4 Level")
lookback120 = input(120, title="Lookback Period for 0 Level")
lookback140 = input(140, title="Lookback Period for +25 Level")
lookback160 = input(160, title="Lookback Period for +50 Level")
lookback180 = input(180, title="Lookback Period for +70 Level")

// Indicator Calculation
cci = ta.cci(close, cciLength)

// Determine adaptive entry level based on lookback periods
var float entryLevel = defaultCCIEntryOversold // Initialize with the default level
if ta.lowest(cci, lookback40) > adaptiveCCIEntryLevel90
    entryLevel := adaptiveCCIEntryLevel90
if ta.lowest(cci, lookback50) > adaptiveCCIEntryLevel70_50Days
    entryLevel := adaptiveCCIEntryLevel70_50Days
if ta.lowest(cci, lookback60) > adaptiveCCIEntryLevel50
    entryLevel := adaptiveCCIEntryLevel50
if ta.lowest(cci, lookback90) > adaptiveCCIEntryLevel4
    entryLevel := adaptiveCCIEntryLevel4
if ta.lowest(cci, lookback120) > adaptiveCCIEntryLevel0
    entryLevel := adaptiveCCIEntryLevel0
if ta.lowest(cci, lookback140) > adaptiveCCIEntryLevel25
    entryLevel := adaptiveCCIEntryLevel25
if ta.lowest(cci, lookback160) > adaptiveCCIEntryLevel50_160Days
    entryLevel := adaptiveCCIEntryLevel50_160Days
if ta.lowest(cci, lookback180) > adaptiveCCIEntryLevel70_180Days
    entryLevel := adaptiveCCIEntryLevel70_180Days

// Entry Condition
longCondition = cci < entryLevel

// Entry and Exit
if (longCondition)
    strategy.entry("Long", strategy.long, qty=1)
    alert("Long entry executed at " + str.tostring(close), alert.freq_once_per_bar)

trailOffset = input(10.0, title="Trailing Stop Offset in USD")
strategy.exit("Trailing Stop", "Long", trail_offset = trailOffset, trail_price = close)
if (close < entryLevel - trailOffset)
    alert("Long position closed at " + str.tostring(close), alert.freq_once_per_bar)

// Plotting
plot(series=cci, color=color.purple, title="CCI")
hline(price=defaultCCIEntryOversold, color=color.red, title="Default CCI Entry Oversold Level")
hline(price=adaptiveCCIEntryLevel90, color=color.orange, title="CCI -90 Level (40 Days)")
hline(price=adaptiveCCIEntryLevel70_50Days, color=color.yellow, title="CCI -70 Level (50 Days)")
hline(price=adaptiveCCIEntryLevel50, color=color.green, title="CCI -50 Level (60 Days)")
hline(price=adaptiveCCIEntryLevel4, color=color.blue, title="CCI -4 Level (90 Days)")
hline(price=adaptiveCCIEntryLevel0, color=color.purple, title="CCI 0 Level (120 Days)")
hline(price=adaptiveCCIEntryLevel25, color=color.aqua, title="CCI +25 Level (140 Days)")
hline(price=adaptiveCCIEntryLevel50_160Days, color=color.black, title="CCI +50 Level (160 Days)")
hline(price=adaptiveCCIEntryLevel70_180Days, color=color.gray, title="CCI +70 Level (180 Days)")