EVWMAに基づくMACD取引戦略


作成日: 2024-01-22 10:50:25 最終変更日: 2024-01-22 10:50:25
コピー: 0 クリック数: 618
1
フォロー
1617
フォロワー

EVWMAに基づくMACD取引戦略

概要

この戦略は,柔軟な成交量加重移動平均 (EVWMA) に基づくMACD取引戦略である.これは,EVWMAの優位性を利用し,取引信号が明確で実用的な戦略を設計している.

戦略原則

EVWMA指標は,取引量情報を移動平均計算に組み込み,移動平均が価格変化をより正確に反映できるようにする.この戦略は,高速線と遅い線の計算をEVWMAに基づいて構築する.高速線のパラメータ設定は,短期的な価格変化を捉えるためにより敏感であり,遅い線のパラメータ設定は,部分的なノイズをフィルターするためにより安定である.二つのEVWMAが形成されたMACDは,交差を多空化し,デザインヒストグラムは,視覚的に優れた取引ヒントを与える.

優位分析

この戦略の最大の利点は,EVWMA指標の力を利用することで,MACD戦略パラメータの設定をより安定させ,取引シグナルをより明確にすることにある.EVWMAは,単純な移動平均と比較して,市場の変化の傾向をよりよく把握できる.これは,この戦略をより広く適応させ,さまざまな市場環境で安定して働くことができる.

リスク分析

この戦略の主なリスクは,MACD自体に一定の遅れがあることであり,価格の逆転を間に合うように捕捉することができないことにある.さらに,EVWMAのパラメータ設定は,戦略のパフォーマンスにも影響を及ぼします.快速・遅い線パラメータを不適切に設定した場合,取引信号が乱れ,収益性に影響を与える可能性があります.

リスクを軽減するために,パラメータを適切に調整して,高速線と遅速線の間の差を適度にする.Histogramは,調整が必要かどうかを判断するのに役立つ.また,単一の損失を過大にしないように,ストップ・ロスの戦略を設計することもできる.

最適化の方向

この戦略は,以下のような点で最適化できます.

  1. 適応パラメータ設定技術を利用して,EVWMAのパラメータは市場環境に応じて自動的に調整され,取引信号の明晰さを保証します.

  2. 単一損失を効率的に制御するための損失防止メカニズムを追加します.

  3. 他の指標と組み合わせた誤報信号をフィルタリングする.例えば,合成交量と組み合わせた,大幅な価格変動時にのみ信号が生成する.

  4. エントリーポイントの選択を最適化する.現在の戦略は,MACDゼロ軸交差時にポジションを開くことである.深さ引越しに変更する方が適しているかどうかをテストすることができる.

要約する

この戦略は,EVWMA指標の優位性を活用して,シンプルで実用的なMACD戦略を構築している. それは,より安定性があり,より幅広い適応性がある. 同時に,MACD自体の遅れの問題もある. 私たちは,自適応パラメータ最適化,止損設計,信号フィルタリングなどの面で改善して,戦略をより堅牢にすることができる.

ストラテジーソースコード
/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("QuantNomad - EVWMA MACD Strategy", shorttitle = "EVWMA MACD", overlay = false)

// Inputs
fast_sum_length = input(10, title = "Fast Sum Length",  type = input.integer)
slow_sum_length = input(20, title = "Slow Sum Length",  type = input.integer)
signal_length   = input(9,  title = "Signal Smoothing", type = input.integer, minval = 1, maxval = 50)

// Calculate Volume Period
fast_vol_period = sum(volume, fast_sum_length)
slow_vol_period = sum(volume, slow_sum_length)

// Calculate EVWMA
fast_evwma = 0.0
fast_evwma := ((fast_vol_period - volume) * nz(fast_evwma[1], close) + volume * close) / (fast_vol_period)

// Calculate EVWMA
slow_evwma = 0.0
slow_evwma := ((slow_vol_period - volume) * nz(slow_evwma[1], close) + volume * close) / (slow_vol_period)

// Calculate MACD
macd   = fast_evwma - slow_evwma
signal = ema(macd, signal_length)
hist   = macd - signal

// Plot 
plot(hist,   title = "Histogram", style = plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? #26A69A : #B2DFDB) : (hist[1] < hist ? #FFCDD2 : #EF5350) ), transp=0 )
plot(macd,   title = "MACD",      color = #0094ff, transp=0)
plot(signal, title = "Signal",    color = #ff6a00, transp=0)

// Strategy
strategy.entry("Long",   true, when = crossover(fast_evwma, slow_evwma))
strategy.entry("Short", false, when = crossunder(fast_evwma, slow_evwma))