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

作者: リン・ハーンチャオチャン, 日時: 2023-09-28 15:15:54
タグ:

概要

この戦略は,トレンドを決定し,潜在的な買取・販売機会を特定するために,移動平均の黄金十字と死亡十字を使用する. 急速な移動平均と遅い移動平均の両方を使用し,そのクロスオーバーに基づいて取引信号を生成する.

戦略の論理

この戦略は,異なるタイムフレームを持つ2つの移動平均を採用する.最初のMAは,短期的な価格動向を把握するために20日に設定された短いタイムフレームを有する.第二のMAは,長期的トレンドを測定するために120日に設定された長いタイムフレームを有する.

より速いMAがより遅いMAを超えると,短期間の上昇傾向を示す黄金十字が発生し,買い信号が生成される.より速いMAがより遅いMAを下回ると,短期間の下落傾向を示す死亡十字が発生し,売り信号が生成される.

この戦略は,MAsのクロスオーバーを検出するためにta.crossoverとta.crossunderを使用します.クロスオーバーが特定されると,対応する購入または販売信号が起動します.

利点分析

この戦略の最大の利点は,そのシンプルさである.移動平均値は,最も一般的な技術分析ツールの一つであり,非プロフェッショナルでも理解しやすい.MAsはまた,効果的に市場のノイズをフィルタリングし,トレンドの方向性を識別する.

より複雑な指標と比較して,MAは戦略に実装するのは比較的簡単です.堅牢なシステムを作成するには,MA期間を最適化する必要があります.

さらに,MA戦略は柔軟性があります.パラメータは,長期から短期まで,異なる製品と時間枠に調整できます.

リスク分析

主なリスクは,傾向が振動するときに頻繁に誤った信号を生成するウィップソーです.この場合は,騒音をフィルタリングするためにMA期間を適切に調整する必要があります.

もう一つの潜在的なリスクは,MAsの遅延性です.新しい傾向を反映するためにMAsには時間がかかります.これは滑り込みを引き起こす可能性があります.

また,戦略は,主要なニュースのような突然の出来事の影響も考慮していない.これらはMAsの有効性を無効にすることができる.リスクを制御するために停止が実施されるべきである.

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

戦略は以下を通じてさらに強化できます.

  1. バランスバインド市場での 誤った信号を避けるため 音量などのフィルターを追加します

  2. 適性MAsを使用し,波動性に基づいて期間を調整します.

  3. MACDやストキャスティックなどの指標を組み合わせて 信号を確認します

  4. 価格チャネルを確立し 突破の信号のみを考慮します

  5. ストップ・ロスを導入し 利益を引き出すことで 安定性を高める

結論

MAクロスオーバー戦略は,高速および遅いMAをクロスすることでシグナルを生成する.使いやすくてトレンドを識別できるが,誤ったシグナルと遅延のリスクも伴う.最適化されたパラメータ,追加されたフィルター,インジケーターの組み合わせにより,持続可能性が大幅に向上することができる.全体として,MA戦略は,トレーダーのために研究し適用する価値のある実践的なトレンドフォローリングシステムである.


/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
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/
// © brandlabng

//@version=5
//study(title="Holly Grail FX", overlay = true)
strategy('HG|E30m', overlay=true)
src = input(close, title='Source')

price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(20, title='1st MA Length')
type1 = input.string('EMA', '1st MA Type', options=['EMA'])

ma2 = input(120, title='2nd MA Length')
type2 = input.string('EMA', '2nd MA Type', options=['EMA'])

price1 = if type1 == 'EMA'
    ta.ema(price, ma1)

price2 = if type2 == 'EMA'
    ta.ema(price, ma2)


//plot(series=price, style=line,  title="Price", color=black, linewidth=1, transp=0)
plot(series=price1, style=plot.style_line, title='1st MA', color=color.new(#219ff3, 0), linewidth=2)
plot(series=price2, style=plot.style_line, title='2nd MA', color=color.new(color.purple, 0), linewidth=2)


longCondition = ta.crossover(price1, price2)
if longCondition
    strategy.entry('Long', strategy.long)

shortCondition = ta.crossunder(price1, price2)
if shortCondition
    strategy.entry('Short', strategy.short)

もっと