O recurso está a ser carregado... Carregamento...

Estratégia de negociação quantitativa de seguimento de tendências e blocos de ordens em vários prazos

Autora:ChaoZhang, Data: 2024-07-29 13:57:12
Tags:EMASMAOB

img

Resumo

Esta é uma estratégia de negociação quantitativa complexa que combina múltiplos indicadores técnicos e conceitos de negociação. A estratégia baseia-se principalmente no Bloco de Ordem, detecção de mudança de tendência, cruzamento de média móvel e análise de vários prazos para gerar sinais de negociação. A ideia central é usar a ação de preços e indicadores técnicos em um período de tempo menor (5 minutos) para entrar e sair com precisão das negociações na direção da tendência em um período de tempo maior (1 hora).

Princípios de estratégia

  1. Bloco de ordens: a estratégia utiliza uma função personalizada para calcular o Bloco de ordens, que é um nível de preço significativo que normalmente representa áreas de ordens institucionais concentradas.

  2. Detecção de mudanças de tendência: utiliza cruzamento de uma média móvel simples (SMA) para identificar potenciais mudanças de tendência.

  3. Análise de quadros de tempo múltiplos: Calcula as médias móveis exponenciais (EMA) de 50 períodos e 200 períodos num período de tempo de 1 hora para determinar a tendência mais ampla do mercado.

  4. Condições de entrada:

    • Long: Quando um sinal de tendência de alta aparece no gráfico de 5 minutos, o preço rompe acima do Bloco de Ordem e a EMA de 50 está acima da EMA de 200 no gráfico de 1 hora.
    • Curto: Quando um sinal de tendência de baixa aparece no gráfico de 5 minutos, o preço rompe abaixo do Bloco de Ordem e a EMA de 50 está abaixo da EMA de 200 no gráfico de 1 hora.
  5. Estratégia de saída: utiliza níveis fixos de percentagem de take-profit e stop-loss para gerir o risco e bloquear os lucros.

Vantagens da estratégia

  1. Análise multidimensional: combina vários prazos e indicadores técnicos, proporcionando uma perspectiva de mercado mais abrangente.

  2. Seguimento da tendência: Ao negociar na direção da tendência maior, aumenta a probabilidade de negócios lucrativos.

  3. Entradas precisas: utiliza blocos de ordem e mudanças de tendência de curto prazo para otimizar o tempo de entrada.

  4. Gerenciamento de Riscos: Emprega percentagens pré-estabelecidas de take-profit e stop-loss, controlando efetivamente o risco para cada negociação.

  5. Adaptabilidade: Os parâmetros da estratégia podem ser ajustados para se adaptarem aos diferentes ambientes de mercado.

Riscos estratégicos

  1. O excesso de negociação: pode gerar sinais de negociação frequentes em mercados altamente voláteis, aumentando os custos de transação.

  2. Risco de deslizamento: em mercados menos líquidos, os preços de execução reais podem desviar-se significativamente dos preços ideais.

  3. Risco de inversão da tendência: a estratégia pode sofrer perdas consecutivas perto dos pontos de virada da tendência.

  4. Sensibilidade dos parâmetros: o desempenho da estratégia pode ser altamente sensível às configurações dos parâmetros, exigindo otimização contínua.

  5. Dependência do ambiente de mercado: a estratégia pode não ter um bom desempenho em mercados variados ou que oscilam rapidamente.

Orientações para a otimização da estratégia

  1. Ajuste dinâmico dos parâmetros: considerar o ajuste automático das percentagens de take-profit e stop-loss com base na volatilidade do mercado.

  2. Filtros adicionais: introduzir indicadores técnicos ou de sentimento de mercado adicionais para reduzir os falsos sinais.

  3. Filtragem do tempo: adicionar restrições de janela de tempo de negociação para evitar períodos de baixa liquidez.

  4. Gestão de posições: aplicar estratégias mais sofisticadas de gestão de posições, como a classificação das posições com base na volatilidade.

  5. Backtesting e otimização: Realizar um backtesting de dados históricos mais extenso para encontrar combinações ótimas de parâmetros.

  6. Reconhecimento do ambiente de mercado: Desenvolver algoritmos para identificar diferentes estados de mercado e ajustar a estratégia em conformidade.

Resumo

Esta é uma estratégia de negociação quantitativa abrangente e logicamente complexa que combina análise de vários prazos, teoria do bloco de ordem e técnicas de seguimento de tendências. Ao buscar pontos de entrada precisos na direção da tendência maior, a estratégia visa melhorar a taxa de sucesso dos negócios. No entanto, devido à sua complexidade, a estratégia também enfrenta desafios como superação e sensibilidade de parâmetros. As otimizações futuras devem se concentrar em melhorar a adaptabilidade e robustez da estratégia, incluindo ajuste dinâmico de parâmetros, filtros adicionais e métodos de gerenciamento de posição mais sofisticados.


/*backtest
start: 2024-06-28 00:00:00
end: 2024-07-28 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("S&P 500", overlay=true)
// Parámetros
length = input(14, "Longitud")
src = input(close, "Fuente")
profit_percent = input.float(0.08955, "Porcentaje de ganancia", step=0.00001, minval=0)
stop_loss_percent = input.float(0.04477, "Porcentaje de stop loss", step=0.00001, minval=0)
// Función para calcular el Order Block
order_block(src, len) =>
    highest = ta.highest(high, len)
    lowest = ta.lowest(low, len)
    mid = (highest + lowest) / 2
    ob = src > mid ? highest : lowest
    ob
// Cálculo del Order Block
ob = order_block(src, length)
// Función para detectar cambios de tendencia
trend_change(src, len) =>
    up = ta.crossover(src, ta.sma(src, len))
    down = ta.crossunder(src, ta.sma(src, len))
    [up, down]
// Detectar cambios de tendencia
[trend_up, trend_down] = trend_change(src, length)
// Calcular EMA 50 y EMA 200 en timeframe de 1 hora
ema50_1h = request.security(syminfo.tickerid, "60", ta.ema(close, 50))
ema200_1h = request.security(syminfo.tickerid, "60", ta.ema(close, 200))
// Condiciones de EMA
ema_buy_condition = ema50_1h > ema200_1h
ema_sell_condition = ema50_1h < ema200_1h
// Señales de compra y venta
buy_signal = trend_up and close > ob and ema_buy_condition
sell_signal = trend_down and close < ob and ema_sell_condition
// Ejecutar la estrategia
if (buy_signal)
    strategy.entry("Compra", strategy.long)
if (sell_signal)
    strategy.entry("Venta", strategy.short)
// Calcular precios de toma de ganancias y stop loss
if (strategy.position_size != 0)
    entry_price = strategy.position_avg_price
    is_long = strategy.position_size > 0
    take_profit = entry_price * (1 + (is_long ? 1 : -1) * profit_percent / 100)
    stop_loss = entry_price * (1 + (is_long ? -1 : 1) * stop_loss_percent / 100)
    strategy.exit(is_long ? "Long TP/SL" : "Short TP/SL", limit=take_profit, stop=stop_loss)
// Visualización
plot(ob, "Order Block", color.purple, 2)
plot(ta.sma(src, length), "SMA", color.blue)
plot(ema50_1h, "EMA 50 1h", color.yellow)
plot(ema200_1h, "EMA 200 1h", color.white)
bgcolor(buy_signal ? color.new(color.green, 90) : sell_signal ? color.new(color.red, 90) : na)

Relacionados

Mais.