MACDとEMAのクロスオーバー戦略

作者: リン・ハーンチャオチャン開催日:2023年12月28日 15:22:14
タグ:

img

概要

この戦略は,MACD指標の速い線と遅い線のクロスオーバーを使用してエントリーと出口を決定する. EMA指標は,トレンド方向を判断するためにも使用される. 速い線が下からスローラインを突破し,MACD値は0未満であるとき,長い; 速い線が上からスローラインを突破し,MACD値は0を超えると短い. ストップ損失出口は,シグナルが生成されたときのEMA値に設定され,利益を取ることはエントリー価格の2倍に設定される.

戦略原則

MACDの高速線が下からスローラインを突破し,MACD値は0を下回ると,価格の短期移動平均が上昇し,インパクトが強化し始めることを示し,ロングポジションを取ることができる.高速線が上からスローラインを突破し,MACD値は0を超えると,価格の短期移動平均が低下し,インパクトが弱くなり始めることを示し,ショートポジションを取ることができる.

EMA指標は,全体的なトレンド方向を判断する. EMA値の高さは上昇傾向を示し,低い値は下落傾向を示します. EMAが上昇傾向を示したときのみ戦略は長くなり,EMAが反傾向取引を避けるために下落傾向を示したときのみ戦略は短くなります.

ストップ・ロスは,シグナル発生時のEMA値に設定される. EMAはトレンドをよく判断することができる. EMA値として設定することで,以前の低点または高点でストップ・ロスが取られる可能性が低下する. 利益を取ることはエントリー価格の2倍に設定され,リスク報酬比が2になる.

利点分析

この戦略は,MACDとEMA指標を組み合わせて,エントリータイミングとトレンド方向をより良く決定する.ストップロスの方法は上昇と減少を追求することを避ける.リスク報酬比は2で,比較的保守的なパラメータ設定である.MACD指標のパラメータは,市場の変化に柔軟に対応するために調整することができる.

リスク分析

MACDインジケーターは平均遅れがあり,インジケーターターンは価格ターンを遅らせる傾向があります.戦略は特定のエントリーポイントを決定することはできません.いくつかの盲点があります.ストップ・ロスは変動する価格アクションによって引き起こす傾向があります.テイク・プロフィットポイントは早めにまたは遅れてヒットすることがあります.

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

  1. MACDのパラメータを最適化して,より敏感または安定するようにします.
  2. より正確なエントリーポイントを決定するために他の指標を組み込む.
  3. ストップ・ロストと 収益のパラメータを動的に調整します
  4. より適切なポジションサイズを決定するためにマネー管理を最適化します.

概要

この戦略は,MACDとEMA指標を組み合わせてエントリータイミングとトレンド方向を決定する.ストップ・ロストとテイク・プロフィートのシンプルで合理的な方法を使用する.より良い戦略結果を得るため,MACDの遅れ,ストップ・ロストとテイク・プロフィートのパラメータなどにさらなる最適化を行うことができます.


/*backtest
start: 2022-12-21 00:00:00
end: 2023-12-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("MACD & EMA 200 Strategy", overlay=true)

// MACD Settings
fastLength = input(12, title="Fast Length")
slowLength = input(26, title="Slow Length")
signalLength = input(9, title="Signal Length")
src = close

[macdLine, signalLine, _] = ta.macd(src, fastLength, slowLength, signalLength)

// 200 EMA
ema200 = ta.ema(src, 200)
plot(ema200, title="200 EMA", color=color.red)

// Long Condition
longCondition = ta.crossover(macdLine, signalLine) and macdLine < 0 and close > ema200
if (longCondition and strategy.position_size <= 0)
    strategy.entry("Long", strategy.long)
    longStopLoss = ema200
    longTakeProfit = close + 2 * (close - ema200)
    strategy.exit("Exit Long", "Long", stop=longStopLoss, limit=longTakeProfit)

// Short Condition
shortCondition = ta.crossunder(macdLine, signalLine) and macdLine > 0 and close < ema200
if (shortCondition and strategy.position_size <= 0)
    strategy.entry("Short", strategy.short)
    shortStopLoss = ema200
    shortTakeProfit = close - 2 * (ema200 - close)
    strategy.exit("Exit Short", "Short", stop=shortStopLoss, limit=shortTakeProfit)


もっと