Stratégie VWAP basée sur la distance Z


Date de création: 2023-11-10 12:02:19 Dernière modification: 2023-11-10 12:02:19
Copier: 0 Nombre de clics: 803
1
Suivre
1617
Abonnés

Stratégie VWAP basée sur la distance Z

Aperçu

La stratégie est basée sur l’indicateur de distance Z de VWAP de LazyBear, qui permet de déterminer si un prix est sur-acheté ou sur-vendu en calculant la distance Z de VWAP et en effectuant une entrée en bourse. L’ajout de la stratégie à la moyenne EMA et au jugement de la distance Z de retour sur l’axe 0 permet de filtrer une partie du signal de bruit.

Principe de stratégie

  1. Calculer le VWAP
  2. Calculer la distance Z entre le prix et le VWAP
  3. Il y a une ligne de surachat (−2,5) et une ligne de survente (−0,5).
  4. Z est inférieur à la ligne supérieure et Z est supérieur à l’axe zéro
  5. Placement à z quand Z est au-dessus de la ligne de survente
  6. Ajout de la logique de stop-loss

Fonctions clés:

  • calc_zvwap: calculer la distance Z entre le prix et le VWAP
  • VWAP: VWp{\displaystyle VWAP{\mathrm {v}}{\mathrm {v}}{\mathrm {v}}{\mathrm {v}}}
  • Le groupe de téléphonie mobile de l’EMA (Ema) est composé de quatre membres.
  • Les liens sont en anglais.

Analyse des avantages

  1. L’utilisation de la distance Z pour juger plus intuitivement les surachats et les surventeurs
  2. Combiné à une fausse percée par filtrage EMA, pour éviter d’être piégé
  3. Les investisseurs sont encouragés à investir dans le marché pour profiter de la tendance.
  4. Il y a une logique de stop-loss pour contrôler les risques.

Analyse des risques

  1. Assurez-vous que les paramètres sont correctement définis, tels que la position de la ligne de surachat, le cycle EMA, etc.
  2. Z est en retard sur l’indicateur et pourrait manquer un point de vente ou de vente clé
  3. Le risque de pertes est accru en autorisant des hausses
  4. La position d’arrêt doit être réglée de manière raisonnable

La solution est simple:

  1. Optimisation des paramètres par rétro-mesure
  2. Combinaison de signaux de filtrage avec des indicateurs supplémentaires
  3. Les conditions de mise en place raisonnables
  4. Adaptation dynamique de la position d’arrêt

Direction d’optimisation

  1. Optimiser les paramètres de cycle EMA
  2. Test des critères de survente
  3. Ajouter d’autres indicateurs pour filtrer le signal et le bruit
  4. Tester différentes façons de réduire les pertes
  5. Optimisation de la logique d’entrée, de prise de position et d’arrêt

Résumer

La stratégie utilise la relation entre la distance Z pour déterminer le prix et le VWAP, en combinaison avec des signaux de bruit de filtrage EMA, pour capturer les opportunités de tendance. La stratégie permet de suivre la tendance du stockage, tout en réglant les risques de contrôle de la perte.

Code source de la stratégie
/*backtest
start: 2022-11-03 00:00:00
end: 2023-11-09 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mohanee

//@version=4
//This is based on Z distance from VWAP by Lazybear
strategy(title="ZVWAP[LB] strategy", overlay=false,pyramiding=2, default_qty_type=strategy.fixed, default_qty_value=3,    initial_capital=10000, currency=currency.USD)
length=input(13,"length")

calc_zvwap(pds, source1) =>
	mean = sum(volume*source1,pds)/sum(volume,pds)
	vwapsd = sqrt(sma(pow(source1-mean, 2), pds) )
	(close-mean)/vwapsd


upperTop=2.5  //input(2.5)
upperBottom=2.0  //input(2.0)
lowerTop=-0.5  //input(-0.5)
lowerBottom=-2.0 //input(-2.0)

buyLine=input(-0.5, title="OverSold Line",minval=-2, maxval=3)
sellLine=input(2.0, title="OverBought Line",minval=-2, maxval=3)

fastEma=input(13, title="Fast EMA",minval=1, maxval=50)
slowEma=input(55, title="Slow EMA",minval=10, maxval=200)

stopLoss =input(5, title="Stop Loss",minval=1) 

hline(0, title="Middle Line", linestyle=hline.style_dotted, color=color.green)

ul1=plot(upperTop, "OB High")
ul2=plot(upperBottom, "OB Low")
fill(ul1,ul2, color=color.red)
ll1=plot(lowerTop, "OS High")
ll2=plot(lowerBottom, "OS Low")
fill(ll1,ll2, color=color.green)
zvwapVal=calc_zvwap(length,close)
plot(zvwapVal,title="ZVWAP",color=color.purple, linewidth=2)


longEmaVal=ema(close,slowEma)
shortEmaVal=ema(close,fastEma)  

vwapVal=vwap(hlc3)


zvwapDipped=false

for i = 1 to 10
    zvwapDipped := zvwapDipped or zvwapVal[i]<=buyLine

longCondition=  shortEmaVal > longEmaVal  and zvwapDipped and  crossover(zvwapVal,0)

barcolor(longCondition ? color.yellow: na)

strategy.entry(id="ZVWAPLE", long=true,  when= longCondition  and strategy.position_size<1) 


//Add
strategy.entry(id="ZVWAPLE", comment="Add", long=true,  when= strategy.position_size>1 and close<strategy.position_avg_price and crossover(zvwapVal,0)) 


//calculate stop Loss
stopLossVal =  strategy.position_avg_price -  (strategy.position_avg_price*stopLoss*0.01)

strategy.close(id="ZVWAPLE",comment="SL Exit",    when=close<stopLossVal)   //close all on stop loss

strategy.close(id="ZVWAPLE",comment="TPExitAll",    qty=strategy.position_size ,   when= crossunder(zvwapVal,sellLine))   //close all      zvwapVal>sellLine