ボリューム比反転取引戦略 (VR Reversal Strategy) は,ボリューム指標に基づいた短期的な反転取引戦略である.この戦略は,取引信号を生成するために,一定期間におけるボリュームと平均ボリュームの比率を計算することによって,主要プレイヤーの市場参加を判断する.この戦略は,主に短期的に強い平均反転資産に適している.
VR逆転戦略の主な指標は,現在の期間の取引量と一定の期間の平均取引量との比率であるボリューム比率 (簡略にVRと呼ばれます).
VR = 電流体積 / SMA (体積,N)
N が長さパラメータを表す場合,現在のサイクルの取引量は長さサイクルの取引量の単純な移動平均に割られます.
VR >
この戦略には,補助的な方向判断指標dirも導入されている.この指標は,現在のサイクルとNサイクル前の閉盤価格を比較する.1を超えると上昇方向であり,1未満であれば下落方向である.
VRが指定された値を超えると,dir=1の場合,購入信号が生成されます.dir=-1の場合,販売信号が生成されます.
VR逆転戦略の最大の利点は,急激な価格逆転の可能性を把握することである.主要なプレイヤーによる介入の信号があるとき,戦略は迅速に判断し,リバウンドまたはリトラセシションの機会を適時に把握することができる.
その他の利点は以下の通りです.
VR 逆転戦略にはいくつかの利点があるが,注意すべきリスクはまだある:
また,過剰な取引は避けられ,単一の損失を制御するためにストップロスを設定する必要があります.
VR 逆転戦略のさらなる最適化に余地があります.主な提案は以下の通りです.
VR逆転取引戦略は,シンプルで実行しやすい短期的定量戦略である.主要プレーヤーのシグナルをキャッチすることによって逆転機会を捕獲する.この戦略は,明らかに逆転する不安定な製品に特に適しているが,リスク制御も必要である.さらなる最適化は戦略をより堅牢にし,より多くの偽信号をフィルターすることができます.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Volume Ratio_30min", shorttitle="VR_30min")//,initial_capital=1000) // User Input ------------------------------------------------------------------ len = input(20, title="Length", minval=1) threshold = input(3,step=0.05, title="閾値") // Volume Caliculetion --------------------------------------------------------- vol = volume sma=sma(volume,len) vrs = vol / sma // Direction ------------------------------------------------------------------- dirtime=input(1,"direction picker # bars") dir=if close/close[dirtime] > 1 1 else -1 // Plot ------------------------------------------------------------------------ plot(vrs, title="VRS", color=color.green, transp=0) hline(1, title="baseline") plot(threshold, color=color.white) // ️⚠️⚠️Logic ----------------------------------------------------------------- long = vrs > threshold and dir == 1 short = vrs > threshold and dir ==-1 // Back Test Fnction ----------------------------------------------------------- start = timestamp(input(2019, "Start Year"), input(1, "Start Month"), input(1, "Start Day"), 0, 0) end = timestamp(input(9999, "End Year"), input(1, "End Month"), input(1, "End Day"), 0, 0) _testPeriod() => true // Order ----------------------------------------------------------------------- if _testPeriod() if long strategy.entry("Long", strategy.long) if short strategy.entry("Short", strategy.short)