簡単な移動平均のクロスオーバー戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-30 15:39:39
タグ:

img

概要

シンプル・ムービング・平均クロスオーバー戦略は,2つのムービング・平均値,高速移動平均値 (高速MA) と遅い移動平均値 (遅いMA) のクロスオーバーに基づいています.高速MAが遅いMAを超えるとロング (買い) になります.高速MAが遅いMAを下回るとロングを閉じる.

原則

この戦略は2つの移動平均値を使用する.一つは,価格変化に迅速に対応する短期間の高速MAである.もう1つは,短期間の変動をフィルタリングし,長期的なトレンドをよりよく反映する長期間のスローMAである.高速MAがスローMAを超えると,短期間の上昇傾向を示し,ゴールデンクロス購入信号とみなされる.高速MAがスローMAを下回ると,短期間の下落傾向を示し,死亡クロス販売信号とみなされる.

利点

  1. パラメータが少ないので 簡単に理解し 過剰なフィットメントに 弱い
  2. 移動平均は価格変動を平らにしており 騒音に惑わされないように予測能力を持っています
  3. 比較的に少量の抽出は 最大の抽出はあまり大きくありません
  4. ほとんどの市場条件,特にトレンド市場ではうまく機能します

リスク

  1. 範囲限定市場では誤った信号を生成する傾向があります
  2. 移動平均値は遅れがあり,トレンドの最適なエントリー&アウトプットポイントを見逃す可能性があります.
  3. ストップ・ロスの設定がない場合,大きな損失を起こす可能性があります.
  4. パラメータの調整が不適切なら 戦略のパフォーマンスに影響する

ストップ・ロスを設定することでリスクは制御できます.適切なパラメータを選択することで戦略のパフォーマンスを改善できます.

強化

  1. 最適パラメータを見つけるために,異なるMA長度組み合わせを試験する.
  2. フィルタリングと信号品質の改善のための他の技術指標を追加します.
  3. リスクを制御するために ダイナミックストップロスを設定します
  4. 入口と出口を最適化するために波動度指標を組み込む.
  5. ポジションのサイズとマネーマネジメントを最適化する

結論

簡単に言うと,シンプル・ムービング・アベア・クロスオーバーは,シンプルで実践的なトレンドフォロー戦略である.移動平均の指標特性を利用してトレンド変化を特定する.主な利点は,容易な実装,理解しやすさ,比較的小さな引き下げである.主な欠点は潜在的な偽信号,遅延性である. 戦略はパラメータ最適化,ストップ損失設定,および他の指標と組み合わせることによってさらに改善することができる.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Simple Moving Average Crossover", overlay=true)

// Input parameters
fastLength = input(10, title="Fast MA Length")
slowLength = input(30, title="Slow MA Length")
stopLossPercent = input(1, title="Stop Loss Percentage")

// Calculate moving averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)

// Buy condition: Fast MA crosses above Slow MA
buyCondition = ta.crossover(fastMA, slowMA)

// Sell condition: Fast MA crosses below Slow MA
sellCondition = ta.crossunder(fastMA, slowMA)

// Plot moving averages as lines
plot(fastMA, color=color.blue, title="Fast MA", linewidth=2)
plot(slowMA, color=color.red, title="Slow MA", linewidth=2)

// Execute trades based on conditions
if (buyCondition)
    strategy.entry("Buy", strategy.long)

if (sellCondition)
    strategy.close("Buy")

// Set stop loss level
stopLossLevel = close * (1 - stopLossPercent / 100)
strategy.exit("Sell", from_entry="Buy", loss=stopLossLevel)




もっと