EVWMA をベースとしたMACD取引戦略

作者: リン・ハーンチャオチャン開催日:2024年1月22日 10:50:25
タグ:

img

概要

この戦略はElastic Volume Weighted Moving Average (EVWMA) をベースとしたMACD取引戦略である.EVWMAの利点を利用し,明確な取引信号と強力な実用性のある戦略を設計する.

原則

EVWMAインジケーターは,移動平均値の計算にボリューム情報を組み込み,移動平均値が価格変化をより正確に反映することを可能にします.この戦略における高速線とスローラインの計算はどちらもEVWMAに基づいています.高速線のパラメータ設定は短期価格変動を捉えるのにより敏感です.スローラインのパラメータ設定はノイズをフィルタリングするためにより頑丈です.二つのEVWMAによって形成されたMACDはクロスオーバーで長短信号をトリガーし,ヒストグラムは視覚的に強化された取引プロンプトを提供します.

利点分析

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

リスク分析

この戦略の主なリスクは,MACD自体も一定の遅れがあり,価格逆転を迅速に捉えることができないことである.さらに,EVWMAのパラメータ設定は戦略パフォーマンスにも影響する.高速線と遅線パラメータが正しく設定されていない場合,取引信号は混乱し,収益性に影響する.

リスクを軽減するために,パラメータは,速い線と遅い線の間に適度な差があるように適切に調整する必要があります.ヒストグラムはパラメータ調整が必要かどうかを判断するのに役立ちます.また,ストップ損失戦略も,過剰に大きな単一の損失を避けるために設計することができます.

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

この戦略を最適化するための主な側面は以下の通りである.

  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))

もっと