Este artículo presenta una estrategia de negociación de tendencias basada en múltiples medias móviles. Esta estrategia se aplica principalmente al mercado de futuros del NASDAQ para capturar la tendencia alcista del mercado mediante el análisis de la posición del precio con respecto a las medias, largas y cortas medias.
La estrategia utiliza tres simples medias móviles (SMA): largo (default 200 cycles), medio (default 21 cycles) y corto (default 9 cycles). La estrategia dispara una señal de compra cuando el precio está por encima de las medias largo y mediano plazo y se cruza en la mediana corto. La estrategia también establece puntos fijos de frenado y stop loss para controlar el riesgo. Además, la estrategia estabiliza todas las posiciones a las 17:00 de cada día de negociación.
Calcula la media móvil simple de largo plazo (default 200 ciclos), mediano plazo (default 21 ciclos) y corto plazo (default 9 ciclos).
Determinar si el precio actual está por encima de la línea media a largo plazo y la línea media a mediano plazo.
Para determinar si el precio actual se cruza por encima de la línea media a corto plazo.
Cuando las condiciones 2 y 3 se cumplen al mismo tiempo, y no hay actualmente ninguna tenencia, se dispara la señal de compra.
Después de la compra, se establece un punto fijo de parada y parada de pérdida y se estabiliza cuando el precio toca el punto de parada o parada de pérdida.
Las posiciones se liquidan a las 17:00 de cada día de trading.
Sencilla y fácil de entender: La estrategia está basada en una media móvil, y el principio es simple, fácil de entender e implementar.
Seguimiento de tendencias: las estrategias pueden capturar de manera efectiva la tendencia alcista del mercado mediante el análisis de la ubicación de los precios en relación con las líneas estacionales de diferentes ciclos.
Control de riesgos: la estrategia establece un número fijo de puntos de contención y de contención de pérdidas, lo que ayuda a controlar el riesgo de una sola operación.
Posicionamiento automático: la estrategia se posiciona automáticamente en un momento específico de cada día de negociación, evitando el riesgo de la noche a la mañana.
Optimización de parámetros: el rendimiento de las estrategias puede ser sensible a los parámetros del ciclo de la línea media y debe optimizarse según diferentes mercados y variedades.
Mercado turbulento: En un entorno turbulento, las señales de cruce frecuentes pueden causar un mal desempeño estratégico.
Riesgo de punto de deslizamiento: en situaciones de fuerte volatilidad del mercado, los frenos y pérdidas de puntos fijos pueden no ejecutarse como se esperaba, lo que genera un riesgo de punto de deslizamiento.
Dinámico stop-loss stop: se ajusta dinámicamente el stop-loss y el stop-loss punto de acuerdo con la volatilidad del mercado o el movimiento de los precios para optimizar el riesgo-beneficio.
Filtración de tendencias: Introducción de otros indicadores técnicos, como ADX, etc., para confirmar la intensidad de la tendencia, filtrando las falsas señales en los mercados de oscilación.
Adaptación a múltiples variedades: mejora de la estrategia para adaptarse a diferentes variedades de futuros y características del mercado.
Gestión de fondos: introducir reglas de gestión de fondos más complejas, como la gestión de posiciones y el control de riesgos, para mejorar la solidez de las estrategias.
La estrategia de negociación de tendencias basada en múltiples líneas uniformes es una estrategia de seguimiento de tendencias simple y fácil de entender que captura la tendencia alcista del mercado mediante el análisis de la posición de los precios en relación con las diferentes líneas uniformes del ciclo. La estrategia establece un número de puntos fijos de stop loss y se estabiliza automáticamente a determinadas horas del día para controlar el riesgo. Sin embargo, la estrategia puede funcionar mal en mercados turbulentos y enfrenta problemas como la optimización de parámetros y el riesgo de puntos de deslizamiento.
/*backtest start: 2024-04-01 00:00:00 end: 2024-04-30 23:59:59 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Médias Móveis de MarcosJR", overlay=true) // Inputs para data inicial e final start_year = input.int(2020, title="Ano Inicial") start_month = input.int(1, title="Mês Inicial") start_day = input.int(1, title="Dia Inicial") end_year = input.int(2020, title="Ano Final") end_month = input.int(12, title="Mês Final") end_day = input.int(31, title="Dia Final") // Convertendo dia, mês e ano para timestamp start_date = timestamp(start_year, start_month, start_day, 00, 00) end_date = timestamp(end_year, end_month, end_day, 23, 59) // Condição para verificar se a data está dentro do intervalo especificado date_within_range = true // Parâmetros para os períodos das médias móveis ma_short_period = input.int(9, title="MA Curta") ma_medium_period = input.int(21, title="MA Média") ma_long_period = input.int(200, title="MA Longa") // Definindo médias móveis ma_short = ta.sma(close, ma_short_period) ma_medium = ta.sma(close, ma_medium_period) ma_long = ta.sma(close, ma_long_period) // Plotando as médias móveis no gráfico com espessura aumentada plot(ma_short, color=color.blue, title="MA Curta", linewidth=2) plot(ma_medium, color=color.orange, title="MA Média", linewidth=2) plot(ma_long, color=color.red, title="MA Longa", linewidth=2) // Verificando se o preço está acima das médias móveis above_ma_long = close > ma_long above_ma_medium = close > ma_medium // Verificando se o preço tocou na média móvel curta touch_ma_short = ta.crossover(close, ma_short) // Condições de compra buy_condition = date_within_range and above_ma_long and above_ma_medium and touch_ma_short // Sinais de entrada e saída de compra var float entry_price = na if (buy_condition and strategy.opentrades == 0) // Verifica se não há operações em andamento entry_price := close // Define o preço de entrada ao comprar // Parâmetros para o tamanho do stop gain e stop loss em pontos stop_gain_points = input.int(100, title="Stop Gain (pontos)", minval=1) stop_loss_points = input.int(100, title="Stop Loss (pontos)", minval=1) // Calcular o preço de saída alvo (Stop Gain) e de stop loss target_price = entry_price + stop_gain_points * syminfo.mintick stop_loss_price = entry_price - stop_loss_points * syminfo.mintick // Sair da operação de compra quando o preço atingir o stop gain ou stop loss if (strategy.position_size > 0) strategy.exit("Venda", "Compra", limit=target_price, stop=stop_loss_price) // Sinais de entrada de compra if (buy_condition and strategy.opentrades == 0) // Verifica se não há operações em andamento strategy.entry("Compra", strategy.long) // Plotando setas de compra plotshape(series=buy_condition, title="Sinal de Compra", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) // Função para verificar se é 17:00 do mesmo dia is_17_oclock_same_day = hour == 17 and minute == 0 and hour[1] < 17 // Sair de todas as operações às 17:00 do mesmo dia if (is_17_oclock_same_day) strategy.close_all()