資源の読み込みに... 荷物...

EMA と の 戦略 を フォロー する トレンド

作者: リン・ハーンチャオチャン, 日時: 2023-12-06 17:55:42
タグ:

img

概要

この戦略の名称は"Trend Following with EMA"で,トレンドフォローと指数的な移動平均 (EMA) の技術指標に基づいた定量的な取引戦略です.トレンド追跡とEMAを組み合わせて,株式または他の金融製品の価格傾向を特定し,それに応じて購入および販売の決定を下します.

戦略の論理

この戦略の主な論理は

  1. 低値が閉値を超えると,価格が上昇し始め,トレンドが形成されると,この時点でロングポジションが開かれる.

  2. 価格が下向きから上向きに変化すると,つまり閉じる価格が開く価格を上回り,EMA線を下回ると,ロングポジションも開かれる.

  3. 価格が上昇傾向から下落傾向に変化し,つまり閉じる価格が開く価格を下回ると,既存のロングポジションは閉じる.

  4. 180期間の高値と EMA の間のクロスオーバーを使用して下降傾向を決定します.高値が EMA 以下の低値と高値が EMA 以下の低値をクロスしたとき,ショートポジションが開かれます.

  5. 価格が上昇傾向から下落傾向に変わると,つまり閉じる価格が開く価格を下回り,EMA線が上回ると,ショートポジションも開かれる.

  6. 価格が上昇傾向から下落傾向に変化し,つまり閉じる価格が開く価格を超えると,既存のショートポジションは閉じる.

利点分析

この戦略は,トレンドフォローと移動平均指標を組み合わせ,価格動向の転換点を効果的に把握することができます.

  1. 傾向が続く部分は価格の傾向の方向性を決定し,間違った取引の確率を減らすことができます.
  2. 移動平均値の部分は,小規模な価格変動を効果的にフィルタリングし,より大きな幅の傾向を特定することができます.
  3. この2つの指標を組み合わせることで,取引シグナルの信頼性が向上し,偽陽性反応が回避できます.
  4. パラメータ設定は合理的で柔軟で,異なる製品や取引スタイルに適応できます.

リスク分析

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

  1. 激烈な物価変動のシナリオでは,EMAが遅れており,最も良いエントリーポイントを逃す可能性があります.
  2. トレンド判断指標はパラメータに敏感である.異なるサイクル設定は異なる取引信号と収益につながる.
  3. ロングとショートポジションの切り替え頻度は高すぎると,スライドとコミッションコストが増加する可能性があります.

リスクに対する解決策は次のとおりです

  1. EMAのサイクルパラメータを最適化して遅延確率を減らす.
  2. パラメータ最適化を行い,製品に最も適したサイクルパラメータを見つけます.
  3. ストップ・ロスの条件を設定し,過剰に頻繁にポジションを切り替えるのを避けるために利益を取ります.

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

戦略は以下の側面で最適化できます.

  1. 市場変動に応じてポジションを動的に調整するための波動性に基づくポジション管理モジュールを追加する.
  2. 価格動向を判断するための機械学習モデルを追加し,正確性を向上させるために簡単なクロスオーバー判断を置き換える.
  3. 企業業績の変化に誤った信号を避けるために,基本データを取り入れることで,取引信号を精査する.
  4. サイクルに最適なパラメータの組み合わせを見つけ,安定性を向上させ,収益を最大化するために多製品パラメータ最適化を行う.

結論

一般的に,これは価格の特徴を活用して方向を決定し,トレンドを追跡する典型的なトレンドフォロー戦略である. シンプルで,効果的で,実行しやすい,初心者の定量的な取引戦略として適している. しかし,指標遅れやパラメータ感度などのいくつかの問題がある. これらの問題は,より多くのデータソースを導入し,機械学習を使用することで改善することができる. したがって,この戦略の拡大と最適化には大きな可能性がある. これは推奨される高周波の定量的な取引戦略である.


/*backtest
start: 2023-11-28 00:00:00
end: 2023-12-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Trend + EMA", overlay=true, initial_capital=10000, currency=currency.USD, pyramiding=0)

tim=input("180", title="Period for trend")
ema_period=input(180, title="EMA period")

opn = request.security(syminfo.tickerid, tim, open)
cls = request.security(syminfo.tickerid, tim, close)

emaline = ema(close, ema_period)

plot(opn, color=red)
plot(cls, color=green)
plot(emaline, color=black)

if (crossover(low, emaline))
    strategy.entry("long", strategy.long)

if (crossover(cls, opn) and emaline < opn and strategy.position_size == 0)
    strategy.entry("long", strategy.long)

if (crossunder(cls, opn) and strategy.position_size > 0)
    strategy.close_all()

if (crossunder(high, emaline) and high < emaline)
    strategy.entry("short", strategy.short)

if (crossunder(cls, opn) and emaline > opn and strategy.position_size == 0)
    strategy.entry("short", strategy.short)

if (crossover(cls, opn) and strategy.position_size < 0)
    strategy.close_all()


もっと