A estratégia dinâmica de stop loss e take profit baseada em sinais VWAP e cross-timeframe

Autora:ChaoZhang, Data: 2024-03-08 17:37:21
Tags:

img

Resumo

Esta estratégia usa o VWAP (Volume Weighted Average Price) do prazo diário como um sinal para entrar e sair das negociações. Quando o preço de fechamento cruza acima do VWAP, ele desencadeia uma entrada longa com o stop loss definido no mínimo das velas anteriores se estiver abaixo do VWAP, e o preço alvo definido 3 pontos acima do preço de entrada. Por outro lado, quando o preço de fechamento cruza abaixo do VWAP, ele desencadeia uma entrada curta com o stop loss definido no máximo das velas anteriores se estiver acima do VWAP, e o preço alvo definido 3 pontos abaixo do preço de entrada. Esta estratégia não inclui uma condição de saída, então as negociações permanecem abertas até que o sinal oposto ocorra.

Princípio da estratégia

  1. Obter os dados VWAP a partir do período de tempo diário, que serve de base para a determinação da tendência e sinais de negociação.
  2. Determinar se o preço de fechamento atual cruza acima/abaixo do VWAP, atuando como gatilho para entradas longas e curtas, respectivamente.
  3. Para entradas longas, se a baixa da vela anterior estiver abaixo do VWAP, ela é usada como o stop loss; caso contrário, o próprio VWAP é usado.
  4. Depois de entrar numa posição, defina um nível fixo de 3 pontos de lucro.
  5. A estratégia continua a ser executada até que um sinal de reverso desencadeie a posição para fechar e abrir uma nova.

Ao utilizar dados VWAP de intervalo de tempo para determinar tendências e alavancar perdas de parada dinâmicas e lucros fixos, a estratégia pode capturar efetivamente os mercados em tendência, controlar os riscos de retirada e bloquear os lucros em tempo hábil.

Análise das vantagens

  1. Simplicidade e eficácia: a lógica da estratégia é clara, utilizando apenas o indicador VWAP para determinação de tendências e desencadeamento de sinais, tornando-a simples de implementar e otimizar.
  2. Esta estratégia permite que os investidores se adaptem melhor às flutuações do mercado e reduzam o risco.
  3. Obtenção de lucro em ponto fixo: fixar o preço-alvo com um número fixo de pontos ajuda a obter lucros prontamente e evitar a erosão dos lucros.
  4. Stop loss e take profit oportunos: a estratégia fecha imediatamente a posição quando um sinal de reverso é acionado, evitando perdas adicionais nos lucros existentes.

Análise de riscos

  1. Optimização de parâmetros: a estratégia utiliza um valor fixo de 3 pontos para obter lucro, o que pode exigir otimização com base em diferentes instrumentos e características do mercado para selecionar os parâmetros ideais para a negociação real.
  2. Mercados agitados: em condições de mercado agitadas, entradas e saídas frequentes podem levar a custos comerciais mais altos, afetando a lucratividade.
  3. Sustentabilidade da tendência: a estratégia depende dos mercados em tendência.

Orientações de otimização

  1. Filtragem de tendências: Incorporar outros indicadores de tendência, como médias móveis, MACD, etc., para confirmar tendências e melhorar a confiabilidade do sinal.
  2. A taxa de rendibilidade é a taxa de rendibilidade da empresa, em função da taxa de rendibilidade da empresa.
  3. Dimensão da posição: ajustar dinamicamente o tamanho da posição para cada negociação com base no tamanho da conta, na tolerância ao risco e em outros fatores.
  4. Seleção de sessões de negociação: escolher as sessões de negociação ideais com base nas características e liquidez do instrumento para melhorar a eficiência da estratégia.

Resumo

Esta estratégia utiliza dados VWAP de intervalo de tempo para determinação de tendências e desencadeamento de sinais, empregando stop loss dinâmicos e lucros fixos para controlar riscos e bloquear lucros. É uma estratégia de negociação quantitativa simples e eficaz. Através de otimizações na filtragem de tendências, take profit dinâmico, dimensionamento de posições e seleção de sessões de negociação, a robustez e o potencial de lucro da estratégia podem ser melhorados. No entanto, ao aplicar a estratégia na prática, deve-se prestar atenção às características do mercado, custos de negociação e otimização de parâmetros para alcançar uma melhor estratégia de desempenho.


/*backtest
start: 2024-03-06 00:00:00
end: 2024-03-07 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Pine Script Tutorial Example Strategy 1', overlay=true, initial_capital=1000, default_qty_value=100, default_qty_type=strategy.percent_of_equity)
// fastEMA = ta.ema(close, 24)
// slowEMA = ta.ema(close, 200)
// Higher Time Frame
float sl = na
float tgt = na
posSize = 1
vwap_1d = request.security(syminfo.tickerid, "1D", ta.vwap(close))
// plot(vwap_1d)

// To avoid differences on historical and realtime bars, you can use this technique, which only returns a value from the higher timeframe on the bar after it completes:
// indexHighTF = barstate.isrealtime ? 1 : 0
// indexCurrTF = barstate.isrealtime ? 0 : 1
// nonRepaintingVWAP = request.security(syminfo.tickerid, "1D", close[indexHighTF])[indexCurrTF]
// plot(nonRepaintingVWAP, "Non-repainting VWAP")

enterLong = ta.crossover(close, vwap_1d)
exitLong  = ta.crossunder(close, vwap_1d)

enterShort = ta.crossunder(close, vwap_1d)
exitShort  = ta.crossover(close, vwap_1d)

if enterLong
    sl := low[1]>vwap_1d ?low[1]:vwap_1d
    tgt:=close+3
    strategy.entry("EL", strategy.long, qty=posSize)
    strategy.exit('exitEL', 'EL', stop=sl, limit=tgt)
if enterShort
    sl := high[1]<vwap_1d ?high[1]:vwap_1d
    tgt := close-3
    strategy.entry("ES", strategy.short, qty=posSize)
    strategy.exit('exitES', 'ES', stop=sl, limit=tgt)

// if exitLong
//     strategy.close("EL")
// if exitShort
//     strategy.close("ES")





// goLongCondition1 = ta.crossover(close, vwap_1d)
// timePeriod = time >= timestamp(syminfo.timezone, 2021, 01, 01, 0, 0)
// notInTrade = strategy.position_size <= 0
// if goLongCondition1 and timePeriod and notInTrade
//     stopLoss = low[1]
//     takeProfit = close+3
//     strategy.entry('long', strategy.long)
//     strategy.exit('exit', 'long', stop=stopLoss, limit=takeProfit)
plot(close, color=color.new(#00c510, 0))
plot(vwap_1d, color=color.new(#f05619, 0))
plot(sl, color=color.new(#fbff00, 0))
plot(tgt, color=color.new(#00e1ff, 0))

Mais.