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

作者: リン・ハーンチャオチャン, 日付: 2023-11-14 16:17:16
タグ:

img

概要

この戦略は,トレンド方向を決定するために,異なる時間期間を持つ複数の単純な移動平均値 (SMA) のゴールデンクロスとデスクロスに基づいて購入・販売信号を生成する. 20日,50日,100日,200日SMAの4つのSMAを使用する. 短期SMAが長期SMAを超えると,それはゴールデンクロスと見なされ,購入信号が誘発される. 短期SMAが長期SMAを下回ると,それは死亡クロスと見なされ,販売信号が誘発される.

戦略の論理

この戦略の基本的な論理は以下の点に基づいています

  1. 複数のSMAを 20日,50日,100日,200日SMAを含む異なる時間帯で計算する.

  2. 短期SMA (20日) と長期SMA (50日,100日,200日) のクロスオーバー状況をチェックする.

  3. 20日SMAが50日SMAを超えると,金色のクロスと考えられ,買い信号が発信される.20日SMAが50日SMAを下回ると,死亡クロスと考えられ,売り信号が発信される.

  4. より大きな傾向は,より長い期間SMAがより短い期間SMAよりも高く,つまり50日SMA >20日SMAが決定する.

  5. 入力信号の優先順位は,20日SMAと50日SMA >20日SMAと100日SMA >20日SMAと200日SMAである.

  6. 20日間のSMAが50日間のSMAを下回るときに終了信号が生成されます.

この戦略は主にSMAクロスオーバーをベースに,トレンド方向を決定する.牛市場における黄金十字と熊市場における死亡十字は,潜在的なトレンド開始をシグナルすることができます.また,短期SMAよりも高い長期SMAは,より大きなトレンドの確認として機能します.

戦略 の 利点

この戦略の主な利点は以下の通りである.

  1. 論理はシンプルで 分かりやすく 実行できます

  2. 市場騒音をフィルタリングし,トレンドを特定する際には,SMAは EMAよりも優れている.

  3. 複数の時間周期SMAを使用すると信号の信頼性が向上します.

  4. 入力信号の優先順位設定は,入力の早期を防ぐ.

  5. 調整可能な SMA 期間と色は戦略の最適化を可能にします.

  6. 異なる取引スタイルのための複数のタイムフレームに適用できます.

  7. SMAクロスオーバーシステムは主要なトレンド方向を決定するのに非常に有効です.

戦略 の リスク

この戦略に関連したいくつかのリスク:

  1. SMAが頻繁に交差する範囲市場では誤った信号が多すぎる可能性があります.

  2. 固定SMA期間が市場の変化に適応できないため,傾向と変動に基づいてパラメータを最適化する必要があります.

  3. SMAのクロスだけでは正確なエントリが決定できないので,MACDなどの他の指標も考慮する必要があります.

  4. SMAは遅延性があるため,エントリータイミングを最適化するか,制限オーダーを使用する必要があります.

  5. ストップ・ロスの厳格な実施は 資本の維持に不可欠です

  6. 取引コストが収益性への影響を考慮すべきです.

戦略の強化

この戦略を最適化する方法:

  1. 市場状況とATRに基づいて動的にSMA期間を最適化する.

  2. MACD,RSIなどの他の指標を追加します.

  3. ADX のようなトレンドフィルターを追加して 統合中に誤った信号を回避します

  4. ATRストップやトレーリングストップのようなストップ・ロスの方法を最適化します

  5. ポジションのサイズを 口座サイズに基づいて動的に管理する.

  6. 異なる資産クラスで最適なパラメータをテストする.

  7. 複数のタイムフレームを組み込み,より高いタイムフレームの傾向と一貫性を確保します.

結論

概要すると,このシンプルなSMAクロスオーバーシステムは,トレンド方向を決定するのに信頼性があり,ほとんどのトレーダーに適しています.しかし,いくつかの遅れの問題があり,誤った信号を生む可能性があります. 変化する市場環境にわたって堅牢なものにするために,エントリータイム,ストップ損失,ポジションサイズ等を向上させることを検討する必要があります.複数の技術指標とトレンド評価の組み合わせは,堅固なトレンドフォローリング戦略を構築するための鍵です.


/*backtest
start: 2023-10-14 00:00:00
end: 2023-11-13 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/
// © xyzdesign1989
//@version=5
strategy("SMA crossover buy/sell [SCSM_Algo]", overlay=true, margin_long=3000, margin_short=3000)


BuyCond = ta.crossover(ta.sma(close, 20), ta.sma(close, 50)) and ta.sma(close, 20) > ta.sma(close, 50) and  ta.sma(close, 50) > ta.sma(close, 100) and  ta.sma(close, 100) > ta.sma(close, 200) or (ta.crossover(ta.sma(close, 20), ta.sma(close, 100)) and ta.sma(close, 20) > ta.sma(close, 50))
if (BuyCond)
    strategy.entry("SCSM 🤲 Buy", strategy.long)

SellCond = ta.crossunder(ta.sma(close, 20), ta.sma(close, 50))
if (SellCond)
    strategy.entry("الحمد للہ،Sell", strategy.short)

ma(source, length, type) =>
    type == "SMA" ? ta.sma(source, length) :
     type == "EMA" ? ta.ema(source, length) :
     type == "SMMA (RMA)" ? ta.rma(source, length) :
     type == "WMA" ? ta.wma(source, length) :
     type == "VWMA" ? ta.vwma(source, length) :
     na

show_ma1   = input(true   , "MA №1", inline="MA #1")
ma1_type   = input.string("SMA"  , ""     , inline="MA #1", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma1_source = input(close  , ""     , inline="MA #1")
ma1_length = input.int(20     , ""     , inline="MA #1", minval=1)
ma1_color  = input(#0929f6, ""     , inline="MA #1")
ma1 = ma(ma1_source, ma1_length, ma1_type)
plot(show_ma1 ? ma1 : na, color = ma1_color, title="MA №1")

show_ma2   = input(true   , "MA №2", inline="MA #2")
ma2_type   = input.string("SMA"  , ""     , inline="MA #2", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma2_source = input(close  , ""     , inline="MA #2")
ma2_length = input.int(50     , ""     , inline="MA #2", minval=1)
ma2_color  = input(#00fb04, ""     , inline="MA #2")
ma2 = ma(ma2_source, ma2_length, ma2_type)
plot(show_ma2 ? ma2 : na, color = ma2_color, title="MA №2")

show_ma3   = input(true   , "MA №3", inline="MA #3")
ma3_type   = input.string("SMA"  , ""     , inline="MA #3", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma3_source = input(close  , ""     , inline="MA #3")
ma3_length = input.int(100    , ""     , inline="MA #3", minval=1)
ma3_color  = input(#131313, ""     , inline="MA #3")
ma3 = ma(ma3_source, ma3_length, ma3_type)
plot(show_ma3 ? ma3 : na, color = ma3_color, title="MA №3")

show_ma4   = input(true   , "MA №4", inline="MA #4")
ma4_type   = input.string("SMA"  , ""     , inline="MA #4", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma4_source = input(close  , ""     , inline="MA #4")
ma4_length = input.int(200    , ""     , inline="MA #4", minval=1)
ma4_color  = input(#f60c0c, ""     , inline="MA #4")
ma4 = ma(ma4_source, ma4_length, ma4_type)
plot(show_ma4 ? ma4 : na, color = ma4_color, title="MA №4")

もっと