
Cette stratégie est une stratégie de suivi de la tendance basée sur l’indicateur modifié de l’oscillateur de la quantité de transaction. Elle utilise la moyenne de la quantité de transaction, identifie les signaux qui augmentent la quantité de transaction, afin de juger d’entrer ou de sortir de la position.
Ces risques peuvent être maîtrisés en ajustant les paramètres, en optimisant le calcul des indicateurs et en les confirmant avec d’autres indicateurs.
Cette stratégie est une stratégie de suivi de tendance relativement stable, grâce à un oscillateur de volume de transaction amélioré, qui aide à juger de la tendance des prix, à établir deux seuils pour l’ouverture et la fermeture de positions. L’espace d’optimisation est principalement lié à l’ajustement des paramètres, au filtrage des signaux et à la stratégie d’arrêt des pertes.
/*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('Volume Advanced', default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075, currency='USD')
startP = timestamp(input(2017, "Start Year"), input(12, "Start Month"), input(17, "Start Day"), 0, 0)
end = timestamp(input(9999, "End Year"), input(1, "End Month"), input(1, "End Day"), 0, 0)
_testPeriod() =>
iff(time >= startP and time <= end, true, false)
source = close
vol_length = input(34, title = "Volume - Length")
vol_smooth = input(200,title = "Volume - Smoothing")
volriselen = input(21, title = "Volume - Risinglength")
volfalllen = input(13, title = "Volume - Fallinglength")
threshold = input(1,"threshold")
threshold2 = input(1.2,step=0.1, title="Threshold 2")
direction = input(13,"amount of bars")
volsum = sum(volume, vol_length) / (sum(volume, vol_smooth) / (vol_smooth / vol_length))
LongEntry = (rising(volsum, volriselen) or crossover (volsum, threshold)) and close > close[direction]
ShortEntry = (rising(volsum, volriselen) or crossover (volsum, threshold)) and close < close[direction]
LongExit1 = falling (volsum,volfalllen)
ShortExit1 = falling (volsum,volfalllen)
LongExit2= (crossover(volsum, threshold2) and close < close[direction])
_state = 0
_prev = nz(_state[1])
_state := _prev
if _prev == 0
if LongEntry
_state := 1
_state
if ShortEntry
_state := 2
_state
if _prev == 1
if ShortEntry or LongExit1
_state := 0
_state
if _prev == 2
if LongEntry or ShortExit1
_state := 0
_state
_bLongEntry = _state == 1
_bLongClose = _state == 0
long_condition = _bLongEntry and close > close[direction]
strategy.entry('BUY', strategy.long, when=long_condition)
short_condition = _bLongClose or LongExit2
strategy.close('BUY', when=short_condition)
plot(volsum, color = color.green, title="Vol_Sum")
plot(threshold, color = color.fuchsia, transp=50, title="Threshold")
plot(threshold2, color=color.white, transp = 50, title="Threshold 2")