9EMA Estratégia dinâmica de dimensionamento de posição com dois breakouts próximos de 5 minutos

Autora:ChaoZhang, Data: 2024-03-19 15:03:56
Tags:

img

Estratégia geral

Esta estratégia usa a média móvel exponencial de 9 períodos (9EMA) como base para a determinação da tendência. Dentro dos primeiros 10 minutos do dia de negociação, se houver duas velas consecutivas de 5 minutos com preços de fechamento muito próximos do máximo (maiores ou iguais a 99% do máximo) e acima do 9EMA, é considerado um sinal de ruptura forte. Neste ponto, o tamanho da posição é calculado com base no preço de fechamento atual e uma posição longa é aberta. A posição é mantida até a primeira vela de 5 minutos com um fechamento abaixo do 9EMA, quando a posição é fechada.

Princípios de estratégia

Esta estratégia baseia-se nos seguintes princípios:

  1. Durante a fase inicial de um dia de negociação, se o mercado apresentar uma forte tendência de ruptura, geralmente indica que a tendência ascendente deverá continuar.
  2. O 9EMA é um indicador relativamente sensível para a determinação da tendência, e os preços acima do 9EMA indicam frequentemente uma dominância de alta.
  3. Duas velas consecutivas com preços de fechamento muito próximos da alta indicam um forte ímpeto de alta e um elevado entusiasmo de compra.
  4. Após o surgimento de uma tendência forte, a utilização de um montante monetário fixo para determinar o tamanho da posição pode controlar o risco e utilizar plenamente a tendência.
  5. Quando o preço cai abaixo do 9EMA, muitas vezes indica uma inversão da tendência.

Esta estratégia visa capturar fortes movimentos de ruptura durante o período de abertura de um dia de negociação e participa do dimensionamento dinâmico de posições, procurando alcançar altos retornos com baixo risco.

Vantagens da estratégia

  1. A negociação é concentrada nos primeiros 10 minutos da abertura, capturando os primeiros movimentos do mercado com baixa frequência de negociação e forte operabilidade.
  2. Usar duas velas consecutivas para confirmar a tendência pode efetivamente filtrar falhas e melhorar a confiabilidade do sinal.
  3. O tamanho da posição é ajustado dinamicamente com base no nível de preço no ponto de ruptura, adaptando-se automaticamente às características de diferentes períodos de mercado com risco controlado.
  4. As condições de stop-loss são claras e rigorosamente executadas, controlando efetivamente a perda máxima de uma única negociação.
  5. A lógica da estratégia é simples e fácil de entender e executar, adequada para a maioria dos traders usar.

Riscos estratégicos

  1. Apesar de muitas vezes surgirem oportunidades de tendência durante o período de abertura, podem também ocorrer flutuações e reversões significativas por vezes, enfrentando um certo risco de falsas rupturas.
  2. A estratégia entra numa posição quando duas velas consecutivas cumprem as condições.
  3. Embora o método de dimensionamento de posições de montante monetário fixo seja simples, a volatilidade do retorno da estratégia também pode ser relativamente grande quando o mercado flutua drasticamente.
  4. Esta estratégia só pode capturar tendências ascendentes unilaterais e não é adequada para mercados variados ou tendências descendentes.

Para enfrentar os riscos acima referidos, os seguintes aspectos podem ser considerados para otimização e melhoria:

  1. Incorporar a relação entre o preço de abertura e o preço de encerramento do dia anterior como condição de filtragem para melhorar a precisão da determinação da tendência.
  2. Otimizar as condições de stop-loss, tais como a adição de trailing stops ou de conditioned stops, para reduzir ainda mais a exposição ao risco de uma única transação.
  3. Considere a possibilidade de utilizar uma abordagem piramidal para adicionar posições durante a fase de continuação da tendência, a fim de aumentar os retornos globais.
  4. Tente combinar esta estratégia com outras estratégias adequadas para mercados de variação ou tendência descendente para melhorar a adaptabilidade da estratégia.

Orientações de otimização

  1. Introduzir indicadores mais eficazes de determinação de tendências, como o MACD, as bandas de Bollinger, etc., para confirmar sinais de tendência baseados em múltiplos indicadores, melhorando a fiabilidade dos sinais de entrada e reduzindo o risco de falhas.
  2. Optimize a janela de tempo de entrada. Considere encurtar a janela de tempo de 10 minutos para 5 minutos ou estendê-la para 15 minutos. Através de comparações de backtesting, encontre o tempo de entrada ideal. Isso pode capturar tendências minimizando o impacto das flutuações iniciais.
  3. Em termos de dimensionamento da posição, considere a introdução de um fator de volatilidade. Por exemplo, ajuste dinamicamente a porcentagem de fundos para cada entrada com base no Intervalo Verdadeiro Médio (ATR). Diminua o tamanho da posição quando a volatilidade é alta e aumente o tamanho da posição quando a volatilidade é baixa, permitindo que a estratégia se adapte melhor aos diferentes ritmos do mercado.
  4. Otimizar as condições de stop-loss. Mantendo a lógica original de stop-loss da 9EMA, uma estratégia de trailing stop pode ser adicionada. Ou seja, depois que o preço se move em uma direção favorável por uma certa porcentagem, mova o nível de stop-loss para perto do preço de custo ou preço de entrada, reduzindo assim os drawdowns e bloqueando lucros parciais.
  5. Considere adicionar algumas condições de filtragem, como volume de negociação, volatilidade, etc. Quando um sinal de entrada aparece, determine se esses indicadores são simultaneamente favoráveis para confirmar ainda mais a validade da tendência.

Através das otimizações acima, a estratégia deve controlar melhor os riscos enquanto captura tendências, melhorando a estabilidade e sustentabilidade dos retornos da estratégia.

Resumo

Esta estratégia usa o 9EMA como o núcleo e capta fortes tendências de alta nos primeiros 10 minutos de um dia de negociação, tendo duas velas consecutivas de 5 minutos com preços de fechamento quebrando fortemente acima do 9EMA. Ele negocia usando uma quantidade monetária fixa para ajustar dinamicamente o tamanho da posição. A lógica da estratégia é simples e direta, fácil de entender e executar e adequada para a maioria dos traders usar. Ao mesmo tempo, a estratégia também tem certas limitações e riscos, como adaptabilidade insuficiente a mercados variados e mercados de tendência descendente, bem como o risco de reversões rápidas após a abertura de posições. Para resolver esses problemas, melhorias e otimizações podem ser feitas em termos de determinação de tendência, posicionamento, otimização de stop-loss, condições de filtragem, etc., para permitir que a estratégia capture melhor oportunidades e controle de riscos de mercado. Esta estratégia tem uma prática que vale a pena mais reflexão e exploração, e a plasticidade geral é forte e o processo é claro.


/*backtest
start: 2023-03-13 00:00:00
end: 2024-03-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Two 5min Closes Above 9EMA Strategy with Dynamic Position Size", overlay=true)

// Define the fixed amount for position sizing
fixedAmount = 1000

// Calculate the 9-period EMA
ema9 = ta.ema(close, 9)

// Define time constraints (9:30 AM to 9:40 AM EST, adjust for your timezone)
sessionStart = 0930
sessionEnd = 0940
timeCondition = (hour * 100 + minute) >= sessionStart and (hour * 100 + minute) < sessionEnd

// Detect two consecutive 5-min bars where close is near 0.99 times the high and above 9 EMA
closeNearHighAndAboveEMA = close >= high * 0.99 and close > ema9
twoConsecutiveBars = closeNearHighAndAboveEMA and closeNearHighAndAboveEMA[1]

// Entry condition: Within the first 10 minutes of the day and two consecutive bars match criteria
entryCondition = twoConsecutiveBars

// Exit condition: First 5-min close below 9 EMA after entry
exitCondition = close < ema9

// Plot EMA for visualization
plot(ema9, color=color.blue, linewidth=2, title="9 EMA")

// Calculate position size
positionSize = fixedAmount / close

// Strategy execution
if (entryCondition)
    strategy.entry("Buy", strategy.long, qty=positionSize)

if (exitCondition)
    strategy.close("Buy")


Mais.