VWMA e ATR Tendência Seguindo a Estratégia

Autora:ChaoZhang, Data: 2023-11-07 16:39:47
Tags:

img

Resumo

Esta estratégia utiliza o VWMA para determinar a direção da tendência e define o stop loss com o ATR para seguir a tendência.

Estratégia lógica

  1. Use o VWMA para determinar a direção da tendência. Vá longo quando o preço estiver acima do VWMA, vá curto quando o preço estiver abaixo do VWMA.

  2. Adicione o filtro do oscilador do RSI para evitar sinais falsos de ruptura.

  3. Use ATR para calcular a linha de stop loss. O comprimento do ATR é definido como o mesmo que o VWMA, o multiplicador é 3.5.

  4. O multiplicador ATR controla a apertura da linha de stop loss.

  5. O montante da posição é calculado com base no capital próprio da conta e na percentagem de stop loss.

  6. Sair da posição longa quando o preço ultrapassar a linha de stop loss.

Vantagens

  1. Usar o VWMA para determinar tendências capta oportunidades de tendências de forma persistente.

  2. O filtro RSI evita alguns falsos sinais de fuga.

  3. O ATR trailing stop segue a tendência e evita ser parado por reversões.

  4. O dimensionamento das posições com base no património da conta e no stop loss favorece a gestão do risco.

Riscos

  1. Perda potencial em pontos de virada da tendência, deve reduzir o tamanho da posição para limitar perdas.

  2. A configuração inadequada dos parâmetros ATR leva a uma linha de perda de travagem demasiado apertada ou solta.

  3. A reversão rápida da tendência pode causar um atraso na atualização do stop loss, aumentando as perdas.

  4. Em ambientes de baixa volatilidade, reduzir o tamanho das posições e aumentar a frequência de atualização do stop loss.

Reforço

  1. Teste diferentes combinações de parâmetros VWMA para encontrar parâmetros de sinal ideais.

  2. Teste outras configurações do RSI, como linhas sobrecompradas/sobrevendidas.

  3. Teste o multiplicador ATR para encontrar o equilíbrio ideal entre a capacidade de redução e a capacidade de rastreamento.

  4. Adicione outros filtros como MACD, KD para melhorar a qualidade do sinal.

  5. Otimizar o dimensionamento das posições e a percentagem de stop loss com base na volatilidade do mercado.

Resumo

A estratégia possui um viés geral de tendência e capta bem as tendências óbvias de preços. Tem vantagens na determinação de tendências, filtragem de sinais, trail stop loss etc. Também tem riscos na inversão de tendência. Parâmetros de ajuste fino e dimensionamento de posição podem levar a um melhor desempenho.


/*backtest
start: 2023-10-07 00:00:00
end: 2023-10-13 00:00:00
period: 1h
basePeriod: 15m
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
//strategy("", overlay=true)
strategy(title="VWMA_withATRstops_strategy V2", overlay=true, pyramiding=1,     default_qty_type=strategy.percent_of_equity,  default_qty_value=20, initial_capital=10000, currency=currency.USD)  //default_qty_value=10, default_qty_type=strategy.fixed,

float xATRTrailingStop=na
int pos=na

vwmalength = input(33, title="VWMA Length", minval=1, maxval=365)
//vwmalength2 = input(9, title="VWAM Short Term Length", minval=1, maxval=365)
nATRPeriod = input(33, title="ATR length", minval=1, maxval=365)
nATRMultip = input(3.5, title="ATR Multiplier")

rsiofVwmaLength=input(14, title="RSI of VWMA Length")

riskCapital = input(title="Risk % of capital", defval=10, minval=1)
stopLoss=input(5,title="Stop Loss",minval=1)

vwmaVal=vwma(close, vwmalength)
//vwmaVal2=vwma(close, vwmalength2)
//maVal=sma(close, vwmalength)

plot(vwmaVal, color=color.orange, linewidth=2,  title="VWMA")
//plot(vwmaVal2, color=color.blue, title="VWMA Short Term")
//plot(maVal, color=color.blue, title="MA")

//rsi of vwma Longterm
rsiofVwmaVal=rsi(vwmaVal,rsiofVwmaLength)

xATR = atr(nATRPeriod)
nLoss = nATRMultip * xATR

xATRTrailingStop:= iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss), iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss), iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))

pos:=	iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1, 	    iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 

color1 = pos == -1 ? color.red: pos == 1 ? color.green : color.blue 

//plot(xATRTrailingStop, color=color1, title="ATR Trailing Stop")

//Entry--
//Echeck how many units can be purchased based on risk manage ment and stop loss
qty1 = (strategy.equity  * riskCapital / 100 ) /  (close*stopLoss/100)  

//check if cash is sufficient  to buy qty1  , if capital not available use the available capital only
qty1:= (qty1 * close >= strategy.equity ) ? (strategy.equity / close) : qty1


//Long Entry
//strategy.entry(id="VWMA LE", long=true, qty=qty1, when= close >vwmaVal and open>vwmaVal and close>open and close > xATRTrailingStop and xATRTrailingStop>  vwmaVal)

strategy.entry(id="VWMA LE", long=true, qty=qty1, when= rsiofVwmaVal>=30 and  close>open and close>vwmaVal and pos == 1 )    ///pos == 1 means ATRStop line is green    
//vwmaVal2>vwmaVal and

plot(strategy.position_size>=1  ? xATRTrailingStop : na, color=color1, style=plot.style_linebr, title="ATR Trailing Stop")
bgcolor(strategy.position_size>=1 ? color.blue : na )

//Exit
strategy.close(id="VWMA LE",  when= strategy.position_size>=1 and crossunder(close, xATRTrailingStop)  )
//strategy.close(id="VWMA LE",  when= strategy.position_size>=1 and close<vwmaVal and open<vwmaVal and close<open )

Mais.