最適化された移動平均のクロスオーバー戦略

作者: リン・ハーンチャオチャン,日付: 2024-02-04 10:31:45
タグ:

img

概要

この戦略は,定期的な移動平均のクロスオーバーに基づいているが,より正確な取引信号を生成するためにいくつかの修正が行われた. 傾向の方向性を特定するために,速い移動平均と遅い移動平均を組み合わせ,トレンドフォロー戦略に属している.

戦略の論理

ローモビング・平均値は,ローモビング・平均値より下から上へと伸びると,買い信号とみなされる.ローモビング・平均値が上から下へと伸びると,売り信号とみなされる.つまり,ロングのゴールデンクロス,ショートのデスクロス.ロング/ショートポジションを取ると,ストップ・ロスは大きな損失を避けるように設定される.

この戦略は,50&100期間の指数関数移動平均をそれぞれ高速線と遅い線として採用する.MAパラメータを調整することによって戦略効果を最適化することができる.

利点分析

この戦略は,市場騒音を効果的にフィルタリングできる二重移動平均を組み合わせてトレンド方向を識別する.単一のMA戦略と比較して,収益性の確率を向上させることができます.また,ストップロスの設定は個々の取引の損失も制限します.

クロスオーバールールを活用して転換点を決定することで,この戦略は,トレンド機会を適時に把握することができる.複雑な論理からなる戦略と比較して,理解し実行するのは簡単です.

リスク分析

この戦略には 3 つの主要なリスクがあります.不適切なMAパラメータリスク,不適切な保持期間リスク,不合理なストップ損失ポジションリスク.

  • 誤ったMAパラメータ選択は誤った信号を引き起こす.あまりにも短いまたはあまりにも長いMA長さは市場を誤って判断するので,楽器の特性に応じて適切な調整が必要である.

  • 持有期間が長すぎたり短すぎたりしても,利益を最大化したり,リスクを適切に制御したりできません.最適な持有期間を決定するために,異なる退出方法をテストする必要があります.

  • 不合理なストップ損失ポジション設定は,あまりにも広いストップ損失またはあまりにも狭いストップ損失につながるので,適切なストップ損失は,楽器の波動性に基づいて決定されなければならない.

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

この戦略は,次の側面から最適化できます.

  • 最適なパラメータを見つけるためにより多くのMAパラメータ組み合わせをテスト

  • 過去N日の価格変動またはATRに基づいて動的ストップ損失ポジションを決定する.

  • MACD,KDなどのより多くの指標を組み合わせてエントリータイミングを決定します.

  • 範囲限定市場を避けるためにトレンドフィルタリングルールを追加する

  • 戦略を他の手段にも適用するか,または複数の手段を対象とした戦略に改善することを検討する

概要

この最適化された移動平均クロスオーバー戦略は,トレンド方向を判断する際にダブルMAの利点と統合し,リスクを制御するためにストップロスを設定する.これは,容易に実行可能なトレンドフォロー戦略に属している.この戦略は,パラメータ最適化,ストップロスの最適化,シグナルフィルタリングなどを通じて安定性と効率性をさらに向上させることができます.複雑な戦略と比較して,理解し実行するのが簡単であり,したがって初心者の最初の量子取引戦略に非常に適しています.


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

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ashishchauhan
strategy(title="MA CO Strategy Test", overlay=true, pyramiding=0, initial_capital=100000)

fastEMALen = input(title="Fast EMA Length", type=input.integer, defval=50)
slowEMALen = input(title="Slow EMA Length", type=input.integer, defval=100)

fastEMA = ema(close, fastEMALen)
slowEMA = ema(close, slowEMALen)

enterLong = crossover(fastEMA, slowEMA)
enterShort = crossunder(fastEMA, slowEMA)

longStop = 0.0
longStop := enterShort ? close : longStop[1]

shortStop = 0.0
shortStop := enterLong ? close : shortStop[1]

plot(series=fastEMA, color=color.orange, title="Fast EMA")
plot(series=slowEMA, color=color.teal, linewidth=3, title="Slow EMA")

if enterLong
    strategy.entry(id="GoLong", long=true)

if enterShort
    strategy.entry(id="GoShort", long=false)

if strategy.position_size > 0
    strategy.exit(id="ExLong", from_entry="GoLong", stop=longStop)

if strategy.position_size < 0
    strategy.exit(id="ExShort", from_entry="GoShort", stop=shortStop)

strategy.close_all()


もっと