MACD移動平均強気弱気転換戦略


作成日: 2023-12-08 15:29:41 最終変更日: 2023-12-08 15:29:41
コピー: 0 クリック数: 772
1
フォロー
1621
フォロワー

MACD移動平均強気弱気転換戦略

概要

MACD平均線牛熊変換戦略は,MACD指標のDIFFとDEA平均線を計算して,市場トレンドが逆転しているかどうかを判断し,取引シグナルを生成する.DIFF上を通過すると,多行し,DIFF下を通過すると,空行する.この戦略は,価格EMA平均線フィルタリングを組み合わせて,偽の突破を避ける.

戦略原則

この戦略は主にMACD指標のDIFFとDEA平均線に基づいています. MACDは,DIFF,DEAとMACD線で構成された指数移動平均の差値を表しています. DIFF線は,短期EMA平均線と長期EMA平均線の差値を表しています. DEA線は,DIFFのEMA平均線であり,DIFF線信号を検証するために使用されます.

DIFFがDEAを上方突破すると,短期平均線が強くなって市場が多頭進出する.DIFFが下方突破すると,短期平均線が弱くなって市場が空頭進出する.

同時に,戦略は,価格のEMA平均線を組み合わせて偽の突破をフィルターする.DIFFがDEAを上方突破し,価格が上回の多値より低い場合にのみ多値を行う.DIFFがDEAを下方突破し,価格が上回の空調価格より高い場合にのみ空値を行う.

優位分析

MACD均線牛熊変換戦略は,MACD指標と価格EMA均線を組み合わせ,MACD指標だけで生成される偽信号を避け,取引効果を高めます.この戦略は,市場の傾向が迅速に転換することを判断し,ショートライン操作に適しています.

優位性は主に以下に示されています.

  1. MACDの指標を使ってトレンド転換点を判断し,市場転換のタイミングを捉える
  2. 価格のEMA平均線と組み合わせたフィルタリングにより,偽突破の機会を減らす
  3. 取引信号は短線操作に適した速さで生成される.
  4. トレンドトラッキングを実現し,中期トレンド収益を得ることができます.
  5. トレンド転換操作の考え方を採用し,ほとんどのトレーダーの思考パターンに合致する

リスク分析

MACDの平均線牛と熊の変換戦略にはいくつかのリスクがあります.

  1. MACD指数は誤信号を発生しやすいため,価格EMAフィルターの検証が必要ですが,一部の動きも逃します.
  2. DIFFとDEA均線に注意してください.パラメータを誤って調整すると誤信号が大きくなります.
  3. 突破信号は1つのK線のみを判断し,隠蔽現象が発生する可能性がある.
  4. 戦略はDIFFとDEAの交差を主要な取引信号として使用し,市場が不透明であれば交差信号が頻繁に発生し,取引頻度が増加する

これらのリスクは,主に以下の点で最適化できます.

  1. MACDパラメータを調整して誤信号を減らす
  2. フィルターの強さを高め, 回確率を下げる
  3. 取引頻度を制限するポジションフィルターを増やす

最適化の方向

MACD平均線牛・熊変換戦略は,以下のいくつかの次元から最適化できる.

  1. MACDパラメータの最適化,DIFF,DEA周期の調整;
  2. 取引の頻度を下げるため,保有時間フィルタを増やすこと.
  3. 単一損失を抑えるためのストップ・ストップ戦略を 強化する.
  4. BOLL上下線,KDなどの他の指標フィルタと組み合わせた
  5. 市場を分析し,トレンドを判断し,逆向きの取引を避ける.
  6. この戦略の枠組みに基づいて,出場戦略または止まりの戦略のテンプレートを開発できます.

要約する

MACD均線牛熊変換戦略は,DIFF,DEAを交差して市場のステップが多頭と空頭になるタイミングを判断し,価格EMA均線フィルター偽のシグナルと連携して,市場のトレンド転換を迅速に判断する効果を実現している.この戦略は,簡単な明確な取引ロジックで,転換点を迅速に判断し,ショートラインとミドルラインに適している.操作の次のステップは,パラメータの調整,フィルターの強化,取引頻度の制御などから最適化することができ,戦略をより安定させる.

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

//@version=3
strategy("macd_strategy", 
          shorttitle="macd", 
          overlay=true, 
          pyramiding=1, 
          max_bars_back=5000, 
          calc_on_order_fills = false, 
          calc_on_every_tick=true, 
          default_qty_type=strategy.percent_of_equity, 
          default_qty_value=100, 
          commission_type =strategy.commission.percent, 
          commission_value=0.00075)
[diff, dea, _] = macd(close, 12, 26, 7)
dea_close = ema(diff, 3)
price = ema(close, 9)
plot(price)
cross_over_price = na
cross_over_signal = na
cross_over_price := cross_over_price[1]
cross_over_signal := cross_over_signal[1]

cross_under_price = na
cross_under_signal = na
cross_under_price := cross_under_price[1]
cross_under_signal := cross_under_signal[1]
if (crossover(diff,dea))
    cross_over_price := price[1]
    cross_over_signal := diff
if (crossunder(diff,dea))
    cross_under_price := price[1]
    cross_under_signal := diff
if dea > 0
    cross_over_price = na
    cross_over_signal = na
else
    cross_under_price = na
    cross_under_signal = na
if diff > 0
    if cross_under_price > cross_under_price[1]*1 and cross_under_signal < cross_under_signal[1]*0.95
        strategy.entry("S", strategy.short,  comment="S")
else
    if cross_over_price < cross_over_price[1]*1 and cross_over_signal > cross_over_signal[1]*0.95
        strategy.entry("B", strategy.long,  comment="B")
// strategy.exit("exit_s", "S", stop = strategy.position_avg_price*1.05, when=strategy.position_size < 0)
// strategy.exit("exit_b", "B", stop = strategy.position_avg_price*0.95, when=strategy.position_size > 0)
strategy.close_all(when=(strategy.position_size < 0 and (dea < 0 or diff > cross_under_signal*1 or crossover(diff, dea)) or (strategy.position_size > 0 and (dea > 0 or diff < cross_over_signal*1 or crossunder(diff, dea)))))