Esta estratégia é projetada como uma estratégia simples de tendência baseada no indicador EVWMA. Ele usa uma linha rápida e uma linha lenta para construir o indicador EVWMA. Uma posição longa será aberta quando a linha rápida cruzar a linha lenta, e uma posição curta será aberta quando a linha rápida cruzar abaixo da linha lenta, para seguir a tendência.
O indicador central desta estratégia é o EVWMA, ou seja, a média móvel ponderada por volume elástica, que incorpora informações sobre preços e volumes para refletir dinamicamente a tendência do mercado através do cálculo do seu próprio período.
Especificamente, o período da linha rápida é calculado como a soma do volume de 10 bares recentes e 20 bares para a linha lenta. O EVWMA de cada barra é calculado como
Quando a linha rápida atravessa a linha lenta, indica que o poder de compra está se fortalecendo para ir longo. Quando a linha rápida atravessa abaixo da linha lenta, indica que o poder de venda está se fortalecendo para ir curto. Com tal combinação de linhas rápidas e lentas, a estratégia pode capturar a tendência do mercado dinamicamente para seguir a tendência.
A maior vantagem desta estratégia reside no design de período dinâmico do indicador EVWMA para responder mais rapidamente às mudanças de preço e volume, capturando assim a tendência do mercado em tempo real, o que é muito adequado para estratégias de tendência.
O principal risco desta estratégia é a configuração inadequada dos parâmetros do indicador EVWMA. Se os períodos das linhas rápidas e lentas não forem definidos corretamente, pode gerar sinais falsos excessivos. Além disso, as próprias estratégias de tendência têm algumas desvantagens quando a tendência do mercado se inverte acentuadamente.
Para resolver esses problemas, podemos otimizar os parâmetros e ajustar os períodos de cálculo de linhas rápidas e lentas para encontrar a melhor combinação. Além disso, um stop loss pode ser definido para controlar o risco de perda.
Há espaço para uma otimização adicional desta estratégia. Por exemplo, outros indicadores como o rompimento do volume de negociação, Bandas de Bollinger etc. podem ser incorporados para confirmar os sinais, aumentando assim a estabilidade da estratégia. Além disso, os valores ideais dos parâmetros podem diferir entre diferentes produtos e períodos de tempo. Um mecanismo de otimização de parâmetros adaptativo pode ser estabelecido para ajustar parâmetros com base em dados em tempo real.
No que diz respeito aos aspectos comerciais, o stop loss dinâmico, o trailing stop loss e outros meios também podem ser concebidos para controlar os riscos.
Esta estratégia aproveita o design do período dinâmico do indicador EVWMA e incorpora informações de volume para construir uma estratégia de tendência eficaz. Pode responder rapidamente às mudanças de preços e capturar tendências de mercado. Com otimização de parâmetros, medidas de controle de risco, etc., a estabilidade da estratégia pode ser melhorada. A lógica por trás desta estratégia é inovadora e vale a pena mais exploração e aplicação.
/*backtest start: 2022-12-05 00:00:00 end: 2023-12-11 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("QuantNomad - EVWMA Cross Strategy", shorttitle="EVWMA Cross", overlay=true) // Inputs fast_sum_length = input(10, title = "Fast Sum Length", type = input.integer) slow_sum_length = input(20, title = "Slow Sum Length", type = input.integer) // Calculate Volume Period fast_vol_period = sum(volume, fast_sum_length) slow_vol_period = sum(volume, slow_sum_length) // Calculate EVWMA fast_evwma = 0.0 fast_evwma := ((fast_vol_period - volume) * nz(fast_evwma[1], close) + volume * close) / (fast_vol_period) // Calculate EVWMA slow_evwma = 0.0 slow_evwma := ((slow_vol_period - volume) * nz(slow_evwma[1], close) + volume * close) / (slow_vol_period) // Plot plot(fast_evwma, title = "EVWMA Fast", linewidth = 2, color = color.red) plot(slow_evwma, title = "EVWMA Slow", linewidth = 2, color = color.green) // Strategy strategy.entry("Long", true, when = crossover(fast_evwma, slow_evwma)) strategy.entry("Short", false, when = crossunder(fast_evwma, slow_evwma))