移動平均のクロス最適化戦略

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

移动平均交叉优化策略

概要

この戦略は,従来の移動平均線交差をベースに取引信号を策定しているが,より正確な取引信号を生み出すために変更を加えた.この戦略は,急速な移動平均線と遅い移動平均線の交差を組み合わせて傾向を判断するトレンド追跡戦略である.

戦略の原理

快速移動平均線が下方からゆっくり移動平均線を突破すると,買い信号とみなされ,快速移動平均線が上方からゆっくり移動平均線を突破すると,売る信号とみなされる.つまり金が多すぎ,死が空っぽである.多すぎ/空っぽが多すぎると,大きな損失を避けるために止損位置を設定する.

この戦略の鍵は,快速・遅い均線を選択することである.この戦略は,長さ50と100の指数移動平均線を快線と遅線として採用している.均線パラメータを調整することで戦略効果を最適化することができる.

優位性分析

この戦略は,2つの均線を組み合わせ,トレンド方向を判断し,市場のノイズを効果的にフィルタリングし,トレンドを識別します. 単一均線戦略と比較して,この戦略は利益の確率を向上させることができます. さらに,ストップロスを設定することで,個々の取引の損失を制限することもできます.

この戦略は,交差原理を用いてトレンドターニングポイントを判断し,トレンド機会をタイミングで捉える.複雑な条件論理を含む戦略と比較して理解し,実行しやすい.

リスク分析

この戦略には,3つのリスクがある:均線パラメータの不適切なリスク,保持時間の不適切なリスク,停止位置の不適切なリスク.

  • 均線パラメータの選択が不適切で,偽信号が生成される.均線長が短すぎたり,長すぎたりすると市場が誤判される場合,特定の品種特性に適合するように適切に調整すべきである.

  • 持てる時間が長すぎたり短すぎたりして,最大利益を得たりリスクをコントロールしたりできない.最適な持てるサイクルを決定するために,異なる出口方法をテストする必要がある.

  • 停止障害の位置を誤って設定すると,停止障害が過度に宽松または過度に緊張する.適切な停止障害位置は品種波動率に基づいて決定されるべきである.

優化方向

この戦略は,以下のいくつかの点で最適化することができます:

  • より多くの均線参数組合せをテストし,最適な参数を見つけます

  • 最近のN日間の価格変動またはATRに基づいて動的なストップロスの位置を決定する

  • 配列は,MACD,KDなど,多くの指標によって決定されます.

  • トレンドフィルタリングのルールを導入し,市場を整頓しない

  • 戦略をより多くの種に適用するか,または跨種戦略に改良することを検討できます.

概要

この移動平均交差最適化戦略は,急速な均線判断の優位性を統合し,リスクを制御するためにストップ損失を設定する傾向を追跡する戦略の1つである.この戦略は,パラメータ最適化,ストップ損失最適化,信号フィルタリングなどの手段によって安定性と効率性をさらに向上させることができる.この戦略は,複雑な論理を含む戦略と比較して,より理解しやすく,低しきい値で実施され,量化取引の入門戦略に最適である.


/*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()


もっと見る