Esta estratégia é chamada de
Esta estratégia calcula o preço médio de transação atual através do indicador VWAP. O VWAP representa o preço médio e é a relação entre o volume de negócios e o volume de negócios. O indicador VWAP reflete o grau de desvio entre o preço atual e o preço médio de negociação histórico.
A estratégia usa a linha média móvel do indicador VWAP e suas linhas de canal deslocadas. As proporções das linhas de canal deslocadas são definidas através dos parâmetros
A configuração dos parâmetros desta estratégia reflete plenamente a ideia de negociação de canal. Os usuários podem ajustar a largura do canal e o tamanho das posições como uma porcentagem do total de ativos de acordo com suas próprias preferências, realizando assim diferentes graus de frequência de negociação.
Esta estratégia comercial tem as seguintes vantagens:
Uma vez que o indicador VWAP pode refletir bem o nível médio de preços, a negociação baseada em suas linhas de canal pode efetivamente bloquear pontos médios de valor e evitar ser tendencioso por flutuações de curto prazo. Ao mesmo tempo, a combinação de canais com parâmetros diferentes e a construção de posições em lotes podem controlar efetivamente os riscos e evitar concentrações de risco unilaterais que resultam em liquidações forçadas.
Esta estratégia tem também alguns riscos a considerar:
O indicador VWAP é insensível à volatilidade de negociação de alta frequência. Em caso de lacunas de preço extremas ou anomalias de curto prazo, ele ainda desencadeará sinais de negociação e perdas desnecessários. Além disso, se os parâmetros do canal forem definidos muito soltos, ele facilmente formará sinais de penetração de preço inválidos. Finalmente, se o intervalo de posições fechadas em operações de regressão for definido muito amplo, ele pode perder o melhor momento para a obtenção de lucros e causar perdas presas.
As contra-medidas consistem em avaliar de forma razoável as definições dos parâmetros e ajustar adequadamente os parâmetros dos canais; ao mesmo tempo, combinar outros indicadores para julgar as anomalias dos preços e evitar sinais de seguimento cego; e, finalmente, avaliar a otimização dos parâmetros dos canais de diferentes níveis e faixas de regressão para obter melhores efeitos de lucro.
Esta estratégia pode ser otimizada nas seguintes direcções:
Além disso, regras de julgamento de volume de negociação podem ser adicionadas para evitar lacunas de preço inválidas causando perdas de negociação. Finalmente, regras de stop loss também podem ser definidas para que, quando a perda de posições atinge uma certa porcentagem, o stop loss para posições de saída, controlando efetivamente os riscos.
Esta estratégia combina o indicador VWAP com os canais de preço para alcançar uma estratégia de negociação relativamente estável. As configurações dos parâmetros da estratégia são flexíveis para que os usuários ajustem de acordo com suas próprias preferências. Esta estratégia pode determinar efetivamente a direção dos pontos médios de valor. Através da combinação de parâmetros e da construção de lotes de posições, a lucratividade estável pode ser alcançada. Embora ainda haja espaço para melhoria na estratégia, no geral é uma estratégia de negociação quantitativa com alta praticidade.
/*backtest start: 2023-02-12 00:00:00 end: 2024-02-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title = "VWAP Bands Backtest", shorttitle = "VWAP Bands Backtest", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3) //Settings lotsizelong = input(100, defval = 100, minval = 0, maxval = 10000, title = "Lot long, %") lotsizeshort = input(100, defval = 100, minval = 0, maxval = 10000, title = "Lot short, %") short1 = input(true, title = "short 1") long1 = input(true, title = "long 1") shortlevel1 = input(1.0, title = "Short line 1") longlevel1 = input(-1.0, title = "Long line 1") needoffset = input(true, title = "Offset") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Variables size = strategy.position_size mult = 1 / syminfo.mintick truetime = true //VWAP ma = vwap(hlc3) //Levels longline1 = long1 ? round(ma * ((100 + longlevel1) / 100) * mult) / mult : close shortline1 = short1? round(ma * ((100 + shortlevel1) / 100) * mult) / mult : close //Lines colorlong1 = long1 ? color.lime : na colorshort1 = short1 ? color.red : na offset = needoffset ? 1 : 0 plot(shortline1, offset = offset, color = colorshort1, title = "Short line 1") plot(ma, offset = offset, color = color.blue, title = "MA line") plot(longline1, offset = offset, color = colorlong1, title = "Long line 1") //Trading lotlong = 0.0 lotshort = 0.0 lotlong := size == 0 ? (strategy.equity / close) * (lotsizelong / 100) : lotlong[1] lotshort := size == 0 ? (strategy.equity / close) * (lotsizeshort / 100) : lotshort[1] if ma > 0 if lotlong > 0 lotslong = 0.0 lotslong := strategy.position_size > 0 ? round(strategy.position_size / lotlong) : 0.0 strategy.entry("L1", strategy.long, lotlong, limit = longline1, when = (lotslong == 0 and long1 and truetime)) if lotshort > 0 lotsshort = 0.0 lotsshort := strategy.position_size < 0 ? round(strategy.position_size / lotshort) : 0.0 strategy.entry("S1", strategy.short, lotshort, limit = shortline1, when = (lotsshort == 0 and short1 and truetime)) if strategy.position_size > 0 strategy.exit("TPL", "L1", limit = ma) if strategy.position_size < 0 strategy.exit("TPS", "S1", limit = ma) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all() strategy.cancel("L1") strategy.cancel("S1") strategy.cancel("TPL") strategy.cancel("TPS")