この戦略は,EMA 34のモメンタムクロスオーバーをエントリーシグナルとしてベースとしたトレンドフォロー戦略である.EMA 34のモメンタムラインとゴールデンクロスを突破した価格の突破シグナルを組み合わせて取引シグナルを生成する.
この戦略は,まず, EmaClose, emaHigh, emaLow と呼ばれる,閉じる,高く,低くの 34 期間の EMA ラインを計算します. その後,価格が emaHigh と emaLow を破ったかどうかに応じて,買いと売り信号を生成します.
具体的には,閉じる価格がemaHighを上回ると,買い信号が生成され,閉じる価格がemaLowを下回ると,売り信号が生成されます.信号が生成されると,その時点の閉じる価格で入力し,取利益を100ポイント,ストップロスを50ポイントに設定します.
この方法で,戦略は EMA 34 の動向指標を使用して市場の動向を把握し,動向を追求します.
この戦略の最大の利点は,移動平均値の黄金のクロス信号と価格の突破信号の両方を組み合わせることで,エントリーポイントをより正確にし,誤った信号を効果的にフィルターすることができます.また,トレンドフォローするツールとして,EMAはトレンド取引を実施するために,戦略が市場トレンドをタイムリーに把握するのを助けることができます.
この戦略の主なリスクは,連続した長期損失に易しいことである.新しい上昇傾向を開始する前に市場が短い調整ショックを受けるとき,この戦略はしばしば損失を伴うポジションを削減する可能性がある.また,傾向を追う戦略であるため,横向市場では利益を得ることはできません.
ストップ・ロスのポイントを適切に調整したり,戦略の勝利率を改善するために他の指標を追加することによって最適化が可能になります.
戦略は以下の方向で最適化できる:
フィルタリングのための他の指標を追加します. 例えば,偽ブレイクに捕まるのを避けるために,音量指標を追加します.
EMAサイクルパラメータを最適化し,その種類に適したサイクルパラメータに調整する.
戦略の安定性を高めるために 簡単な取利益とストップ損失ポイントの代わりに 利益因子のような退出メカニズムを使用します
流動性の低い期間の取引を避けるため,流動性のフィルタリングを増加させ,スリップ損失を減らすことができます.
EMAのモメンタム指標に基づくトレンドフォロー戦略として,この戦略は高い実用性を持っています.価格突破信号とEMAのゴールデンクロス信号を組み合わせることで,新しいトレンド方向性を効果的に発見することができます.特定のパラメータと出口メカニズム最適化後に,戦略の安定性はさらに強化できます.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA 34 Crossover Strategy_4", overlay=true) length = 34 exitPoints = 50 emaClose = ta.ema(close, length) emaHigh = ta.ema(high, length) emaLow = ta.ema(low, length) var float[] entryPrices = array.new_float() var float[] exitLevels = array.new_float() // Long entry condition: Price crosses above EMA 34 high enterLong = ta.crossover(close, emaHigh) // Short entry condition: Price crosses below EMA 34 low enterShort = ta.crossunder(close, emaLow) // Exit condition for both long and short trades exitLong = array.size(entryPrices) > 0 ? close >= array.get(entryPrices, array.size(entryPrices) - 1) + exitPoints : false exitShort = array.size(entryPrices) > 0 ? close <= array.get(entryPrices, array.size(entryPrices) - 1) - exitPoints : false if (enterLong) array.push(entryPrices, close) array.push(exitLevels, close + exitPoints) strategy.entry("Buy", strategy.long) if (enterShort) array.push(entryPrices, close) array.push(exitLevels, close - exitPoints) strategy.entry("Sell", strategy.short) if (exitLong) strategy.close("Buy") if (exitShort) strategy.close("Sell") plot(emaClose, color=color.blue, title="EMA 34 Close") plot(emaHigh, color=color.red, title="EMA 34 High") plot(emaLow, color=color.green, title="EMA 34 Low")