
Este artigo apresenta uma estratégia de negociação quantitativa chamada “Kyrie Crossover @zaytrade”. Esta estratégia combina dois indicadores de DMI de linha de equilíbrio e de períodos de tempo múltiplos para tomar decisões de negociação através da captura de tendências de mercado. O núcleo da estratégia é o uso de sinais de cruzamento de linha de equilíbrio de curto prazo (EMA de 10 períodos) e linha de equilíbrio de longo prazo (EMA de 323 períodos), combinando indicadores de DMI de vários períodos de tempo, como 5 minutos, 15 minutos, 30 minutos e 1 hora, para confirmar a direção e a intensidade da tendência.
O princípio da estratégia pode ser dividido nas seguintes partes:
O cruzamento de duas linhas equidistantes:A estratégia usa um EMA curto (de 10 ciclos) e um EMA longo (de 323 ciclos) para capturar a tendência do mercado. Quando um EMA curto é atravessado por um EMA longo, representa uma oportunidade de compra potencial; Quando um EMA curto é atravessado por um EMA longo, representa uma oportunidade de venda potencial.
Indicadores de DMI de períodos múltiplos:Para confirmar ainda mais a direção e a intensidade da tendência, a estratégia usa o indicador DMI em vários períodos de tempo. O indicador DMI é composto por ADX (indicador de direção média), + DI (indicador de direção ascendente) e -DI (indicador de direção descendente). Comparando a força relativa de + DI e -DI, pode-se determinar se a tendência atual é de alta ou baixa. A estratégia calcula o indicador DMI em vários períodos de tempo, como 5 minutos, 15 minutos, 30 minutos e 1 hora, para obter informações mais abrangentes sobre a tendência.
Confirmação de tendências:A estratégia confirma a tendência levando em consideração os sinais de cruzamento de equilíbrio e os indicadores de DMI de períodos de tempo múltiplos. A estratégia produz um sinal de negociação correspondente quando o sinal de cruzamento de equilíbrio coincide com a direção da tendência do indicador de DMI. Por exemplo, quando o EMA de curto prazo atravessa o EMA de longo prazo e o indicador de DMI de vários períodos de tempo mostra uma tendência de baixa, a estratégia produz um sinal de multiplo.
Gestão de Riscos:A estratégia utiliza uma abordagem de gestão de posições baseada na percentagem de risco.riskPercentageEMAParâmetros para controlar a margem de risco de cada transação. Além disso, a estratégia também usa o stop loss para limitar as perdas potenciais.
Capturar as tendências do mercado:A combinação de binário equilátero cruzado e DMI de períodos de tempo múltiplos permite que a estratégia capte de forma eficaz as principais tendências do mercado. Esta abordagem pode ajudar os comerciantes a seguir a direção geral do mercado, aumentando a probabilidade de sucesso nas negociações.
Confirmação de múltiplos períodos:A estratégia calcula o DMI em vários períodos de tempo, incluindo 5 minutos, 15 minutos, 30 minutos e 1 hora. Esta abordagem de análise de vários períodos de tempo pode fornecer um sinal de confirmação de tendência mais abrangente e confiável, reduzindo a ocorrência de falsos sinais.
Configuração de parâmetros flexível:A estratégia oferece vários parâmetros ajustáveis, como períodos de EMA de curto prazo, períodos de EMA de longo prazo, períodos de alinhamento de ADX e duração de DI. O usuário pode otimizar esses parâmetros de acordo com seu estilo de negociação e características do mercado para obter melhor desempenho de negociação.
Gestão de Riscos:A estratégia tem uma abordagem de gerenciamento de posições baseada na porcentagem de risco, que o usuário pode configurarriskPercentageEMAParâmetros para controlar o limite de risco de cada transação. Além disso, a estratégia também usa o stop loss para limitar as perdas potenciais, aumentando a eficácia do gerenciamento de risco.
Parâmetros de otimização:O desempenho da estratégia depende muito da escolha dos parâmetros. A configuração inadequada dos parâmetros pode levar ao fraco desempenho da estratégia e até mesmo a um grande recuo. Portanto, na aplicação real, os parâmetros precisam ser otimizados e testados para encontrar o melhor conjunto de parâmetros adequado às condições atuais do mercado.
A tendência está atrasada:Uma vez que a estratégia depende de equilíbrio de linha cruzada e DMI para confirmar a tendência, a geração de sinais pode ter um certo atraso em situações de rápida mudança no mercado. Isso significa que a estratégia pode perder algumas oportunidades de tendência precoce ou produzir sinais apenas quando a tendência já foi revertida.
Mercado em choque:Nos mercados de turbulência, a flutuação dos preços pode levar a frequentes cruzamentos de linha média e mudanças nos indicadores DMI. Isso pode levar a estratégias que produzem mais sinais de negociação, aumentando os custos de negociação e o risco de retração. Portanto, o desempenho das estratégias em mercados de turbulência pode ser afetado.
O incidente do Cisne Negro:A estratégia baseia-se em dados históricos e modelos estatísticos e pode não reagir corretamente em tempo hábil a alguns eventos de mercado extremos, como o evento Black Swan. Isso pode levar a uma estratégia que sofra maiores perdas nessas situações especiais.
Ajustes de parâmetros dinâmicos:Pode-se considerar a introdução de um mecanismo de ajuste de parâmetros dinâmicos, adaptando os parâmetros da estratégia de acordo com a volatilidade do mercado e a intensidade da tendência. Isso pode ajudar a estratégia a se adaptar melhor a diferentes ambientes de mercado, aumentando a robustez da estratégia.
Confirmado por vários fatores:Para além dos indicadores de cruzamento de linha média e DMI, outros indicadores técnicos ou fatores fundamentais podem ser introduzidos para confirmar a tendência. Por exemplo, indicadores como volume de negócios, volatilidade e sentimentos de mercado podem ser combinados para obter sinais de negociação mais confiáveis.
Optimização de Stop Loss:Pode-se otimizar a posição do stop loss, por exemplo, usando métodos como stop loss móvel, stop loss dinâmico e outros. Isso pode ajudar a estratégia a proteger melhor os lucros, enquanto limita as perdas potenciais.
Gestão de posições:Pode-se introduzir métodos mais avançados de gestão de posições, como a fórmula de Kelly, o investimento em proporções fixas, etc. Isso pode ajudar a estratégia a ajustar dinamicamente as posições em diferentes ambientes de mercado, aumentando a eficiência da utilização de fundos e a capacidade de controlar o risco.
Otimizar o aprendizado de máquina:Algoritmos de aprendizagem de máquina podem ser usados para integrar a estratégia com a aprendizagem de dados históricos e a identificação de padrões, a seleção de parâmetros e a geração de sinais para otimizar a estratégia. Isso pode ajudar a estratégia a se adaptar automaticamente às mudanças no mercado, aumentando a adaptabilidade e a robustez da estratégia.
Este artigo apresenta uma estratégia de negociação quantitativa baseada em indicadores de DMI de duplo equilíbrio e de períodos de tempo múltiplos. A estratégia toma decisões de negociação capturando tendências de mercado e, ao mesmo tempo, usa medidas de gerenciamento de risco para controlar perdas potenciais. A vantagem da estratégia reside na capacidade de identificar efetivamente as principais tendências do mercado e aumentar a confiabilidade do sinal por meio da confirmação de períodos de tempo múltiplos.
/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Kyrie Crossover @zaytrade ", overlay=true, calc_on_every_tick=true)
// Input parameters for EMA
shortTermEMA = input.int(9, title="Short-Term EMA Period")
longTermEMA = input.int(21, title="Long-Term EMA Period")
riskPercentageEMA = input.float(1, title="Risk Percentage EMA", minval=0.1, maxval=5, step=0.1)
// Calculate EMAs
emaShort = ta.ema(close, shortTermEMA)
emaLong = ta.ema(close, longTermEMA)
// EMA Crossover Strategy
longConditionEMA = ta.crossover(emaShort, emaLong)
shortConditionEMA = ta.crossunder(emaShort, emaLong)
// Input parameters for DMI
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
// DMI Logic
dirmov(len) =>
up = ta.change(high)
down = -ta.change(low)
truerange = ta.tr
plus = fixnan(100 * ta.rma((up > down ? up : 0), len) / truerange)
minus = fixnan(100 * ta.rma((down > up ? down : 0), len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adxValue = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
[adxValue, plus, minus]
// Function to get trend and strength for a given timeframe
getTrendAndStrength(_source, _dilen, _adxlen) =>
[adxValue, up, down] = adx(_dilen, _adxlen)
var string trendIndication = ""
var string trendStrength = ""
if (up > down) or ((up > down) and (up > down) and (up > adxValue)) // Bullish condition
trendIndication := "Bullish"
trendStrength := "Strengthening"
else if (down > up) or ((down > up) and (down > up) and (down > adxValue)) // Bearish condition
trendIndication := "Bearish"
trendStrength := "Weakening"
else
trendIndication := "No Clear Trend"
trendStrength := "Sideways"
[trendIndication, trendStrength]
// Get trend and strength for selected timeframes
[tf1_trend, tf1_strength] = request.security(syminfo.tickerid, "5", getTrendAndStrength(close, dilen, adxlen))
[tf2_trend, tf2_strength] = request.security(syminfo.tickerid, "15", getTrendAndStrength(close, dilen, adxlen))
[tf3_trend, tf3_strength] = request.security(syminfo.tickerid, "30", getTrendAndStrength(close, dilen, adxlen))
[tf4_trend, tf4_strength] = request.security(syminfo.tickerid, "60", getTrendAndStrength(close, dilen, adxlen))
[current_trend, _] = getTrendAndStrength(close, dilen, adxlen)
// Define colors based on trend indication
tf1_color = tf1_trend == "Bullish" ? color.green : (tf1_trend == "Bearish" ? color.red : color.white)
tf2_color = tf2_trend == "Bullish" ? color.green : (tf2_trend == "Bearish" ? color.red : color.white)
tf3_color = tf3_trend == "Bullish" ? color.green : (tf3_trend == "Bearish" ? color.red : color.white)
tf4_color = tf4_trend == "Bullish" ? color.green : (tf4_trend == "Bearish" ? color.red : color.white)
current_color = current_trend == "Bullish" ? color.green : (current_trend == "Bearish" ? color.red : color.white)
// Create and fill the enhanced table for DMI
var table dmiTable = na
if (barstate.islast)
dmiTable := table.new(position.top_right, 6, 1)
table.cell(dmiTable, 0, 0, "DMI Metrics", bgcolor=color.new(color.black, 90), width=15, height=4, text_color=color.white)
table.cell(dmiTable, 1, 0, "5m Trend: " + tf1_trend, bgcolor=tf1_color, width=15, height=4, text_color=color.white)
table.cell(dmiTable, 2, 0, "15m Trend: " + tf2_trend, bgcolor=tf2_color, width=15, height=4, text_color=color.white)
table.cell(dmiTable, 3, 0, "30m Trend: " + tf3_trend, bgcolor=tf3_color, width=15, height=4, text_color=color.white)
table.cell(dmiTable, 4, 0, "1h Trend: " + tf4_trend, bgcolor=tf4_color, width=15, height=4, text_color=color.white)
table.cell(dmiTable, 5, 0, "Current Trend: " + current_trend, bgcolor=current_color, width=15, height=4, text_color=color.white)
// Strategy logic
if (longConditionEMA)
strategy.entry("Long", strategy.long)
if (shortConditionEMA)
strategy.entry("Short", strategy.short)