
O sistema de negociação de captura de tendência de linha média múltipla com confirmação de cruzamento é uma estratégia de negociação quantitativa baseada em uma combinação de médias móveis (EMA) de índices de múltiplos períodos, combinando indicadores de força relativa (RSI), diferença de tendência de médias móveis (MACD) e alcance real médio (ATR) como indicadores auxiliares. O núcleo da estratégia é determinar a direção da tendência do mercado comparando a relação de posição de linha média de diferentes períodos de tempo, e abrir uma posição quando a tendência é clara, e nivelar a posição quando a tendência enfraquece ou se reverte.
O princípio central da estratégia é o uso de médias móveis indexadas em vários períodos diferentes (EMA) para avaliar a tendência do mercado e capturar oportunidades de negociação. A estratégia usa cinco EMAs: média instantânea (MAE) (14 ciclos), média intermediária (MAE) (25 ciclos), média de curto prazo (MAE) (50 ciclos), média média (MAE) (100 ciclos) e média de longo prazo (MAE) (200 ciclos).
A principal lógica da estratégia é a seguinte:
Mecanismo de avaliação de tendências:
Sinais de entrada:
Sinais de saída:
Controle de Risco:
Localização:
Confirmação da linha média múltipla: Confirmação conjunta de tendências por meio de linhas médias de vários períodos diferentes, redução de falsas rupturas e sinais errados, melhoria da qualidade do sinal.
Identificação de tendências com precisãoO sistema multi-linear permite identificar com maior precisão os pontos de inflexão das tendências do mercado, em comparação com o sistema mono-linear, especialmente quando há mudanças instantâneas na posição da linha média em relação a outras linhas.
Gestão de Riscos FlexívelA utilização de diferentes critérios de entrada e saída para a posição a mais e a menos, refletindo a diferenciação de tratamento de risco em diferentes direções do mercado, com o aumento adicional de filtros de volatilidade para a posição a menos.
Sinais de negociação visuaisEstratégia: Graficamente marcado para mostrar compras, vendas e pontos de liquidação, facilitando a análise de retorno e monitoramento em tempo real.
Visualização de tendênciasA utilização de cores de fundo para distinguir as tendências ascendentes e descendentes, visualiza o ambiente do mercado, facilitando o traders a julgar rapidamente o estado atual do mercado.
Potencial de expansão: já integrado com o cálculo dos indicadores RSI e MACD, que, embora não sejam usados atualmente na lógica de negociação, fornecem a base para a otimização futura da estratégia.
Ajustabilidade dos parâmetrosTodos os parâmetros-chave podem ser ajustados através de controles de entrada, incluindo o ciclo de linha média, o limiar RSI, o parâmetro MACD e a configuração ATR, para facilitar a otimização de acordo com diferentes ambientes de mercado e variedades de negociação.
Retardo médioTodos os sistemas baseados na linha de equilíbrio apresentam um certo atraso, podendo ocorrer um retorno maior em mercados de turbulência ou de rápida reversão. A solução é ajustar o ciclo da linha de equilíbrio ou adicionar condições de filtragem de mercados de turbulência adicionais.
Risco de excesso de negociação: Em mercados de turbulência, a média instantânea pode frequentemente atravessar a média de curto prazo, resultando em excesso de negociação. Pode-se reduzir as negociações inválidas aumentando o tempo mínimo de posse ou adicionando filtros adicionais.
Diferentes questões de adaptabilidade ao mercadoUma estratégia de linha média com parâmetros fixos tem um desempenho muito diferente em diferentes ambientes de mercado e variedades de negociação. Optimização de parâmetros para mercados específicos deve ser feita ou o uso de parâmetros de adaptação deve ser considerado.
Conflito de sinais: Embora o código tenha calculado os indicadores RSI e MACD, eles não foram efetivamente integrados na lógica de negociação, o que pode levar a potenciais conflitos de sinais ou a oportunidades de otimização perdidas.
Preconceitos de cabeça altaA estratégia atual usa padrões diferentes para o multihead e o headless, e não tem filtro de taxa de flutuação, enquanto o headless precisa atender a condição mínima de ATR, o que pode tornar a estratégia mais agressiva em mercados ascendentes e aumentar a abertura de risco.
Mecanismo de saída fixaA estratégia usa um cruzamento de indicadores técnicos fixos como ponto de partida, e a falta de um mecanismo de stop-loss ajustado de acordo com a dinâmica da situação do mercado pode não ser eficaz para bloquear os lucros ou controlar o risco.
Sensibilidade do parâmetroA estratégia depende de múltiplos parâmetros de ciclo de média, cujas pequenas variações podem causar diferenças significativas nos resultados das negociações, aumentando o risco de superalimento.
Integrar indicadores calculadosA estratégia calcula os indicadores RSI e MACD, mas não os utiliza plenamente. O RSI pode ser usado para filtrar condições de mercado extremas e o MACD para confirmar a direção da tendência e melhorar a qualidade do sinal. Por exemplo, pode-se exigir que o RSI não esteja na zona de sobrecompra quando a entrada de múltiplos cabeçalhos e que o RSI não esteja na zona de sobrevenda quando a entrada de cabeçalhos está vazia.
Sistema de travamento dinâmicoIntrodução de um mecanismo de stop loss dinâmico baseado no ATR, que ajusta automaticamente a distância de stop loss de acordo com a volatilidade do mercado, aumentando a capacidade de gerenciamento de risco. Isso pode ser feito calculando o valor do ATR de pontos de entrada adicionados ou subtraídos por um determinado número de vezes.
Classificação do estado do mercadoAumentar o mecanismo de julgamento sobre o estado do mercado (mercado de tendência vs mercado de turbulência), adotando diferentes estratégias de negociação em diferentes estados de mercado. Por exemplo, a intensidade da tendência do mercado pode ser julgada através da inclinação da linha média de longo prazo ou do indicador ADX.
Análise de Multi-Framas de TempoA integração de informações de tendências de períodos de tempo mais elevados e a negociação somente quando as tendências de períodos de tempo mais elevados estão alinhadas, aumentam a taxa de vitória.
Parâmetros de linha média optimizadaA estratégia atual usa um período de linha média fixo (<14, 25, 50, 100, 200) para encontrar o melhor parâmetro para um determinado mercado, testando diferentes combinações de parâmetros.
Adição de confirmação de volumeCombinando indicadores de volume de transação para confirmar a força da tendência, negocie apenas em tendências com suporte de volume de transação, reduzindo os prejuízos causados por falsas rupturas.
Condições de entrada alteradasOptimizar a lógica de entrada de múltiplos e vazios, tornando-os mais simétricos, ou fazer ajustes mais precisos para diferentes características de direção do mercado. Por exemplo, pode-se considerar o aumento do filtro de taxa de flutuação em entradas múltiplos, ou ajustar o grau de rigor da confirmação de tendências.
Aumentar o tempo de filtragemAdicione filtros de tempo de negociação para evitar momentos de maior volatilidade ou menos liquidez no mercado, como a publicação de dados importantes ou o fechamento do mercado.
O sistema de negociação de captura de tendências de linha média múltipla com confirmação de cruzamento é uma estratégia de negociação quantitativa baseada em análise técnica, que julga a tendência do mercado por meio de combinações de linhas médias de vários períodos diferentes e abre posições quando a tendência é clara e feche posições quando a tendência enfraquece. O principal benefício da estratégia é aproveitar a tendência de confirmação de cruzamento de linhas médias múltiplas, reduzir sinais errados e melhorar a qualidade de negociação.
A estratégia tem um bom desempenho em mercados com uma tendência clara, mas pode enfrentar o risco de sobre-negociação em mercados turbulentos. A estabilidade e adaptabilidade da estratégia podem ser aumentadas ainda mais pela integração de indicadores RSI e MACD calculados, pela introdução de mecanismos de parada de perda dinâmica, pela otimização de combinações de parâmetros de linha média e pelo aumento da classificação de estados de mercado.
Para aplicações práticas, é recomendável fazer um bom retorno em diferentes ambientes de mercado e variedades de negociação, ajustar os parâmetros para adaptá-los a características específicas do mercado e controlar o risco de negociação individual em combinação com uma estratégia de gerenciamento de fundos. Além disso, pode ser considerado o uso da estratégia como parte de um portfólio de investimentos, em combinação com outras estratégias complementares, para dispersar o risco de negociação e melhorar a estabilidade do portfólio de investimentos em geral.
/*backtest
start: 2025-02-23 00:00:00
end: 2025-03-02 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("etude9", shorttitle="etude 9", overlay=true)
//on tente de comlbiner avec le RSi un stratégie pas si mauvaise sur les longs
// un d7 r rsi qui donne des indiciataions pas mal pour les short pour les long pas très concluant
// === Paramètres d'entrée ===
// Source de prix
// et merde rendement sur long est plus efficace sans condition sur ATR !!
// par contre j'ai l'imression que le rsi ça va être bien pour les shorts
// bon avec le RSi ça donne rien, et avec le macd, ç ce stade c'est foireux mmm
pricetype = input(close, title="Source de prix pour les moyennes mobiles")
// Périodes des moyennes mobiles
instant = input(14, title="Période de la moyenne instantanée (10)")
interm = input(25, title="Perdiode intermediaire (25)")
shortperiod = input(50, title="Période de la moyenne mobile courte (20)")
mediumperiod = input(100, title="Période de la moyenne mobile moyenne (50)")
longperiod = input(200, title="Période de la moyenne mobile longue (100)")
// Paramètres du RSI
rsi_length = input.int(14, title="Période RSI")
rsi_overbought = input.int(78, title="Niveau de surachat (RSI)")
rsi_oversold = input.int(30, title="Niveau de survente (RSI)")
// Paramètres pour le MACD
fast_length = input.int(12, title="Longueur Rapide MACD")
slow_length = input.int(26, title="Longueur Lente MACD")
signal_length = input.int(9, title="Longueur du Signal MACD")
// Paramètres de l'ATR
atr_length = input.int(14, title="Période ATR")
atr_multiplier = input.float(1.5, title="Multiplicateur ATR pour le Stop-Loss")
// Calcul de l'ATR
atr = ta.atr(atr_length)
// === Calcul des moyennes mobiles (EMA uniquement) ===
instant_ma = ta.ema(pricetype, instant) // Moyenne mobile instantanée
short_ma = ta.ema(pricetype, shortperiod) // Moyenne mobile courte (20)
medium_ma = ta.ema(pricetype, mediumperiod) // Moyenne mobile moyenne (50)
long_ma = ta.ema(pricetype, longperiod) // Moyenne mobile longue (100)
interm_ma = ta.ema(pricetype, interm)
// Calcul du RSI
rsi = ta.rsi(close, rsi_length)
// Calcul du MACD
[macd_line, signal_line, hist_line] = ta.macd(close, fast_length, slow_length, signal_length)
// Stocker les résultats de crossover et crossunder dans des variables globales
is_crossover = ta.crossover(macd_line, signal_line)
is_crossunder = ta.crossunder(macd_line, signal_line)
// Filtre ATR : on ne trade que si la volatilité est suffisante
min_atr = atr > ta.sma(atr, atr_length) // ATR supérieur à sa moyenne
// === Conditions de tendance ===
trending_up = instant_ma > short_ma and instant_ma > medium_ma and instant_ma > long_ma and short_ma > medium_ma // Tendance haussière
trending_down = instant_ma< short_ma and instant_ma<medium_ma and instant_ma<long_ma and short_ma<long_ma // Tendance baissière
// Filtre RSI
rsi_filter_buy = rsi < rsi_overbought // RSI n'est pas en surachat pour un achat
rsi_filter_sell = rsi > rsi_oversold // RSI n'est pas en survente pour une vente
// === Gestion des positions ===
var bool in_position = false // Variable pour suivre si une position est ouverte
var bool is_long = false // Variable pour suivre si la position est longue ou courte
// === Signaux d'ouverture et de fermeture ===
bool buy_signal = false // Signal d'ouverture d'une position longue
bool close_signal = false // Signal de fermeture d'une position longue
bool sell_signal = false // Signal d'ouverture d'une position courte
bool close_short_signal = false // Signal de fermeture d'une position courte
// Ouvrir une position longue
if (trending_up and not in_position)
strategy.entry("Long", strategy.long)
in_position := true
is_long := true
buy_signal := true // Signal d'ouverture
else
buy_signal := false
// Fermer la position longue si instant_ma < medium_ma
if (in_position and is_long and instant_ma < short_ma)
strategy.close("Long")
in_position := false
is_long := false
close_signal := true // Signal de fermeture
else
close_signal := false
// Ouvrir une position courte
if (trending_down and not in_position and min_atr)
strategy.entry("Short", strategy.short)
in_position := true
is_long := false
sell_signal := true // Signal d'ouverture
else
sell_signal := false
// Fermer la position courte si instant_ma > medium_ma
if (in_position and not is_long and instant_ma > medium_ma)
strategy.close("Short")
in_position := false
close_short_signal := true // Signal de fermeture
else
close_short_signal := false
// === Affichage des signaux sur le graphique ===
plotshape(series=buy_signal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy", size=size.small)
plotshape(series=sell_signal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell", size=size.small)
plotshape(series=close_signal, title="Close Long Signal", location=location.abovebar, color=color.orange, style=shape.labeldown, text="Close Long", size=size.small)
plotshape(series=close_short_signal, title="Close Short Signal", location=location.belowbar, color=color.blue, style=shape.labelup, text="Close Short", size=size.small)
// === Affichage des moyennes mobiles sur le graphique ===
plot(short_ma, color=color.blue, title="Moyenne mobile courte (20)", linewidth=2)
plot(medium_ma, color=color.orange, title="Moyenne mobile moyenne (50)", linewidth=2)
plot(long_ma, color=color.red, title="Moyenne mobile longue (100)", linewidth=2)
plot(instant_ma, color=color.rgb(43, 14, 111), title="Moyenne mobile instantanée (10)", linewidth=2)
plot(interm_ma, color=color.rgb(26, 192, 34), title="Moyenne mobile instantanée (10)", linewidth=2)
// Coloration de fond pour les tendances
bgcolor(color=trending_up ? color.new(color.green, 90) : trending_down ? color.new(color.red, 90) : na, title="Coloration de fond")