EMA ダブル移動平均クロスオーバー戦略

EMA MA
作成日: 2024-06-07 15:58:15 最終変更日: 2024-06-07 15:58:15
コピー: 0 クリック数: 695
1
フォロー
1617
フォロワー

EMA ダブル移動平均クロスオーバー戦略

概要

この戦略は,2つの指数移動平均 ((EMA) を用いて価格の傾向の変化を捉えます.短期EMAが下から長期EMAを横切ると,買いのシグナルを生じます.短期EMAが上から長期EMAを横切ると,売りのシグナルを生じます.この戦略は,1日間の損失と利益を制御するために,同時に毎日のストップ・ロズとストップ・ストップの制限を設定します.

戦略原則

  1. 短期EMA (デフォルト周期は9) と長期EMA (デフォルト周期は21) を計算する.
  2. 短期EMAが上向きに長期EMAを横切るときは,多めにポジションを開く. 短期EMAが下向きに長期EMAを横切るときは,空いてポジションを開く.
  3. 各取引日の開始時の口座権益を記録し,現在の口座権益との差を計算し,即ち当日の損益である.
  4. 当日の損失が最大許容される損失を超えた場合 (口座の初期資金の0.25%),すべてのポジションをクリアする.
  5. 当日の利潤が最大許容利潤 (口座の初期資金の2%) を超える場合,すべてのポジションをクリアする.

戦略的優位性

  1. シンプルで分かりやすい:この戦略は論理的に明確で,移動平均の2つだけで取引シグナルを生成し,理解し,実行しやすい.
  2. トレンドトラッキング: EMAの高速と遅い線の交差により,価格の傾向の変化をよりよく捉えることができ,トレンド市場で使用するのに適しています.
  3. リスク管理:日々のストップとストップの制限を設定し,一日の損失と利益を効果的に制御し,口座の過度の変動を防止します.

戦略リスク

  1. パラメータ最適化:この戦略のパフォーマンスは,EMA周期の選択に大きく依存し,異なるパラメータ設定は,非常に異なる結果をもたらす可能性があります.したがって,異なる市場環境でパラメータ最適化と反測を行う必要があります.
  2. 振動市場:振動市場では,価格がEMA上下を頻繁に波動し,偽のシグナルが多く発生し,頻繁に取引と資金損失を引き起こす可能性があります.
  3. トレンド転換:市場トレンドが転換したときに,この戦略は,入場または出場を遅らせ,最適な取引時間を逃す可能性があります.

戦略最適化の方向性

  1. RSI,MACDなどの他の技術指標を導入し,トレンドの強さと方向を判断し,信号の正確性を向上させる.
  2. モバイルストップやダイナミックストップなどのストップとストップを最適化することで,利潤を保護し,リスクをコントロールできます.
  3. 市場変動の動向に応じてEMAサイクルを調整し,異なる市場状態に適応する.
  4. 経済データ,重大事件などの基本的分析と組み合わせて,取引シグナルをフィルタリングし,確認する.

要約する

EMA双均線交差戦略は,簡単で分かりやすい,トレンド市場に適した取引戦略である. 速いペースの均線交差によって,価格トレンドの変化をよりよく捉えることができる. 同時に,毎日のストップとストップの設定は,リスクを効果的に制御することができます. しかし,この戦略は,振動的な市場またはトレンドの転換時に不良なパフォーマンスを発揮し,他の技術指標と分析方法と組み合わせて最適化および改善する必要があります.

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © DD173838

//@version=5
strategy("Moving Average Strategy with Daily Limits", overlay=true)

// Moving Average settings
shortMaLength = input.int(9, title="Short MA Length")
longMaLength = input.int(21, title="Long MA Length")

// Calculate MAs
shortMa = ta.ema(close, shortMaLength)
longMa = ta.ema(close, longMaLength)

// Plot MAs
plot(shortMa, title="9 EMA", color=color.blue)
plot(longMa, title="21 EMA", color=color.red)

// Strategy conditions
crossUp = ta.crossover(shortMa, longMa)
crossDown = ta.crossunder(shortMa, longMa)

// Debug plots to check cross conditions
plotshape(series=crossUp, title="Cross Up", location=location.belowbar, color=color.green, style=shape.labelup, text="UP")
plotshape(series=crossDown, title="Cross Down", location=location.abovebar, color=color.red, style=shape.labeldown, text="DOWN")

// Entry at cross signals
if (crossUp)
    strategy.entry("Long", strategy.long)

if (crossDown)
    strategy.entry("Short", strategy.short)

// Daily drawdown and profit limits
var float startOfDayEquity = na
if (na(startOfDayEquity) or ta.change(time('D')) != 0)
    startOfDayEquity := strategy.equity

maxDailyLoss = 50000 * 0.0025
maxDailyProfit = 50000 * 0.02
currentDailyPL = strategy.equity - startOfDayEquity

if (currentDailyPL <= -maxDailyLoss)
    strategy.close_all(comment="Max Daily Loss Reached")

if (currentDailyPL >= maxDailyProfit)
    strategy.close_all(comment="Max Daily Profit Reached")