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

作者: リン・ハーンチャオチャン,日付: 2024-02-21 15:11:32
タグ:

img

概要

これは単純な移動平均値 (SMA) をベースとした組み合わせの取引戦略である. 9 日間のSMAと 21 日間のSMAのクロスオーバーを買い売り信号として使用する. 短期間のSMAが下から長期間のSMAを超えると,買い信号が生成される. 短期間のSMAが上から長期間のSMAを下に越えると,売り信号が生成される.

戦略の論理

この戦略の主な論理は,異なるパラメータを持つ2つのSMAラインを使用することである.短期トレンドを表す9日SMAと長期トレンドを表す21日SMA.短期トレンドラインが下から長期トレンドラインを越えると,市場はダウントレンドからアップトレンドに変化し,購入信号を生成することを示す.短期ラインが上から長期ラインを下に横断すると,上からアップトレンドからダウントレンドに変化し,販売信号を生成することを示す.

この戦略の主要信号は,二つのSMAラインの金交差死交差である.短SMAが長SMAを超えると黄金交差が発生し,ダウントレンドからアップトレンドへの変更の可能性を示唆する.短SMAが長SMAを下回ると死亡交差が発生し,アップトレンドからの下落が始まる可能性があることを示唆する.この2つの信号を利用することで,戦略は短期および長期のトレンドとの関係を特定し,取引決定を下す.

利点

  1. 分かりやすく実行できます
  2. 広範なテスト/最適化が必要なパラメータは少ない
  3. 合理的な取引頻度 過剰な攻撃的な取引を避ける
  4. 傾向の逆転点を特定するのにかなり正確です
  5. ある程度の測定可能性と安定性がある

リスク

  1. 誤った信号やウィップソーを生成する傾向がある
  2. 購入/販売ポイントの選択は,体系的なアプローチではなく,経験に大きく依存する
  3. パラメータに大きく依存する性能. 9 日/21 日 SMA は最適ではない可能性があります.
  4. 騒音をフィルタリングする効果がない 乱雑な市場/横向市場
  5. 高波動性のある環境での大きな損失を伴う取引

可能な改善:

  1. 偽信号に作用しないようにフィルターを追加する
  2. 信号の信頼性を測定するための他の指標を組み込む
  3. 異なる製品のパラメータをテストし最適化
  4. リスクを制御するためにストップ・ロスト/収益を導入する

結論

一般的に,これは比較的伝統的なシンプルな二重移動平均クロスオーバーシステムである.比較的単純なパラメータ選択で理解し,実装することは容易である.短期的および長期的トレンドの間の変化を効果的に追跡することができる.しかし,誤った信号,経験的に選択されたパラメータ,高変動環境における中等なパフォーマンスなどの問題は対処する必要がある.適切な最適化,強化,組み合わせを堅牢なリスク管理慣行とともに検討すべきである.


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

//@version=5
strategy("Bitboy Strategy", overlay=true)

// Define MAs
SlowMA = ta.sma(close, 9)
FastMA = ta.sma(close, 21)

// Plot MAs
plot1 = plot(SlowMA, color=color.new(color.red, 0), title="Slow MA")
plot2 = plot(FastMA, color=color.new(color.green, 0), title="Fast MA")

// Plot MA Ribbon
fill(plot1, plot2, color=FastMA > SlowMA ? color.rgb(233, 21, 21, 50) : color.new(#1de223, 45))

// Define buy/sell conditions
longCondition = ta.crossover(SlowMA, FastMA)
shortCondition = ta.crossunder(SlowMA, FastMA)

// Strategy commands for buy/sell
if longCondition
    strategy.entry("Long", strategy.long)

if shortCondition
    strategy.entry("Short", strategy.short)

// Plot buy/sell signals (for visualization)
plotshape(longCondition, location=location.belowbar, color=color.rgb(18, 230, 25, 37), style=shape.labelup, text="Buy", textcolor=color.white)
plotshape(shortCondition, location=location.abovebar, color=color.rgb(239, 23, 23, 40), style=shape.labeldown, text="Sell", textcolor=color.white)

もっと