この戦略は,二重EMAシステムとRSI指標の組み合わせを使用して,取引信号を生成する際に市場のトレンドを決定する.この戦略はトレンドフォロー戦略に属している.このシンプルで使いやすい戦略は,さまざまな主要なインデックスと暗号通貨に適用できる.2013年から現在までのバックテストで500%以上の累積収益を達成している.
この戦略は,異なるパラメータ設定を持つ2つのMACDを主要な取引指標として採用している.最初のMACDは10期間のショートEMA,222期間のロングEMA,9期間のシグナルラインを採用している.第2のMACDは21期間のショートEMA,450期間のロングEMA,20期間のシグナルラインを使用している.
第1MACDは,DIFF線がゼロを超えると買い信号を生成し,ゼロを下回ると売り信号を生成する.第2MACDからの信号は,第1MACDからの信号を確認する.
さらに,この戦略は,トレンドを決定するために価格勢力の公式を使用します.最新の閉じる + 上位を前の閉じる + 上位を1で割ると上昇傾向を示し,買い信号を生成し,売り信号には逆になります.
最後に,STOCのRSIK線が20を超えると 売り信号が確認されます.
この戦略における二重EMAメカニズムは,誤ったブレイクを効果的にフィルタリングすることができます.補充的なモメンタム式はまた,変動によって引き起こされる間違った信号を回避します.ストックRSIの組み込みは,過剰購入エリアの周りに販売信号を発行することによって,トップを追いかけるのを避けます.
この戦略は,複雑すぎる論理関係のないいくつかの共通の指標の単純な組み合わせのみを使用し,理解し,修正することが非常に簡単です.パラメータ設定は,異なる製品のための最適化を必要とせず,非常に普遍的です.
バックテストの結果によると,この戦略は,株価指数や仮想通貨などのさまざまな製品で,立派な累積収益と最大引き下げ制御を達成している.
この戦略の主なリスクは,価格が激動するときに簡単にウィプソーと損失を引き起こす可能性のある移動平均を決定するために使用することにある.さらに,単一のポジションでの損失を制御するためのストップ・ロスのメカニズムはありません.
過剰購入/過剰売却のレベルを検出するストックRSIの有効性は理想的ではありません.反転信号を頻繁に見逃す可能性があります.
価格が急激に崩れ落ちても MACD がまだ死十字を形成していない場合 この戦略は負けるポジションを保持し 損失を引き続き取るでしょう
単一のポジション損失を制御するためにストップ損失を追加することを検討する.例えば,ATRストップ損失またはより低い移動平均値に基づくストップ損失.
確認のために他の指標を追加します.例えば,KDやボリンジャー帯とストックRSIを組み合わせることで,より信頼性の高い過買い/過売検知が可能になります.
売り上げが大きくなったときにストップロスを上げたり 売り上げが低いときに新しいポジションを避けたり
異なるパラメータの組み合わせをテストし,MACD期間を最適化します.また,複数の確認のために他のタイムフレームのMACDを追加してテストします.
デュアルMACD定量取引戦略は,トレンドを決定するためにデュアルEMAクロスオーバーを使用して,誤った信号を避けるためにモメンタムインジケーターを補完したシンプルで明確な論理を持っています. 高い確率の取引機会をフィルタリングすることができます. 普遍的なパラメータ設定と堅実なパフォーマンスは,構築するための良い基礎戦略になります. 次のステップは,ストップ損失メカニズムを改善し,ボリューム分析を追加し,他の指標を組み合わせることによって,安定性と収益性をさらに高めることです.
/*backtest start: 2023-10-13 00:00:00 end: 2023-11-12 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Multiple MACD RSI simple strategy", overlay=true, initial_capital=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=80, pyramiding=0, calc_on_order_fills=true) fastLength = input(10) slowlength = input(22) MACDLength = input(9) MACD = ema(close, fastLength) - ema(close, slowlength) aMACD = sma(MACD, MACDLength) delta = MACD - aMACD fastLength2 = input(21) slowlength2 = input(45) MACDLength2 = input(20) MACD2 = ema(open, fastLength2) - ema(open, slowlength2) aMACD2 = sma(MACD2, MACDLength2) delta2 = MACD2 - aMACD2 uptrend = (close + high)/(close[1] + high[1]) downtrend = (close + low)/(close[1] + low[1]) smoothK = input(2, minval=1, title="K smoothing Stoch RSI") smoothD = input(3, minval=1, title= "D smoothing for Stoch RSI") lengthRSI = input(7, minval=1, title="RSI Length") lengthStoch = input(8, minval=1, title="Stochastic Length") src = input(close, title="RSI Source") rsi1 = rsi(src, lengthRSI) k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) d = sma(k, smoothD) h0 = hline(80) h1 = hline(20) yearin = input(2018, title="Year to start backtesting from") if (delta > 0) and (year>=yearin) and (delta2 > 0) and (uptrend > 1) strategy.entry("buy", strategy.long, comment="buy") if (delta < 0) and (year>=yearin) and (delta2 < 0) and (downtrend < 1) and (d > 20) strategy.entry("sell", strategy.short, comment="sell") //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)