トレンドと移動平均に基づく定量取引戦略


作成日: 2023-12-06 17:55:42 最終変更日: 2023-12-06 17:55:42
コピー: 0 クリック数: 545
1
フォロー
1619
フォロワー

トレンドと移動平均に基づく定量取引戦略

概要

この戦略の名前は,トレンドフォローイングとEMAという.これは,トレンドと均線に基づいた定量取引戦略である.これは,トレンドフォローリングと指数移動平均 ((EMA) の2つの技術指標を組み合わせて,株式または他の金融製品の価格トレンドを識別し,それに基づいて買い物および販売を行う.

戦略原則

この戦略の主な論理は:

  1. 値上がり傾向を判断するために,180サイクル長さの低点と閉店価格の交差を使用する.低点の上で閉店価格を横切るときは,価格が上昇し始め,トレンドを形成し,この時点で多めにすることを示す.

  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. 企業業績の変化に誤った信号を回避するために,FundamentalsとデータRefineの取引信号を組み合わせる.
  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()