2つの移動平均のクロスオーバー戦略

作者: リン・ハーンチャオチャン開催日:2024年1月4日 15:03:14
タグ:

img

概要

この戦略は,単純な移動平均クロスオーバーと平均真の範囲指標を使用して購入・売却信号を生成する.これはトレンドフォロー戦略に属する.主に50日および100日移動平均クロスオーバーを使用してトレンドを決定し,リスクを制御するためにATRに基づいてストップロスを設定する.

戦略の論理

  1. 計算する50日間の単純な移動平均 SMA1と100日間の単純な移動平均 SMA2
  2. SMA1が SMA2を横切ると,購入信号が生成される. SMA1が SMA2を下回ると,販売信号が生成される.
  3. 14日間のATRを計算する
  4. ATRを設定因数に掛けると,ストップ・ロストポイントとして使用されます.
  5. 購入信号が起動すると,閉じる価格マイナスストップ・ロスのポイントはストップ・ロスの販売ポイントである.販売信号が起動すると,閉じる価格プラスストップ・ロスのポイントはストップ・ロスの購入ポイントである.

この戦略は主に移動平均値のトレンド判断能力とATRのリスク制御能力に依存していることがわかります.論理は単純で理解し実行するのが簡単です.

利点

  1. シンプルな論理 簡単に実装し,初心者向けに適しています
  2. 移動平均値は,トレンドを効果的に追跡することができます
  3. ATRストップ損失は,個々のブラック・スワンイベントによる損失を効果的に制御することができます.
  4. パラメータは,異なる市場環境のために簡単に調整できます

リスク

  1. 波及市場では多くの誤った信号が発信され,反転点が欠けている
  2. ATRは急速に変化する市場に対して十分に敏感に反応しない可能性があり,予想よりも大きな損失をもたらす
  3. パラメータ設定とATR倍数値は経験に依存します.不正な設定は戦略のパフォーマンスに影響を与える可能性があります.
  4. 二重移動平均値自体には遅延効果があり,ターニングポイントを見逃す可能性があります.

リスク管理

  1. 移動平均周期を短縮して指標をより敏感にする
  2. より柔軟なストップ損失のために,動的にATR倍数を調整する.
  3. 偽信号をフィルタリングするために他の指標を追加
  4. より大きな時間枠の構造判断に基づいて動作する

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

  1. フィルターが良くなる EMA など
  2. 動的ストップ損失を考慮し,KeltnerチャネルなどでATRを置き換える
  3. フィルター信号にボリュームのようなサポート指標を追加
  4. エリオット波,サポートレジスタンスのような概念で トレンドキーポイントを特定します

概要

これは,トレンド方向とATRストップ損失を制御するために移動平均値を用いてトレンド方向を決定する典型的なトレンドフォロー戦略である.論理は単純で理解しやすい.しかし,一定の遅れと誤った信号リスクがあります.パラメータチューニング,インジケーター最適化,より多くの要因を組み込むなどを通じて改善が可能で,戦略をより適応させることができます.全体的にこの戦略は初心者練習と最適化に適していますが,実際の取引でそれを適用する際に注意する必要があります.


/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("SMA and ATR Strategy", overlay=true)

// Step 1. Define strategy settings
lengthSMA1 = input.int(50, title="50 SMA Length")
lengthSMA2 = input.int(100, title="100 SMA Length")
atrLength = input.int(14, title="ATR Length")
atrMultiplier = input.int(4, title="ATR Multiplier")

// Step 2. Calculate strategy values
sma1 = ta.sma(close, lengthSMA1)
sma2 = ta.sma(close, lengthSMA2)
atr = ta.atr(atrLength)

// Step 3. Output strategy data
plot(sma1, color=color.blue, title="50 SMA")
plot(sma2, color=color.red, title="100 SMA")

// Step 4. Determine trading conditions
longCondition = ta.crossover(sma1, sma2)
shortCondition = ta.crossunder(sma1, sma2)

longStopLoss = close - (atr * atrMultiplier)
shortStopLoss = close + (atr * atrMultiplier)

// Step 5. Execute trades based on conditions
if (longCondition)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Sell", "Buy", stop=longStopLoss)

if (shortCondition)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Buy", "Sell", stop=shortStopLoss)


もっと