振動するモメンタム逆転移動平均クロスオーバー戦略

作者: リン・ハーンチャオチャン, 日付: 2023-12-21 11:21:49
タグ:

img

概要

この戦略は,MACD指標に基づいたモメンタム逆転取引戦略である.高速移動平均線と遅い移動平均線の違いを計算することによってMACD指標を生成する.MACD指標が正から負に変わると,販売信号が生成される.MACD指標が負から正に変わると,購入信号が生成される.この戦略には,いくつかの騒々しい取引信号をフィルタリングするために,追加のスムージメントのためにMACD指標の信号ラインも組み込まれる.

戦略原則

この戦略のコア指標はMACDであり,高速移動平均線,スロー移動平均線,シグナルラインで構成されている.まず,12日間の期間を持つ高速EMAと26日間の期間を持つ遅いEMAが計算され,その後,それらの間の差はMACD指標として計算される.MACD指標はモメント概念に基づいて価格変化の傾向を反映する.高速EMAがスローEMAよりも速く上昇すると,価格の上昇傾向を示し,MACDは正である.逆に,株価が下落傾向にあるとき,MACDは負である.

この戦略は,騒音をフィルターするために,MACDをさらに滑らかにするために信号線指標を導入する.信号線パラメータは9日EMAに設定される.最後に,MACDと信号ラインの差は取引信号として計算される.差が正から負に変化すると,販売信号が生成される.差が負から正に変化すると,購入信号が生成される.

利点分析

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

  1. 価格逆転点を決定するためにMACD指標を使用することで,株式価格の短期逆転の機会を把握できます.

  2. シグナルラインをスムーズにすることで 騒々しいシグナルをフィルタリングし 偽信号を減らすことができます

  3. 柔軟なパラメータ設定により,トレーダーは実際の市場状況に応じてパラメータを調整できます.

  4. 論理は単純で明快で 分かりやすく 実行可能で 初心者向けに 学習・研究に適しています

  5. 様々な指標とシグナルが組み合わさって戦略の最適化と大きなスケーラビリティを可能にします

リスク分析

この戦略にはいくつかのリスクもあります:

  1. 短期的な逆転を追跡することは,取引頻度と取引コストを増加させる可能性があります.

  2. MACDインジケーターは,長期にわたる一方的な価格上昇または下落の際に,簡単に偽信号を生成することができます.

  3. パラメータの設定が不適切であるため,信号生成が遅れている場合,最適なエントリーポイントが失われる可能性があります.

  4. この比較的シンプルな戦略は 複雑な市場条件では 劣る結果をもたらす可能性があります

上記のリスクを軽減するために,以下の方法で改善を行うことができます.

  1. 取引頻度を減らすためにパラメータを最適化します.例えば信号ラインサイクルを増加します.

  2. 長期トレンドに囚われないようにフィルタリング条件を追加します.例えば,長期および短期トレンドを決定するために他の追跡指標を組み合わせます.

  3. 最適な価格を追跡するために 制限オーダーを使用します

  4. 市場情勢を決定し,異常な市場での取引を避けるために,より多くの要因を追加します.

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

戦略は以下の側面で最適化できます.

  1. 最適なパラメータの組み合わせを見つけるために MACD パラメーターと信号ライン パラメータを最適化します.

  2. 長期および短期間のトレンドを決定し,トレンドに反する取引を避けるために他の補助指標を追加します.例えば,移動平均値,ボリンジャー帯など.

  3. 偽のブレイクを避けるために,Balance Volume のような取引量指標を組み込む.

  4. 戦略をより適応性のあるものにするために 異なるストック特性のパラメータを設定します

  5. 単一の損失と利益レベルを制御するために,ストップ・ロストと取利益価格設定を追加します.

  6. 金融指標や格付けの変化など 株式品質の要因を評価し,最適な株式プールを選択します

これらの最適化措置は,戦略の安定性,勝利率,利益水準を向上させ,戦略の継続的な開発と改善の基礎を築きます.

概要

これは典型的な短期逆転取引戦略である. 株の勢いや信号線の変化を反映するためにシンプルで明確なMACD指標を使用し,特定のエントリーポイントを決定する.適切なパラメータ設定により,短期的な価格逆転機会を利用して過剰な収益を得ることができます.

もちろん,単一の指標や単純な戦略は,様々な複雑な市場状況に完璧に適応することは不可能です.投資家はリスクに注意を払い,自分の状況とリスク嗜好に応じて戦略を選択する必要があります.一方,彼らはまた,市場状況に目を留め,戦略パラメータと取引規則を最適化する必要があります.継続的な学習と改善によってのみ,長期的な安定した投資収益を得ることができます.


/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//study(title="MACD Strategy by Sedkur", shorttitle="MACD Strategy by Sedkur")
strategy (title="MACD Strategy by Sedkur", shorttitle="MACD Strategy by Sedkur")


// Getting inputs
dyear = input(title="Year", type=input.integer, defval=2017, minval=1950, maxval=2500)
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
buyh = input(title="Buy histogram value", type=input.float, defval=0.0, minval=-1000, maxval=1000, step=0.1)
sellh = input(title="Sell histogram value", type=input.float, defval=0.0, minval=-1000, maxval=1000, step=0.1)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)

strategy.entry("buy", strategy.long, comment="buy", when = hist[1] <= hist and buyh<=hist and year>=dyear)
strategy.entry("sell", strategy.short, comment="sell", when = hist[1] >= hist and sellh>=hist and year>=dyear)


もっと