Tendência de ímpeto seguindo a estratégia

Autora:ChaoZhang, Data: 2023-10-30 11:36:26
Tags:

img

Resumo

Esta estratégia usa o indicador VIDYA (Variable Index Dynamic Average) para identificar a direção da tendência nos mercados de criptomoedas e negociações com base na tendência.

Estratégia lógica

A estratégia calcula primeiro o indicador VIDYA. O indicador VIDYA é baseado no momento do preço e pode responder às mudanças de tendência mais rapidamente. Especificamente, ele combina o oscilador de momento de Chande (CMO) e a média móvel simples (SMA). O CMO mede a diferença entre o momento ascendente e descendente para medir a força da tendência. O SMA suaviza os dados de preço. O VIDYA ajusta dinamicamente o peso do SMA com base nos valores do CMO, dando mais peso ao CMO no início das mudanças de tendência e mais peso ao SMA uma vez que a tendência é estabelecida. Assim, o VIDYA pode responder rapidamente às mudanças de tendência, mantendo também um rastreamento suave da tendência.

Depois de calcular o VIDYA, a estratégia julga a direção da tendência com base na curva do VIDYA.

Análise das vantagens

  • O VIDYA responde rapidamente e pode captar mudanças de tendência mais cedo em comparação com indicadores tradicionais como o SMA.

  • Combinando a força e a direcção da tendência, pode distinguir eficazmente tendências fortes e fracas e evitar tendências falsas em mercados variados.

  • Confiar unicamente no VIDYA torna a estratégia simples, sem sinais conflitantes ou enganosos de múltiplos indicadores.

  • As configurações VIDYA mais longas permitem rastrear tendências de longo prazo e capturar a principal direção da tendência.

  • Bons resultados de backtest com retornos esperados positivos.

Análise de riscos

  • A VIDYA pode atrasar-se em resposta a eventos repentinos do mercado e perder oportunidades de negociação de curto prazo.

  • As configurações longas do VIDYA tornam-no menos sensível às alterações de tendência a curto prazo e podem conduzir a maiores retrações.

  • O seguimento da tendência pura tem um mau desempenho em mercados agitados.

  • Os dados limitados de backtest não podem verificar completamente a robustez. Os parâmetros precisam de otimização e teste iterativo na negociação ao vivo.

  • Alta volatilidade nos mercados de criptomoedas. O tamanho da posição e o stop loss devem ser cuidadosamente controlados para uma gestão rigorosa do risco.

Orientações de otimização

  • Teste adição de indicadores de volume ou volatilidade para melhorar a sensibilidade às alterações da tendência.

  • Tente combinar o VIDYA com outros indicadores de tendência para um efeito de conjunto.

  • Otimizar a estratégia de stop loss para sair mais cedo quando a tendência se inverter.

  • Otimizar o dimensionamento das posições de forma dinâmica com base nas condições do mercado.

  • Teste a robustez em diferentes criptomoedas e prazos.

Conclusão

Em geral, este é um indicador de tendência quantitativa após a estratégia. Ele usa o indicador VIDYA para determinar a direção da tendência, capturando as tendências de criptomoedas de forma simples e eficaz. Mas também tem algumas limitações que exigem melhorias adicionais em stop loss, dimensionamento de posição, etc. para tornar a estratégia mais robusta e praticamente viável.


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 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/
// @version=5
// Author = TradeAutomation


strategy(title="VIDYA Trend Strategy", shorttitle="VIDYA Trend Strategy", process_orders_on_close=true, overlay=true, pyramiding=25,  commission_type=strategy.commission.percent, commission_value=.075, slippage = 1, initial_capital = 1000000, default_qty_type=strategy.percent_of_equity, default_qty_value=4)


// Backtest Date Range Inputs // 
StartTime = input(defval=timestamp('01 Jan 2000 08:00'), group="Date Range", title='Start Time')
EndTime = input(defval=timestamp('01 Jan 2099 00:00'), group="Date Range", title='End Time')
InDateRange = true

// Strategy Inputs //
len = input.int(title="VIDYA Length", defval=50, step=5,group="Trend Settings")
src = input.source(title="VIDYA Price Source",defval=ohlc4, group="Trend Settings")

// VIDYA Calculations //
valpha=2/(len+1)
vud1=src>src[1] ? src-src[1] : 0
vdd1=src<src[1] ? src[1]-src : 0
vUD=math.sum(vud1,9)
vDD=math.sum(vdd1,9)
vCMO=nz((vUD-vDD)/(vUD+vDD))
var VIDYA = 0.0
VIDYA := na(VIDYA[1]) ? ta.sma(src, len) : nz(valpha*math.abs(vCMO)*src)+(1-valpha*math.abs(vCMO))*nz(VIDYA[1])
plot(VIDYA, title="VIDYA",color=(VIDYA > VIDYA[1]) ? color.green : (VIDYA<VIDYA[1]) ? color.red : (VIDYA==VIDYA[1]) ? color.gray : color.black, linewidth=2)

// Entry & Exit Signals //
if (InDateRange)
    strategy.entry("Long", strategy.long, when = VIDYA>VIDYA[1])
    strategy.close("Long", when = VIDYA<VIDYA[1])
if (not InDateRange)
    strategy.close_all()
    

Mais.