二重移動平均金十字戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-17 17:38:36
タグ:

img

概要

ダブルムービング・平均金十字戦略は,移動平均をベースとした定量的な取引戦略である.異なる期間の移動平均を計算することによって,市場の動向と取引機会を判断する.短期移動平均が長期移動平均を超えると,購入信号として黄金十字が形成される.短期移動平均が長期移動平均を下回ると,販売信号として死亡十字が形成される.

戦略の論理

ダブルムービング・平均金十字戦略の核心論理は,ムービング・平均のスムージング特性にある.ムービング・平均は,市場のノイズを効果的にフィルターし,一般的なトレンド方向を示せる.短期ムービング・平均は,最近の価格変動情報を把握し,価格変化により敏感である.長期ムービング・平均は,市場の長期トレンドを反映した最近の価格変化によりゆっくりと反応する.短期ムービング・平均が長期ムービング・平均を超えると,市場は新たな上昇傾向を形成していることを示す.短期ムービング・平均が長期ムービング・平均を下回ると,上昇傾向が終わっている可能性があることを示唆し,ポジションを退出することを検討すべきである.

二重移動平均戦略のもう1つの重要なポイントは,RSI指標である.RSIは,市場が過剰購入または過剰販売状態にあるかどうかを効果的に決定することができます.RSIを組み込むことで,市場のターニングポイントの周りに間違った取引信号を生成するのを避けることができます.この戦略は,RSIが基準を満たす場合にのみ購入および販売信号を生成します.

具体的には,取引の論理は次のとおりです.

  1. 20 期,50 期,100 期間の移動平均値を計算する
  2. 20 期間の移動平均値が 50 期間の移動平均値と 100 期間の移動平均値を超えることを確認し,潜在的上昇傾向を示す
  3. RSIが50を下回っているかどうかを確認します.
  4. 3つの条件がすべて満たされている場合,購入信号を生成します.
  5. 20 期間の移動平均値が 50 期間の移動平均値と 100 期間の移動平均値を下回るかどうかを確認し,潜在的下落傾向を示します
  6. RSIが48.5を超えているか確認してください.
  7. 3つの条件がすべて満たされている場合,販売信号を生成します.

この戦略は複数のパラメータを組み合わせることで 誤った信号を効果的にフィルタリングし 取引決定の正確性を向上させます

利点

二重移動平均金十字戦略には以下の利点があります.

  1. 戦略の論理は シンプルで明快で 分かりやすく 実行できます
  2. パラメータは,異なる市場に対応する移動平均期間の調整によって最適化するために柔軟です
  3. 移動平均値とRSIの組み合わせは,ノイズを効果的にフィルタリングし,実際の市場動向を評価することができます.
  4. バックテストによると この戦略は安定した収益と 低コストの引き上げを 提供しています
  5. 戦略は機械学習やその他の先進技術によりさらに最適化できます

リスク

この戦略に関連したリスクは以下のとおりです.

  1. 移動平均値は,市場変動が激しくなり,最良のエントリーとアウトプットポイントが欠けている場合,遅れることがあります.
  2. 戦略のパフォーマンスはパラメータ最適化に大きく依存する
  3. 市場体制の長期的変化により,パラメータの調整が必要になる可能性があります.
  4. メカニカルな取引システムは,ターニングポイントの周りに集中したポジションとより高いリスクをもたらします

リスクを軽減するために,次の側面で最適化を行うことができます.

  1. 市場変動の頻度と大きさに基づいて移動平均期を動的に調整するための変動指標を組み込む
  2. パラメータを動的に最適化するために機械学習モデルを追加する
  3. ストップ・ロスの制限を設定し,個々の取引のダウンサイドを抑える
  4. 集中したポジションに関連するリスクを軽減するためのポジションサイズ化システムを採用する

増進 の 機会

二重移動平均金十字戦略にはさらなる強化の余地があります.

  1. 安定性を向上させるため,ボリンジャーバンドやボリュームなどの追加フィルターを組み込む
  2. 機械学習技術を自動調整するパラメータに適用し,適応性を高める
  3. 変化する市場情景に基づいて移動平均期を調整するための適応スキームを設計する
  4. 先進的なリスク管理システムを ポジションのダイナミックなサイズに組み込む
  5. 安定性を向上させるため,複数のモデルを持つ algos アセンブリシステムを構築する

結論

ダブル・ムービング・平均金十字戦略は,古典的なルールベースの定量的な取引戦略である.柔軟なパラメータ調節と良好なバックテスト結果により,簡単に実装できます.これは初心者のための素晴らしい出発点として機能します.しかし,いくつかの内在的な制限があります.さらなる研究と最適化により,持続的な収益性のためにより知的で安定したシステムに拡張することができます.


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

//@version=4
//Based on Larry Connors RSI-2 Strategy - Lower RSI
strategy(title="EA_3Minute_MagnetStrat", shorttitle="EA_3Minute_MagnetStrat", overlay=false)
src = close, 
//RSI CODE
up = rma(max(change(src), 0), 30)
down = rma(-min(change(src), 0), 30)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
//Criteria for Moving Avg rules
ma20= vwma(close,20)
ma50 = vwma(close,50)
ma100= vwma(close,100)

//Rule for RSI Color
//col = ma30 > ma50 > ma200 and rsi <=53?lime: ma50 < ma200  and rsi >= 60?red : silver
long1 = ma20 > ma50 and ma50 > ma100 and rsi < 50 
short1 = ma20 < ma50 and ma50 < ma100 and rsi > 48.5 
//plot(rsi, title="RSI", style=line, linewidth=1,color=col)
//plot(100, title="Upper Line 100",style=line, linewidth=3, color=aqua)
//plot(0, title="Lower Line 0",style=line, linewidth=3, color=aqua)

//band1 = plot(60, title="Upper Line 60",style=line, linewidth=1, color=aqua)
//band0 = plot(44, title="Lower Line 40",style=line, linewidth=1, color=aqua)
//fill(band1, band0, color=silver, transp=90)
//strategy.entry ("buy", strategy.long, when=long)
//strategy.entry ("sell", strategy.short, when=short)
//plot(long,"long",color=green,linewidth=1)
//plot(short,"short",color=red,linewidth=1)
//
long = long1[1] == 0 and long1 == 1
short = short1[1] == 0 and short1 == 1
longclose = long[3] == 1
shortclose = short[3] == 1

//Alert

strategy.entry("short", strategy.short,qty = 1, when=short)
strategy.entry("long", strategy.long,qty=1, when=long)
plot(long,"long",color=green,linewidth=1)
plot(short,"short",color=red,linewidth=1)
strategy.close("long",when=longclose)
strategy.close("short",when=shortclose)

//strategy.exit(id="long",qty = 100000,when=longclose)
//strategy.exit(id="short",qty = 100000,when=shortclose)
plot(longclose,"close",color=blue,linewidth=1)
plot(shortclose,"close",color=orange,linewidth=1)
//strategy.exit(id="Stop", profit = 20, loss = 100)

もっと