Estratégia VWAP baseada na distância Z


Data de criação: 2023-11-10 12:02:19 última modificação: 2023-11-10 12:02:19
cópia: 0 Cliques: 803
1
focar em
1617
Seguidores

Estratégia VWAP baseada na distância Z

Visão geral

A estratégia baseia-se no indicador de distância z do VWAP do LazyBear para determinar se um preço está sobrecomprado ou sobrevendido por meio do cálculo da distância z do VWAP, bem como para realizar uma entrada de mercado. A estratégia inclui a mediana da EMA e a distância z do regresso ao eixo 0 para filtrar parte dos sinais de ruído.

Princípio da estratégia

  1. Calcular o valor do VWAP
  2. Distância em z do preço com o VWAP
  3. Configure uma linha de sobrecompra ((2.5) e uma linha de sobrevenda ((-0.5))
  4. Quando a linha rápida é maior que a linha lenta, a distância Z é menor que a linha de superalimento, e a distância Z é maior quando atravessa o eixo 0
  5. Quando Z está acima da linha de compra
  6. Adição de lógica de stop loss

Funções chave:

  • calc_zvwap: Calcula a distância Z entre o preço e o VWAP
  • Valor VWAP: vWp (hlc3)
  • Emagrecer é uma das melhores maneiras de se manter saudável.
  • “Ema é uma pessoa muito lenta. Ela é uma pessoa muito lenta.

Análise de vantagens

  1. A distância Z é mais intuitiva para o excesso de compra e venda.
  2. Combinação de filtragem EMA com falsa brecha para evitar armadilhas
  3. Permitir que os investidores aumentem a posição e lucrem com a tendência
  4. Uma lógica de stop loss para controlar o risco

Análise de Riscos

  1. Certifique-se de que os parâmetros são corretos, como a posição da linha de sobrecompra, o ciclo EMA, etc.
  2. Z está atrasado no indicador e pode ter perdido pontos críticos de compra e venda
  3. Permitir uma maior posição aumenta o risco de perdas
  4. A posição de parada precisa ser razoavelmente ajustada.

Solução:

  1. Configuração de parâmetros de otimização por feedback
  2. Combinação de sinais de filtragem de indicadores adicionais
  3. Estabelecer condições razoáveis para aumentar a posição
  4. Ajuste dinâmico da posição de parada

Direção de otimização

  1. Optimizar os parâmetros do ciclo EMA
  2. Testar diferentes critérios de julgamento de supercompra e supervenda
  3. Adicionar outros indicadores para filtrar sinais de ruído
  4. Teste de diferentes formas de parar os danos
  5. Optimizar a entrada, o aumento de posição e a lógica de parada

Resumir

A estratégia usa a relação entre a distância Z para determinar o preço e o VWAP, em combinação com o sinal de ruído de filtragem EMA, para capturar oportunidades de tendências. A estratégia permite o acompanhamento de tendências de alto risco, ao mesmo tempo em que configura o risco de controle de perda.

Código-fonte da estratégia
/*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