移動平均線に基づくトレンドフォロー戦略


作成日: 2024-01-22 17:26:04 最終変更日: 2024-01-22 17:26:04
コピー: 0 クリック数: 575
1
フォロー
1617
フォロワー

移動平均線に基づくトレンドフォロー戦略

概要

この戦略は,高速移動平均と遅い移動平均を使用して取引信号を構築し,トレンドの識別と追跡を実現します. 速いラインが遅いラインを横切るときに買い信号を生じ; 速いラインの下の遅いラインを横切るときに売り信号を生じます. この戦略は,中長い線のトレンドを追跡するのに適しており,市場ノイズを効果的にフィルターすることができます.

戦略原則

この戦略は,取引決定の基礎として2つの異なる周期の指数移動平均を使用しています. 急速な移動平均のパラメータは,短期間の価格変化を捉えるために30日と設定されています. 遅い移動平均のパラメータは,価格の中央の長線トレンドの方向を判断するために100日と設定されています.

速い線が下からゆっくりとした線を横切るときは,市場が上昇傾向に入ると買入シグナルが生じます.速い線が上からゆっくりとした線を横切るときは,市場が下向きに進むと売出シグナルが生じます.

戦略的優位性

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

  1. 均線構造により,短期的な市場の騒音を効率的に排除し,順位は
  2. ツイン・均等線戦略により,トレンドの方向を明確に判断できます.
  3. パラメータの最適化を実現するために,速やかに平均線周期をカスタマイズできます.
  4. 中間長線トレンドと短期調整の追跡機能を備えている.
  5. 規則はシンプルでわかりやすく,理解しやすく,初心者にも適しています.

リスク分析

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

  1. 価格が横横整理される場合,誤ったトリガー信号が生じやすい.平均線パラメータを最適化することでリスクを軽減することができる.
  2. 価格の急激な波動の異常を効果的に判断・処理できない場合. リスク管理のためにストップ・ロスを設定できます.
  3. 均線システム自体は遅滞性があり,価格転換点を逃す可能性があります.他の指標と組み合わせて最適化することができます.

最適化の方向

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

  1. 平均線の周期パラメータを最適化して収益性を向上させる.
  2. 偽突破を避けるために,取引量指数などの他の条件判断指標を追加します.
  3. 単一損失をコントロールするストップ・ロース戦略を導入する.
  4. トレンド指数と組み合わせて,トレンドの強さを判断し,トレンドの逆転を避ける.
  5. パラメータ最適化機能が追加され,戦略がより普遍的になる.

要約する

この戦略は,双均線を構築した取引意思決定システムに基づいて,急速均線と遅い均線の価格関係によって市場トレンドを判断し,シグナルを生成し,簡潔で明快である.この戦略は,一部のノイズをフィルターし,順位を保つことができ,中長線トレンドの取引に適しています.しかし,いくつかの欠陥があります.複数の指標の最適化とリスク管理を行うことによって,この戦略を最適化することで,より一般的で効率的にすることができます.

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

//@version=2
strategy("EMA Strategy v2", shorttitle = "EMA Strategy v2", overlay=true, pyramiding = 3,default_qty_type = strategy.percent_of_equity, default_qty_value = 10)


// === Inputs ===
// short ma
maFastSource   = input(defval = close, title = "Fast MA Source")
maFastLength   = input(defval = 30, title = "Fast MA Period", minval = 1)

// long ma
maSlowSource   = input(defval = close, title = "Slow MA Source")
maSlowLength   = input(defval = 100, title = "Slow MA Period", minval = 1)

// invert trade direction
tradeInvert = input(defval = false, title = "Invert Trade Direction?")
// risk management
useStop     = input(defval = true, title = "Use Initial Stop Loss?")
slPoints    = input(defval = 0, title = "Initial Stop Loss Points", minval = 1)
useTS       = input(defval = true, title = "Use Trailing Stop?")
tslPoints   = input(defval = 0, title = "Trail Points", minval = 1)
useTSO      = input(defval = false, title = "Use Offset For Trailing Stop?")
tslOffset   = input(defval = 0, title = "Trail Offset Points", minval = 1)

// === Vars and Series ===
fastMA = ema(maFastSource, maFastLength)
slowMA = ema(maSlowSource, maSlowLength)

plot(fastMA, color=blue)
plot(slowMA, color=purple)

goLong() => crossover(fastMA, slowMA)
killLong() => crossunder(fastMA, slowMA)
strategy.entry("Buy", strategy.long, when = goLong())
strategy.close("Buy", when = killLong())

// Shorting if using
goShort() => crossunder (fastMA, slowMA)
killShort() => crossover(fastMA, slowMA)
//strategy.entry("Sell", strategy.short, when = goShort())
//strategy.close("Sell", when = killShort())

if (useStop)
    strategy.exit("XLS", from_entry ="Buy", stop = strategy.position_avg_price / 1.08 )
    strategy.exit("XSS", from_entry ="Sell", stop = strategy.position_avg_price * 1.58)