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

O valor da posição em risco deve ser calculado de acordo com o método de classificação da posição em risco.

Autora:ChaoZhang, Data: 2024-03-28 16:13:45
Tags:

img

Estratégia geral

Esta estratégia combina múltiplas médias móveis exponenciais (EMA), o índice de força relativa (RSI) e uma condição de saída baseada em desvio padrão para identificar oportunidades de compra e venda potenciais. Ele usa EMAs de curto prazo (6, 8, 12 dias), médio prazo (55 dias) e longo prazo (150, 200, 250 dias) para analisar a direção e a força das tendências do mercado. O RSI, com limiares de compra (30) e venda (70) configuráveis, é empregado para avaliar o impulso e identificar condições de sobrecompra ou sobrevenda. A estratégia também possui um mecanismo de saída único que é ativado quando o preço de fechamento atinge uma faixa de desvio padrão configurável (default 0.5) da EMA de 12 dias, fornecendo um método para potencialmente proteger lucros ou minimizar perdas.

Princípios de estratégia

  1. Calcular múltiplas EMA (6, 8, 12, 55, 100, 150, 200) como referências visuais para avaliar as tendências do mercado.
  2. Determinar o máximo máximo e o mínimo mínimo das velas N mais recentes com base na entrada do utilizador (3-4 velas).
  3. Entrada longa: O fechamento atual é superior ao máximo máximo das velas N recentes e acima do filtro EMA (se habilitado).
  4. Entrada curta: O fechamento atual é inferior ao mínimo mais baixo das velas N recentes e abaixo do filtro EMA (se habilitado).
  5. Exit Long: O fechamento atual está abaixo da EMA de 12 dias + 0,5 desvios padrão, ou abaixo da EMA de 12 dias.
  6. Exit Short: O fechamento atual está acima da EMA de 12 dias - 0,5 desvios padrão, ou acima da EMA de 12 dias.
  7. Utilize o RSI como indicador suplementar com um período de incumprimento de 14, um limiar de sobrevenda de 30 e um limiar de sobrecompra de 70.

Vantagens da estratégia

  1. Combina as dimensões de tendência (múltiplas EMAs) e impulso (RSI) para uma perspectiva de análise de mercado mais abrangente.
  2. O mecanismo de saída único baseado no desvio-padrão pode equilibrar a proteção dos lucros e o controlo dos riscos.
  3. Código altamente modularizado com parâmetros-chave configuráveis pelos utilizadores para uma grande flexibilidade.
  4. Aplicável a múltiplos instrumentos e prazos, especialmente ações diárias e negociação de Bitcoin.

Análise de riscos

  1. Sinais falsos frequentes durante a consolidação do mercado ou reversões iniciais da tendência, que levam a perdas consecutivas.
  2. Os parâmetros por defeito podem não ser eficazes para todas as condições de mercado; é necessária uma otimização baseada em backtesting.
  3. Confiar unicamente nesta estratégia de negociação é arriscado; é recomendável combiná-la com outros indicadores, níveis de suporte/resistência para a tomada de decisões.
  4. Lento para responder a inversões de tendência desencadeadas por grandes eventos repentinos.

Orientações de otimização

  1. Otimizar os parâmetros EMA e RSI: realizar pesquisas exaustivas para intervalos de parâmetros ideais com base em instrumentos, prazos e características do mercado.
  2. Introduzir mecanismos de stop-loss e take-profit: estabelecer níveis razoáveis de stop-loss e take-profit com referência a indicadores de volatilidade, como o ATR, para controlar os riscos do single trade.
  3. Implementar dimensionamento de posições: ajustar os tamanhos das posições com base na força da tendência (por exemplo, ADX) ou na proximidade dos principais níveis de suporte/resistência.
  4. Combinar com outros indicadores técnicos: Bandas de Bollinger, MACD, cruzamento de médias móveis para melhorar a confiabilidade dos sinais de entrada/saída.
  5. Otimização para diferentes estados de mercado: combinações de parâmetros de ajuste fino para tendências, intervalos e mercados em transição separadamente.

Resumo

Este artigo propõe uma estratégia de negociação baseada em múltiplas médias móveis, RSI e uma saída de desvio padrão. A estratégia analisa o mercado a partir de ambas as dimensões da tendência e do momento, empregando um mecanismo de saída de desvio padrão exclusivo para capturar oportunidades de tendência e gerenciar riscos. A lógica da estratégia é clara, rigorosa e a implementação do código é concisa e eficiente. Com otimização adequada, essa estratégia tem o potencial de se tornar uma estratégia de negociação de média a alta frequência intradiária robusta. No entanto, é importante notar que qualquer estratégia tem suas limitações e o uso cego pode introduzir riscos.


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

//@version=5
strategy("Candle Height Breakout with Configurable Exit and Signal Control", shorttitle="CHB Single Signal", overlay=true)

// Input parameters for EMA filter and its length
useEmaFilter = input.bool(true, "Use EMA Filter", group="Entry Conditions")
emaFilterLength = input.int(55, "EMA Filter Length", minval=1, group="Entry Conditions")
candleCount = input.int(4, "SamG Configurable Candle Count for Entry", minval=3, maxval=4, step=1, group="Entry Conditions")
exitEmaLength = input.int(12, "Exit EMA Length", minval=1, group="Exit Conditions", defval=12)
exitStdDevMultiplier = input.float(0.5, "Exit Std Dev Multiplier", minval=0.1, maxval=2.0, step=0.1, group="Exit Conditions")

// State variables to track if we are in a long or short position
var bool inLong = false
var bool inShort = false

// Calculating EMAs with fixed periods for visual reference
ema6 = ta.ema(close, 6)
ema8 = ta.ema(close, 8)
ema12 = ta.ema(close, 12)
ema55 = ta.ema(close, 55)
ema100 = ta.ema(close, 100)
ema150 = ta.ema(close, 150)
ema200 = ta.ema(close, 200)
emaFilter = ta.ema(close, emaFilterLength)
exitEma = ta.ema(close, exitEmaLength)

// Plotting EMAs
plot(ema6, "EMA 6", color=color.red)
plot(ema8, "EMA 8", color=color.orange)
plot(ema12, "EMA 12", color=color.yellow)
plot(ema55, "EMA 55", color=color.green)
plot(ema100, "EMA 100", color=color.blue)
plot(ema150, "EMA 150", color=color.purple)
plot(ema200, "EMA 200", color=color.fuchsia)
plot(emaFilter, "EMA Filter", color=color.black)
plot(exitEma, "Exit EMA", color=color.gray)

// Calculating the highest and lowest of the last N candles based on user input
highestOfN = ta.highest(high[1], candleCount)
lowestOfN = ta.lowest(low[1], candleCount)

// Entry Conditions with EMA Filter
longEntryCondition = not inLong and not inShort and (close > highestOfN) and (not useEmaFilter or (useEmaFilter and close > emaFilter))
shortEntryCondition = not inLong and not inShort and (close < lowestOfN) and (not useEmaFilter or (useEmaFilter and close < emaFilter))

// Update position state on entry
if (longEntryCondition)
    strategy.entry("Buy", strategy.long, comment="B")
    inLong := true
    inShort := false

if (shortEntryCondition)
    strategy.entry("Sell", strategy.short, comment="S")
    inLong := false
    inShort := true

// Exit Conditions based on configurable EMA and Std Dev Multiplier
smaForExit = ta.sma(close, exitEmaLength)
upperExitBand = smaForExit + exitStdDevMultiplier * ta.stdev(close, exitEmaLength)
lowerExitBand = smaForExit - exitStdDevMultiplier * ta.stdev(close, exitEmaLength)

exitConditionLong = inLong and (close < upperExitBand or close < exitEma)
exitConditionShort = inShort and (close > lowerExitBand or close > exitEma)

// Strategy exits
if (exitConditionLong)
    strategy.close("Buy", comment="Exit")
    inLong := false

if (exitConditionShort)
    strategy.close("Sell", comment="Exit")
    inShort := false

// Visualizing entry and exit points
plotshape(series=longEntryCondition, style=shape.labelup, location=location.belowbar, color=color.green, size=size.tiny, title="Buy Signal", text="B")
plotshape(series=shortEntryCondition, style=shape.labeldown, location=location.abovebar, color=color.red, size=size.tiny, title="Sell Signal", text="S")


Mais.