EMA指標に基づくトレンドフォロー戦略


作成日: 2023-11-06 09:53:27 最終変更日: 2023-11-06 09:53:27
コピー: 0 クリック数: 691
1
フォロー
1617
フォロワー

EMA指標に基づくトレンドフォロー戦略

概要

この戦略は,株価のトレンドを特定するためにEMA指標を使用し,標準差計算の買入販売シグナルと組み合わせて,トレンドを追跡する取引戦略を実現する.主な考えは,現在の価格とEMAの差値を計算し,値買入を設定することである.

戦略原則

策略は,まず,閉じる価格と長さであるema_lengthのEMAの差値vを計算し,それからvのema_length周期の標準差devを計算する.それから,購入方向係数kを決定し,kは1を買って看板を表示し,kは-1を買って看板を表示する.それから,購入信号の値dev_limitを計算する.それはkをdevで倍し,また制限因子で倍する.vがdev_limitを超えると購入信号が生じる.退出信号は,vが0軸を回転する.

この戦略は2つのモデルを用意しています.

  1. ダウントレンドを追跡します. ダウントレンドを追跡します.

  2. 値上がり傾向を追跡する. 値上がり傾向を追跡する

総じて,この戦略は,価格とEMA値の差の標準差を動的に計算することで,買入値を設定し,トレンド追跡を実現する. ≪factorパラメータは,買入信号の感度を制御する. ≫ema_lengthは,EMA周期を制御する. ≫買入パターンは,買入方向を制御する.

戦略的優位分析

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

  1. EMA指数は価格のトレンド方向を識別し,EMA指数は価格を平らにし,トレンドを識別する効果が良い.

  2. 標準差を組み合わせた動的値計算は,固定値よりも市場変化に適応する.

  3. 買取の2つのモードは,上昇傾向または下降傾向を追跡する選択肢があります.

  4. factorパラメータは購入感度を調整するスペースを提供する。ema_lengthパラメータはEMA周期最適化パラメータを調整できる。

  5. 戦略の論理は明確でシンプルで,理解し,修正しやすい.

  6. ポジション管理を柔軟に設定し,上昇/下降のトレンドを追いつくための積極的な戦略.

リスク分析

この戦略には以下のリスクもあります.

  1. EMAの指標は遅滞しており,トレンドの転換点を逃している可能性がある.

  2. パラメータの最適化に依存し,パラメータが正しく設定されていない場合,過度に敏感または鈍くなる可能性があります.

  3. トレンドを追うリスクは,トレンドが逆転した場合,大きな損失を招く可能性があります.

  4. 多空間の変換が頻繁に発生すると,取引が頻繁に発生する.

  5. 取引費用のコストが上昇する.

これらのリスクに対して,ストップ・ストラテジック・コントロール・リスク,最適のパラメータを探すための最適化パラメータ組み合わせテスト,過濾条件の追加,過剰な取引を避けるなど,考慮することができる.

最適化の方向

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

  1. 異なるEMA周期のパラメータ効果をテストし,最適なEMA周期長さを探す.

  2. テストファクターの異なる値を取って,最適な値感度を探します.

  3. ポジション開設管理戦略の最適化,例えば,トレンドに沿ったポジションの増設.

  4. 金融危機の状況で取引を間違わないように,他の指標のフィルターを追加します.

  5. 単一損失をコントロールするストップ・ロスの策を導入する.

  6. 2つの買取モードに対してそれぞれ最適化パラメータを探し,最適なパラメータ組み合わせを探します.

  7. トレンド反転信号を調査し,トレンド追跡をオフに設定します.

要約する

この戦略は,EMAがトレンドの方向を識別し,動的に計算する値が買入販売シグナルを生じ,トレンドの追跡を実現する.戦略の論理はシンプルで明確で,ポジション管理を柔軟に配置して積極的なトレンドの追跡が可能である.同時に,戦略には一定のリスクがあり,パラメータの組み合わせを最適化テストする必要があり,StopIterationの損失戦略で補助してリスクが制御される.この戦略は,学習指標を組み合わせて,最適化パラメータ設定の適用の良い例として使用できる.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Azzrael

// Based on EMA and EMA Oscilator https://www.tradingview.com/script/qM9wm0PW-EMA-Oscilator-Azzrael/

// (EMA - close) + Std Dev + Factor = detecting oversell/overbuy
// Long only!
// Pyramiding - sometimes, depends on ...
// There 2 enter strategies in one script 
// 1 - Classic, buy on entering to OverSell zone (more profitable ~> 70%)
// 2 - Crazy, buy on entering to OverBuy zone (catching trend and pyramiding, more net profit)
// Exit - crossing zero of (EMA - close)

//@version=5
strategy("STR:EMA Oscilator [Azzrael]", overlay=false, 
 margin_long=100, 
 margin_short=100, 
 currency=currency.USD,
 default_qty_type=strategy.percent_of_equity,
 default_qty_value=30,
 pyramiding=3)

entry_name="Buy"

ema_length = input.int(200, "Period", minval=2, step=10)
limit = input.float(1.7, "Factor", minval=1, step=0.1, maxval=10)
dno = input.string(defval="Buy on enter to OverSell", title="Model", options=["Buy on enter to OverSell", "Buy on enter to OverBuy"]) == "Buy on enter to OverSell"

v = close - ta.ema(close, ema_length)
dev = ta.stdev(v, ema_length)
k = dno ? -1 : 1
dev_limit = k*dev*limit

cond_long = dno ? ta.crossunder(v, dev_limit) : ta.crossover(v, dev_limit)
cond_close = ta.cross(v, 0) 

// dev visualization
sig_col = (dno and v <= dev_limit) or (not dno and v >= dev_limit) ? color.green : color.new(color.blue, 80)
plot(dev_limit, color=color.green)
plot(k*dev, color=color.new(color.blue, 60))
plot(v, color=sig_col )
hline(0)

// Make love not war
strategy.entry(entry_name, strategy.long, when=cond_long)
strategy.close(entry_name, when=cond_close)