この戦略は,実際の波動範囲の移動平均を計算して,市場の波動率を反映し,波動率と移動平均の関係によってトレンドの方向を判断する.波動率が上を移動平均を通るときは空を見,下を通るときは多を見,そしてストップロスを設定する.
ATR関数を使用して,指定された周期内の実際の波動範囲を計算します. そして,ATRの単純な移動平均値を,波動率の移動平均として計算します.ATR上を移動平均を横切ると,市場の波動率が増加したと考え,空調戦略を取ります.ATR下を移動平均を横切ると,市場の波動率が減少したと考え,多見戦略を取ります.
ポジションを保有する際には,固定比例の追跡ストップポジションを設定し,価格の変化に応じてストップポジションを動的に調整し,ストップがカバーされないようにしながら利益を保護する.
この戦略は,波動率指数によって市場の動きを判断し,ノイズに惑わされないようにする.波動率が上がるときは空を見,下がるときは空を見,ヘッジ操作を実現する.ストップを追跡することで,リアルタイムの価格変化に応じてストップ・ポジションを調整し,利益を保護しながら不必要なストップ・損失を減らすことができる.
この戦略は,波動率の指標のみをベースに,一定の遅れがある。そして,ストップ・ロスは,価格が不利な方向に変化するのみを考慮し,利益の反転を防ぎることはできません。価格が激しく波動するときは,ストップ・ロスのラインが突破され,大きな損失を招く可能性があります。
ATRと平均線の周期パラメータを適切に最適化することも,他の指標を組み合わせて総合判断することもできます. ストップ・モードはダイナミック・ストップに変更され,市場の変動程度に応じてストップ・損失幅を調整することもできます.
異なるATRと均線周期パラメータの組み合わせをテストして,最適なパラメータを見つけます.
他の指標の判断を増やし,戦略の組み合わせを形成し,戦略の正確性を向上させる.
ダイナミックなストップ戦略を設定し,市場の変動に応じてストップ幅を調整する.
資金管理戦略を最適化するために,異なる品種で異なるポジションサイズを設定できます.
市場変動の転換点を判断する機械学習の応用
高レベル平均線指標と組み合わせて,より大きなレベルのトレンド方向を識別します.
この戦略は,波動率指標を用いて市場の動きを判断するより簡単で直接的ですが,単一の指標だけで制限されやすい.複数の指標判断を適切に導入し,パラメータを最適化することで,戦略の安定性を向上させることができます.全体的に,この戦略は,市場の波動率に基づいて取引する考え方を提供しています.
/*backtest
start: 2023-08-20 00:00:00
end: 2023-09-19 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 20/08/2018
// The Volatility function measures the market volatility by plotting a
// smoothed average of the True Range. It returns an average of the TrueRange
// over a specific number of bars, giving higher weight to the TrueRange of
// the most recent bar.
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Volatility Backtest", shorttitle="Volatility")
Length = input(10, minval=1)
LengthMA = input(26, minval=1)
reverse = input(false, title="Trade reverse")
xATR = atr(Length)
nRes = ((Length - 1) * nz(nRes[1], 0) + xATR) / Length
xMARes = sma(nRes, LengthMA)
pos = iff(nRes < xMARes, 1,
iff(nRes > xMARes, -1, nz(pos[1], 0)))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos))
if (possig == 1)
strategy.entry("Long", strategy.long)
if (possig == -1)
strategy.entry("Short", strategy.short)
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nRes, color=blue, title="Volatility")
plot(xMARes, color=red, title="MA")