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

Estratégia de negociação baseada em três velas de baixa consecutivas e médias móveis duplas

Autora:ChaoZhang, Data: 2024-05-14 17:30:35
Tags:SMASMA200

img

Resumo

Esta estratégia é uma estratégia de negociação baseada em três velas de baixa consecutivas e médias móveis duplas. A ideia principal da estratégia é: quando há três velas de baixa consecutivas e o preço de fechamento atual é superior à média móvel de 200 dias, abra uma posição longa; quando a média móvel de 10 dias cruza com o preço, ou o preço atinge o nível de take-profit ou stop-loss, feche a posição. A estratégia só é executada dentro de um intervalo de tempo especificado.

Princípio da estratégia

  1. Calcule o número de velas de baixa consecutivas. Se o preço de fechamento diminuir, o número de velas de baixa consecutivas aumentará em 1; caso contrário, ele será reiniciado para 0.
  2. Calcule as médias móveis de 10 e 200 dias.
  3. Determine se o preço de fechamento atual é superior à média móvel de 10 dias.
  4. Verifique se as condições de entrada estão preenchidas: três velas de baixa consecutivas, o tempo atual está dentro do intervalo especificado e o preço de fechamento atual é superior à média móvel de 200 dias.
  5. Verifique se as condições de saída estão preenchidas: a média móvel de 10 dias cruza-se com o preço ou o preço atinge o nível de take-profit ou stop-loss.
  6. Se as condições de entrada estiverem preenchidas e não houver posição atual, abrir uma posição longa.
  7. Se as condições de saída estiverem preenchidas e houver uma posição em curso, fechar a posição.

Vantagens da estratégia

  1. Considera o movimento dos preços e os fatores da média móvel, permitindo-lhe captar oportunidades em mercados em tendência e em oscilação.
  2. Estabelece níveis de take-profit e stop-loss, que podem controlar eficazmente os riscos.
  3. Limita a duração da estratégia, evitando riscos excessivos durante determinados períodos específicos.
  4. A lógica do código é clara e legível, tornando-a fácil de entender e otimizar.

Riscos estratégicos

  1. O julgamento de velas de baixa consecutivas pode ser demasiado simples, desencadeando facilmente falsos sinais.
  2. A fixação dos níveis de take-profit e stop-loss pode não ser suficientemente flexível, levando a operações frequentes ou a oportunidades perdidas quando o mercado flutua muito.
  3. Falta consideração para eventos inesperados, notícias importantes e outros fatores não convencionais, potencialmente assumindo riscos adicionais.

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

  1. Considerar a introdução de mais indicadores técnicos, como o RSI e o MACD, para construir uma lógica de julgamento de sinais mais robusta.
  2. Otimizar a definição dos níveis de take-profit e stop-loss, introduzindo take-profit/stop-loss dinâmicos ou stop-loss baseados em indicadores de volatilidade como o ATR.
  3. Estudar o impacto de diferentes configurações de parâmetros na estratégia, como o número de velas de baixa consecutivas, períodos de média móvel, etc., para encontrar a combinação ideal de parâmetros.
  4. Incorporar a gestão de posições para ajustar dinamicamente as posições com base em diferentes ambientes de mercado, melhorando a eficiência da utilização do capital.

Resumo

Esta estratégia constrói um modelo de negociação simples e fácil de entender através da combinação de velas de baixa consecutivas e médias móveis duplas. Ao mesmo tempo em que captura oportunidades de tendência, a estratégia também define certas medidas de controle de risco. No entanto, há mais espaço para otimização no julgamento de sinais e controle de riscos. Ao introduzir mais indicadores técnicos, otimizar configurações de parâmetros, implementar take-profit/stop-loss dinâmico e gerenciamento de posição, a robustez e lucratividade da estratégia podem ser melhoradas.


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

//@version=5
strategy("Estrategia de Trading", overlay=true)

// Definir el número de cierres de velas decrecientes consecutivas
var int cierres_decrecientes_consecutivos = 0
num_cierres_decrecientes = input.int(3, title="Número de cierres decrecientes", minval=1)

// Definir el porcentaje de cambio para cerrar la operación
porcentaje_cierre_arriba = input.float(1.5, title="Porcentaje de cierre arriba (%)", step=0.1)
porcentaje_cierre_abajo = input.float(1.0, title="Porcentaje de cierre abajo (%)", step=0.1)

// Definir las medias móviles para el cierre de la operación
periodos_media_movil_cierre = input.int(10, title="Períodos de la media móvil para cierre")
periodos_media_movil_200 = input.int(200, title="Períodos de la media móvil de 200")

// Definir el rango de fechas para la simulación
start_date = timestamp(2024, 1, 1, 0, 0)
end_date = timestamp(2024, 12, 31, 23, 59)

// Calcular la media móvil para el cierre de la operación
sma_cierre = ta.sma(close, periodos_media_movil_cierre)
sma_200 = ta.sma(close, periodos_media_movil_200)

// Calcular si el precio está por encima o por debajo de la media móvil para el cierre de la operación
precio_por_encima_sma_cierre = close > sma_cierre
precio_por_debajo_sma_cierre = close < sma_cierre

// Calcular si se han producido num_cierres_decrecientes consecutivos
if (ta.change(close) < 0)
    cierres_decrecientes_consecutivos := cierres_decrecientes_consecutivos + 1
else
    cierres_decrecientes_consecutivos := 0

es_cierres_consecutivos = cierres_decrecientes_consecutivos >= num_cierres_decrecientes

// Definir condiciones de entrada y salida de la estrategia dentro del rango de fechas y con el precio por encima de la SMA de 200
condicion_entrada = es_cierres_consecutivos and close > sma_200
condicion_cierre_sma = (precio_por_encima_sma_cierre[1] and not precio_por_encima_sma_cierre) or (not precio_por_encima_sma_cierre[1] and precio_por_encima_sma_cierre)

// Calcular precios de salida basados en porcentajes
precio_salida_arriba = strategy.position_avg_price * (1 + porcentaje_cierre_arriba / 100)
precio_salida_abajo = strategy.position_avg_price * (1 - porcentaje_cierre_abajo / 100)

// Ejecutar operación en largo dentro del rango de fechas y con el precio por encima de la SMA de 200
if (condicion_entrada and strategy.opentrades == 0)
    strategy.entry("Long", strategy.long)

// Cerrar operación en largo si se cumple la condición de salida por cambio en el cruce de la media móvil dentro del rango de fechas
if (strategy.position_size > 0 and condicion_cierre_sma)
    strategy.close("Long")

// Cerrar operación en largo si el precio alcanza el porcentaje de cierre arriba o abajo dentro del rango de fechas
strategy.exit("Stop Loss", "Long", limit=precio_salida_arriba, stop=precio_salida_abajo)

// Plot para visualizar la media móvil para el cierre de la operación
plot(sma_cierre, color=color.red)

// Plot para visualizar la SMA de 200
plot(sma_200, color=color.blue)


Relacionados

Mais.