
この戦略は,EVWMA指標をベースにシンプルなトレンド追跡戦略を設計した. この戦略は,高速線と遅い線を使ってEVWMA指標を構築し,高速線で遅い線を横切るときに多行し,高速線の下の遅い線を横切るときに空きをして,トレンド追跡を実現する.
この戦略の核心指標は,EVWMA,すなわち,弾力量加重移動平均である.これは,価格と取引量の情報と組み合わせて,独自の計算周期長さの方法で,市場動向をダイナミックに反映している.
具体的には,高速線の計算周期の長さは,最近10本のK線の取引量と,遅い線の計算周期の長さは,最近20本のK線の取引量との合計である.各K線のEVWMAは, ((前日のEVWMA × (周期長さ-現在のK線volum) +現在のK線終了価格 ×現在のK線volum) /周期長さのの公式に従って計算される.このようにして,価格と取引量情報が同時に結合される.
速線で緩慢線を横切ると,買い力が増し,多額の買い物をする.速線の下で緩慢線を横切ると,売り力が増し,空きをする.このような緩慢線の組み合わせによって,動的に市場トレンドを捉え,トレンド追跡戦略を実現することができる.
この戦略の最大の利点は,EVWMA指標のダイナミックなサイクルデザインを利用することで,価格と取引量の変化により迅速に反応し,市場トレンドをリアルタイムで捉えることが可能であり,これはトレンド追跡戦略に非常に適しています.また,従来の移動平均などの指標と比較して,価格と取引量情報を組み合わせて,偽の突破をフィルターできます.
この戦略の主なリスクは,EVWMA指標パラメータ設定の問題にある.もし快線と慢線周期が不適切に設定されれば,大量に偽信号を生成する可能性がある.さらに,トレンド追跡戦略自体は,市場傾向を逆転させる場合のトレンドの結果にしかならない.
これらの問題に対処するために,パラメータを最適化して,快線と慢線の計算周期を調整して,最適なパラメータの組み合わせを見つけることができます.同時に,損失のリスクを制御するために,ストップを設定することができます.市場が重要な転換が起こる可能性のある時間点,例えば,重要なデータのリリースなど,この期間を回避するために,戦略を一時停止することを考えることができます.
この戦略にはさらに最適化できる余地もある。例えば,取引量突破,ブリン帯などの他の指標を追加することを検討し,戦略の安定性を高めるため,確認シグナルを与える。さらに,異なる品種と異なる時間帯のパラメータの組み合わせの最適値は異なる可能性があるので,パラメータ自在な最適化機構を確立し,リアルタイムデータに基づいてパラメータを調整することができる。
取引面から見ると,ダイナミックストップ,ストップを追跡するなどの方法を設計することもできる.さらに,異なる品種と異なる時間帯のパラメータの組み合わせの最適値は異なる可能性がある.パラメータ自在適応最適化機構を確立して,リアルタイムデータに基づいてパラメータを調整することもできる.
この戦略は,EVWMA指標のダイナミックサイクルデザインと取引量情報の考慮を利用して,シンプルで効果的なトレンド追跡戦略を構築している.それは価格の変化に迅速に反応し,市場動向を捉えることができる.パラメータ最適化,リスク管理などの手段によって,戦略の安定性をさらに向上させることができる.この戦略のアイデアは新鮮で,さらなる探索と適用に値する.
/*backtest
start: 2022-12-05 00:00:00
end: 2023-12-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("QuantNomad - EVWMA Cross Strategy", shorttitle="EVWMA Cross", overlay=true)
// 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)
// 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)
// Plot
plot(fast_evwma, title = "EVWMA Fast", linewidth = 2, color = color.red)
plot(slow_evwma, title = "EVWMA Slow", linewidth = 2, color = color.green)
// Strategy
strategy.entry("Long", true, when = crossover(fast_evwma, slow_evwma))
strategy.entry("Short", false, when = crossunder(fast_evwma, slow_evwma))