ダブルEMAゴールデンクロス戦略


作成日: 2023-10-30 12:27:50 最終変更日: 2023-10-30 14:36:11
コピー: 0 クリック数: 672
1
フォロー
1617
フォロワー

ダブルEMAゴールデンクロス戦略

概要

二重EMAの金交差戦略は,典型的なトレンド追跡戦略である.この戦略は,2つの異なる周期のEMA平均線を使用して,それらの交差形態に応じて買入と売却のシグナルを生成する.短周期EMA上の長い周期EMAを横断すると,買入のシグナルを生成する.短周期EMAの下の長い周期EMAを横断すると,売却のシグナルを生成する.この戦略は,中長期トレンドを追跡し,トレンドの開始段階で取引機会を間に合うように捕捉することができる.

戦略原則

この戦略は以下の部分から構成されています.

  1. 快線EMAと慢線EMAの長さを設定する.ここで快線EMAの長さは12で,慢線EMAの長さは26である.

  2. 速線EMAと遅線EMAを計算する.速線EMAの反応はより速く,遅線EMAの反応はより安定している.

  3. EMAの交差を判定し,取引信号を生成する. 速線 EMA上を慢線 EMAを通過すると,買い信号を生成する. 速線 EMA下を慢線 EMAを通過すると,売り信号を生成する.

  4. シグナル入場に応じて。多額の取引を行うとき,逆の空白取引がある場合は,まず空白取引を平らめ,それから多額の取引を開きます。空白取引は同理。

  5. ストップポイントを設定する. 過剰にすると,価格が落ちる前に低点一定割合でストップする. 空白を同理する.

  6. シグナル出場に応じて。快線EMAの下の慢線EMAを横切るときに多枚を平くする。快線EMA上の慢線EMAを横切るときに空枚を平くする。

この戦略は単純明快で,2つのEMAの交差によってトレンドの方向と強さを判断し,トレンドを効果的に追跡することができる.快線EMAは短期的な価格変化に敏感であり,慢線EMAは長期的なトレンド反応により安定している.二線交差は,比較的に古典的なトレンド変化の判断方法である.

戦略的優位分析

この戦略の利点は以下の通りです.

  1. 概念はシンプルで,理解し,実行しやすい.EMAと交差は,公認された有効な技術指標と信号である.

  2. 長期トレンドを効率的に追跡し,トレンドの機会を把握できます.

  3. 双EMA設定により,短期市場の騒音に邪魔されない.

  4. 明確な入場ルール,出場ルール,止損ルールがあるので,重宝の状況はありません.

  5. パラメータは少量で,過度に最適化することは容易ではない. パラメータの調整は簡単で,初心者の学習に適している.

  6. 反射結果は良好で,実戦価値がある.単独で使用できるが,他の戦略の組み合わせでも使用できる.

戦略的リスク分析

この戦略にはいくつかのリスクがあります.

  1. 二重EMA交差は誤信号と頻繁な交差を発生させやすい.パラメータを適切に調整し,無効信号をフィルターする.

  2. 振動区間とトレンドの逆転にうまく対応できない.他の指標の補足が必要である.

  3. 二重EMA戦略は高殺低を追いかけるが,適正にポジションの規模をコントロールするか,ストップ・ストップ・損失を設定する.

  4. 回測曲線には一定程度の過適合がある可能性がある.パラメータ感受性テストを行い,安定性を評価すべきである.

  5. タイムリーに止まらないと,大きな損失が起こりうる.合理的な止まり位置を設定する.

  6. 取引費用は実際の利益に影響を与える可能性があります.異なる品種の手数料の要因を考慮する必要があります.

戦略最適化の方向性

この戦略は以下の点で最適化できます.

  1. EMA周期パラメータを最適化して,最適のパラメータ組み合わせを見つける. ステップアップ最適化と機械学習の方法を導入することができる.

  2. ADX,CCIなどの指標にトレンドフィルターを加え,トレンドが不確実なときに誤った取引を避ける.

  3. 取引量,エネルギー潮などのエネルギー指標を増加させ,実際の取引の推進を確実にする.

  4. ダイナミック・ストップ・メカニズムを設定し,市場の変動に応じてストップ・ポジションを自動的に調整する.

  5. 関連品種と組み合わせて,関連品種を利用してリスク調整を行う.

  6. 機械学習のアルゴリズムを追加し,AIをパラメータ最適化,特性エンジニアリング,信号フィルタリングなどに活用する.

  7. 取引コストの要因を考慮し,ストップ・ロストとポジションの規模を調整し,取引頻度を減らす.

  8. 異なる品種特性の設計パラメータにより,戦略がより適応的になります.

  9. 統合戦略の枠組みを設計し,他の戦略の組み合わせで安定性を向上させる.

これらの最適化により,戦略がより完璧で安定し,実際の取引でより持続的で安定した利益を得ることができます.

要約する

この戦略は,双EMAの交差で取引信号を生成し,中長線トレンドを効果的に追跡できます.戦略の優点は,使いやすいこと,反測効果が良好で,初心者の学習使用に適しています.しかし,一定のリスクもあります.注意すべき注意が必要です.パラメータ最適化,補助技術指標の追加,ダイナミックストップの設定,取引コストの考慮などの措置によって,戦略をより完善にすることができます.この戦略は,単独で使用でき,または他の戦略と組み合わせることができ,優れた実用性を持っています.

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

//@version=2

strategy(title = "EMA Cross Strategy", shorttitle = "EMA Cross",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
UseStopLoss = input(true,"UseStopLoss")

window() => time >=  timestamp(StartYear, StartMonth, StartDay,00,00) ? true : false

stopLoss = input(20, title = "Stop loss percentage(0.1%)")


maFastSource   = input(defval = open, title = "Fast MA Source")
maFastLength   = input(defval = 12, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource   = input(defval = open, title = "Slow MA Source")
maSlowLength   = input(defval = 26, title = "Slow MA Period", minval = 1)

maFast = ema(maFastSource, maFastLength)
maSlow = ema(maSlowSource, maSlowLength)


fast = plot(maFast, title = "Fast MA", color = #7a8598, linewidth = 2, style = line, transp = 50)
slow = plot(maSlow, title = "Slow MA", color = #e08937, linewidth = 2, style = line, transp = 50)


longEMA = crossover(maFast, maSlow)
exitLong = crossunder(maFast, maSlow)

shortEMA = crossover(maSlow, maFast)
exitShort = crossover(maFast, maSlow)


if (longEMA)
    strategy.entry("LongId", strategy.long, when=window())
 
if (shortEMA)
    strategy.entry("ShortId", strategy.short, when=window())


if (UseStopLoss)
    strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
    strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)