
これは,取引量加重平均価格 ((VWAP) とガーマン・クラスの変動率 ((GKV) に基づいた自律的な取引戦略である.この戦略は,変動率の動的にVWAPの標準差波段を調整することで,市場動向のスマートな追跡を実現する.価格が上線突破時にポジションを多く開き,下線突破時にポジションを平らにする.波動率が大きいほど破門越えが高くなり,波動率が小さいほど破門越えが低くなる.
戦略の核心は,VWAPとGKVの変動率を組み合わせることである.まず,価格の中心としてVWAPを計算し,その後,閉店価格の標準差を利用して波段を構築する.鍵となるのは,GKV公式を使用して波動率を計算することであり,それは,開くと閉じる4つの価格を考慮し,従来の波動率よりも正確である.波動率は波段幅を動的に調整する - 波動率が上昇すると,波段幅が広がり,突破を上げ,波段幅が低下すると,突破を低下させる.この自律的なメカニズムは,偽の突破を効果的に回避する.
この戦略は,VWAPとGKV変動率のイノベーションを組み合わせることで,市場の動向を追跡する.その自適性特性は,異なる市場環境で安定したパフォーマンスを維持できるようにする.いくつかの潜在的リスクがあるものの,合理的なリスク管理と継続的な最適化により,戦略は良好な応用見通しを持っています.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Adaptive VWAP Bands with Garman Klass Volatility", overlay=true)
// Inputs
length = input.int(25, title="Volatility Length")
vwapLength = input.int(14, title="VWAP Length")
vol_multiplier = input.float(1,title="Volatility Multiplier")
// Function to calculate Garman-Klass Volatility
var float sum_gkv = na
if na(sum_gkv)
sum_gkv := 0.0
sum_gkv := 0.0
for i = 0 to length - 1
sum_gkv := sum_gkv + 0.5 * math.pow(math.log(high[i]/low[i]), 2) - (2*math.log(2)-1) * math.pow(math.log(close[i]/open[i]), 2)
gcv = math.sqrt(sum_gkv / length)
// VWAP calculation
vwap = ta.vwma(close, vwapLength)
// Standard deviation for VWAP bands
vwapStdDev = ta.stdev(close, vwapLength)
// Adaptive multiplier based on GCV
multiplier = (gcv / ta.sma(gcv, length)) * vol_multiplier
// Upper and lower bands
upperBand = vwap + (vwapStdDev * multiplier)
lowerBand = vwap - (vwapStdDev * multiplier)
// Plotting VWAP and bands
plot(vwap, title="VWAP", color=color.blue, linewidth=2)
plot(upperBand, title="Upper Band", color=color.green, linewidth=1)
plot(lowerBand, title="Lower Band", color=color.red, linewidth=1)
var barColor = color.black
// Strategy: Enter long above upper band, go to cash below lower band
if (close > upperBand)
barColor := color.green
strategy.entry("Long", strategy.long)
else if (close < lowerBand)
barColor := color.fuchsia
strategy.close("Long")
barcolor(barColor)