CCI、DMI、MACD 混合ロングショート戦略

CCI DMI MACD
作成日: 2024-04-28 13:52:16 最終変更日: 2024-04-28 13:52:16
コピー: 5 クリック数: 905
1
フォロー
1617
フォロワー

CCI、DMI、MACD 混合ロングショート戦略

概要

この戦略は,3つの技術指標を組み合わせたものです. 前進指標 ((CCI),方向運動指数 ((DMI) と移動平均線散散指 ((MACD)),市場の超買超売状態とトレンドの方向を判断するために使用される.CCIが超売領域から上方突破し,DI+がDI-より大きく,MACDが信号線より大きくなったら,買入信号が生じます.CCIが超買領域から下方突破し,DI-がDI+より大きく,MACDが信号線より小さいとき,売出信号が生じます.

戦略原則

  1. CCI指標を計算し,市場の超買超売状態を判断する.CCIが超売区 (<-100) から上方突破すると,市場が超売区 (<100) から下方突破すると,市場が超買区 (<100) から上方突破すると,市場が超買区 (<100) から下方突破すると,市場が超買区 (<100) から下方突破すると,下方突破すると,市場が超買区 (<100) から上方突破すると,下方突破すると,市場が超買区 (<100) から下方突破すると,下方突破すると,上昇が起こりうることを示す.
  2. DMIの指標を計算して,市場のトレンド方向を判断する.DI+がDI-より大きいときは,上昇傾向が優勢であることを示す.DI-がDI+より大きいときは,下降傾向が優勢であることを示す.
  3. 市場のトレンドの強さを判断するためのMACD指標を計算する.MACDが信号線より大きいときは,上昇動力が強いことを示し,MACDが信号線より小さいときは,下降動力が強いことを示します.
  4. 上記の3つの指標を組み合わせて,CCIが超売り区から上方突破し,DI+がDI-より大きく,MACDが信号線より大きくなったとき,買入シグナルが生じます.CCIが超買い区から下方突破し,DI-がDI+より大きく,MACDが信号線より小さいとき,売出シグナルが生じます.

戦略的優位性

  1. 複数の技術指標を組み合わせて,さまざまな角度から市場を分析することで,信号の信頼性が向上した.
  2. 市場における超買超売の状況,トレンドの方向,およびトレンドの強さを考慮し,市場における主要なトレンドを捉えることができる.
  3. 明確な入場・出場条件を設定し,自動取引を容易に実現する.

戦略リスク

  1. この戦略は,市場の揺れやトレンドが不明なときに,より多くの偽信号を生じ,頻繁に取引し,高い取引コストを生じさせる可能性があります.
  2. この戦略は,過去のデータに依存し,市場の突発的な出来事や重要なニュースに対する反応は遅い可能性があります.
  3. 戦略のパラメータ (CCIの超買い超売り値,MACDの快慢線周期など) は,異なる市場と品種に応じて最適化する必要がある.そうでなければ,戦略のパフォーマンスを影響する可能性がある.

戦略最適化の方向性

  1. 信号の信頼性や安定性を高めるために,より多くの技術指標や市場情緒指標を導入します.
  2. 策略パラメータを最適化するために,遺伝的アルゴリズムなどのスマート最適化方法を使用して,最適なパラメータの組み合わせを探します.
  3. ストップ・ストップやポジション管理などのリスク管理モジュールを追加して,戦略のリスク/利益の比率を向上させる.
  4. 異なる市場環境に対して異なる取引ルールを設定し,戦略の適応性を向上させる.

要約する

この戦略は,CCI,DMI,MACDの3つの技術指標を組み合わせて,市場の超買超売状態,トレンド方向およびトレンドの強さを総合的に判断し,買買のシグナルを生成する.戦略のアイデアは明確で,実行しやすいが,実際のアプリケーションでは,戦略のパラメータを最適化し,戦略の安定性と収益性を高めるために取引頻度とリスクを制御することを注意する必要があります.

ストラテジーソースコード
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("CCI, DMI, and MACD Strategy", overlay=true)

// Define inputs
cci_length = input(14, title="CCI Length")
overbought_level = input(100, title="Overbought Level")
oversold_level = input(-100, title="Oversold Level")

// Calculate CCI
cci_value = ta.cci(close, cci_length)

// Calculate DMI
[di_plus, di_minus, _] = ta.dmi(14, 14)

// Calculate MACD
[macd_line, signal_line, _] = ta.macd(close, 24, 52, 9)

// Define buy and sell conditions
buy_signal = ta.crossover(cci_value, oversold_level) and di_plus > di_minus and macd_line > signal_line // CCI crosses above -100, Di+ > Di-, and MACD > Signal
sell_signal = ta.crossunder(cci_value, overbought_level) and di_minus > di_plus and macd_line < signal_line // CCI crosses below 100, Di- > Di+, and MACD < Signal

// Define exit conditions
buy_exit_signal = ta.crossover(cci_value, overbought_level) // CCI crosses above 100
sell_exit_signal = ta.crossunder(cci_value, oversold_level) // CCI crosses below -100

// Execute trades based on conditions
strategy.entry("Buy", strategy.long, when=buy_signal)
strategy.close("Buy", when=buy_exit_signal)

strategy.entry("Sell", strategy.short, when=sell_signal)
strategy.close("Sell", when=sell_exit_signal)

// Plot CCI
plot(cci_value, title="CCI", color=color.blue)

// Plot DMI
plot(di_plus, title="DI+", color=color.green)
plot(di_minus, title="DI-", color=color.red)

// Plot MACD and Signal lines
plot(macd_line, title="MACD", color=color.orange)
plot(signal_line, title="Signal", color=color.purple)

// Plot overbought and oversold levels
hline(overbought_level, "Overbought", color=color.red)
hline(oversold_level, "Oversold", color=color.green)