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

Estratégia quantitativa de fluxo de ordens institucionais de vários níveis com sistema dinâmico de escala de posições

Autora:ChaoZhang, Data: 2024-12-27 15:01:36
Tags:PCTVOLMAOB

img

Resumo

Esta estratégia é um sistema de negociação inteligente baseado no fluxo de ordens institucionais, que prevê pontos de reversão de preços potenciais identificando Blocos de Ordem no mercado. O sistema emprega uma abordagem de gestão de escala de posição dinâmica com alvos de três níveis para otimizar o gerenciamento de posições e maximizar os retornos.

Princípios de estratégia

A estratégia baseia-se em vários elementos-chave:

  1. Identificação de blocos de ordens - Usando uma janela de retrospectiva de 20 períodos para identificar blocos de ordens de compra e venda através da análise de padrões de velas.
  2. Controlo do tempo de negociação - A negociação é restrita à sessão principal das 09:30-16:00, evitando períodos de alta volatilidade durante a abertura e o fechamento do mercado.
  3. Logic de entrada - As posições longas são abertas quando o preço ultrapassa o bloco de ordem de compra durante as horas de negociação e as posições curtas quando o preço ultrapassa o bloco de ordem de venda.
  4. Escala de posição - Implementa um sistema de escala de três níveis de 50% a 30% a 20% correspondente a metas de 0,5%, 1,0% e 1,5%.

Vantagens da estratégia

  1. Detecção de ordens inteligentes - Captura com precisão os níveis de preços chave onde grandes posições de capital são construídas ou fechadas através de análise dinâmica de altos e baixos.
  2. Distribuição do risco - A escalação de posições em três níveis distribui eficazmente o risco, assegurando os lucros e permitindo ao mesmo tempo que as tendências se desenvolvam plenamente.
  3. Filtragem por tempo - As restrições de tempo de negociação evitam períodos de alta volatilidade, melhorando a estabilidade das negociações.
  4. Suporte Visual - A estratégia fornece uma visualização clara do bloco de ordens, ajudando os traders a entender a estrutura do mercado.

Riscos estratégicos

  1. Risco de Falsa Breakout - Podem ocorrer múltiplos sinais falsos em mercados variáveis, sugerindo a necessidade de filtragem de indicadores de volatilidade.
  2. Impacto do deslizamento - As saídas de posições de escala podem sofrer deslizamento em mercados de baixa liquidez, exigindo um ajustamento adequado do espaçamento das metas.
  3. Dependência da tendência - A estratégia tem um bom desempenho em mercados de tendência, mas pode gerar negociações frequentes em condições variáveis.

Optimização da Estratégia

  1. Adaptação à volatilidade - Recomenda-se a incorporação do indicador ATR para ajustar dinamicamente as percentagens-alvo com base na volatilidade do mercado.
  2. Análise do volume do fluxo de encomendas - considerar a combinação da análise do volume para aumentar a confiabilidade da confirmação do bloco de encomendas.
  3. Janela de tempo dinâmica - considerar o ajuste dinâmico do período de reflexão com base nas condições do mercado para melhorar a adaptabilidade da estratégia.
  4. Controlo de risco reforçado - Adicionar limites máximos de retirada e limites diários de perdas para melhorar a robustez da estratégia.

Resumo

Esta estratégia constrói um sistema de negociação completo por meio de análise institucional do fluxo de pedidos e gerenciamento dinâmico de posições. Através da identificação de blocos de pedidos e configurações de lucro de vários níveis, ela captura oportunidades de operações de grande capital enquanto implementa um controle de risco eficaz.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=6
strategy("Institutional Order Flow Strategy", overlay=true)

// Input settings
inputSession = input("0930-1600", "Trading Session") // Trading session
lookbackPeriod = input.int(20, "Order Block Lookback Period", minval=1) // Lookback for Order Blocks
target1Pct = input.float(0.5, "Target 1 (% move)", step=0.1, minval=0.1) // First profit target
target2Pct = input.float(1.0, "Target 2 (% move)", step=0.1, minval=0.1) // Second profit target
target3Pct = input.float(1.5, "Target 3 (% move)", step=0.1, minval=0.1) // Third profit target

// Order Block identification
highestHigh = ta.highest(high, lookbackPeriod)
lowestLow = ta.lowest(low, lookbackPeriod)
orderBlockBuy = ta.valuewhen(close[1] < open[1] and close > open, highestHigh, 0)
orderBlockSell = ta.valuewhen(close[1] > open[1] and close < open, lowestLow, 0)

// Entry logic
inSession = true
longCondition = close > orderBlockBuy and inSession
shortCondition = close < orderBlockSell and inSession

// Strategy entries
if longCondition
    strategy.entry("Long", strategy.long)

if shortCondition
    strategy.entry("Short", strategy.short)

// Calculate targets for scaling out
longTarget1 = strategy.position_avg_price + strategy.position_avg_price * target1Pct / 100
longTarget2 = strategy.position_avg_price + strategy.position_avg_price * target2Pct / 100
longTarget3 = strategy.position_avg_price + strategy.position_avg_price * target3Pct / 100

shortTarget1 = strategy.position_avg_price - strategy.position_avg_price * target1Pct / 100
shortTarget2 = strategy.position_avg_price - strategy.position_avg_price * target2Pct / 100
shortTarget3 = strategy.position_avg_price - strategy.position_avg_price * target3Pct / 100

// Exit logic with scaling out
if strategy.position_size > 0
    strategy.exit("Target 1", from_entry="Long", limit=longTarget1, qty_percent=50)
    strategy.exit("Target 2", from_entry="Long", limit=longTarget2, qty_percent=30)
    strategy.exit("Target 3", from_entry="Long", limit=longTarget3, qty_percent=20)

if strategy.position_size < 0
    strategy.exit("Target 1", from_entry="Short", limit=shortTarget1, qty_percent=50)
    strategy.exit("Target 2", from_entry="Short", limit=shortTarget2, qty_percent=30)
    strategy.exit("Target 3", from_entry="Short", limit=shortTarget3, qty_percent=20)

// Visualize Order Blocks
plot(orderBlockBuy, "Order Block Buy", color=color.green, linewidth=2, style=plot.style_line)
plot(orderBlockSell, "Order Block Sell", color=color.red, linewidth=2, style=plot.style_line)


Relacionados

Mais.