A estratégia é um sistema de negociação de acompanhamento de tendências baseado em cruzamentos de pares e otimização de tempo. Utiliza cruzamentos de médias móveis de curto e longo prazo para gerar sinais de compra e venda, em combinação com janelas de tempo de negociação específicas para otimizar a execução de negociações. A estratégia também inclui vários preços-alvo e níveis de parada para gerenciar riscos e ganhos.
O princípio central desta estratégia é o uso de médias móveis de dois períodos diferentes (MA) para identificar tendências de mercado e gerar sinais de negociação.
MA de curto prazo e MA de longo prazo: a estratégia usa dois períodos de médias móveis personalizadas pelo usuário para representar tendências de mercado de curto e longo prazo, respectivamente.
Sinal de cruzamento: quando o MA curto sobe através do MA longo, gera um sinal de compra; quando o MA curto desce através do MA longo, gera um sinal de venda.
Otimização de tempo: A estratégia introduziu o conceito de janela de tempo de negociação, executando transações apenas no intervalo de tempo UTC especificado pelo usuário, o que ajuda a evitar períodos de maior volatilidade ou menos liquidez no mercado.
Preço de alvo múltiplo: a estratégia define dois preços de alvo para cada transação (Target_1 e Target_2), permitindo um lucro intercalado.
Gerenciamento de riscos: cada transação tem um ponto de parada para limitar os possíveis prejuízos.
Visualização: A estratégia mostra os sinais de compra e venda e os rótulos dos preços atingidos nos gráficos, o que ajuda os comerciantes a entender intuitivamente a dinâmica do mercado.
Seguimento de tendências: A estratégia é capaz de capturar as tendências do mercado de forma eficaz, aumentando as oportunidades de lucro através da utilização de cruzamentos de médias móveis.
Otimização de tempo: Ao limitar a janela de tempo de negociação, a estratégia pode se concentrar nos momentos mais ativos e lucrativos do mercado, aumentando a eficiência das negociações.
Gerenciamento de risco: o preço de alvo múltiplo e a configuração de stop loss ajudam a equilibrar o risco e o retorno, protegendo a segurança do capital.
Flexibilidade: O usuário pode ajustar o ciclo de MA, o preço-alvo e a janela de tempo de negociação de acordo com as preferências pessoais e as características do mercado.
Auxílio visual: Os traders podem entender melhor o desempenho da estratégia, marcando os sinais de compra e venda e a chegada do preço-alvo em um gráfico.
Negociação bidirecional: a estratégia suporta tanto ações ativos quanto ações ativos, permitindo a busca de oportunidades em vários cenários de mercado.
Risco de mercado de turbulência: em mercados de turbulência horizontal, o frequente cruzamento de MA pode levar a excesso de falsos sinais e custos de negociação.
Risco de deslizamento: em mercados rápidos, o preço de transação real pode ser significativamente diferente do preço no momento em que o sinal é gerado.
Excessiva dependência de dados históricos: a média móvel é um indicador atrasado e pode não reagir rapidamente quando o mercado muda drasticamente.
Limitações de janela de tempo: restrições de tempo de negociação rígidas podem levar a perder oportunidades de mercado importantes.
Risco de stop-loss fixo: o stop-loss com um número fixo de pontos pode não ser suficientemente flexível em períodos de alta volatilidade.
Excesso de negociação: Em certas condições de mercado, a estratégia pode gerar excesso de sinais de negociação, aumentando os custos de negociação.
Ajustamento de parâmetros dinâmicos: considerar a introdução de mecanismos de adaptação para ajustar o ciclo de MA e os parâmetros de negociação de acordo com a dinâmica de volatilidade do mercado.
Adicionar um filtro de taxa de flutuação: antes de gerar um sinal de negociação, avaliar a taxa de flutuação do mercado para evitar a negociação excessiva em períodos de baixa volatilidade.
Melhorar o mecanismo de stop loss: pode-se considerar o uso de stop loss dinâmico baseado no ATR (Average True Range) para se adaptar a diferentes condições de mercado.
Integrar outros indicadores técnicos, como RSI ou MACD, para confirmar a força da tendência e melhorar a qualidade do sinal.
Otimização de retrospectiva: realização de uma retrospectiva mais ampla de dados históricos para encontrar a combinação de parâmetros e configurações de janela de tempo mais ótimas.
Otimização de gestão de fundos: implementação de estratégias de gestão de posições mais complexas, como o ajuste do tamanho de transação com base no tamanho da conta e na volatilidade do mercado.
Considerar os fatores fundamentais: ajustar a estratégia antes e depois do lançamento de dados econômicos importantes e evitar negociar em períodos de alta incerteza.
Integração de aprendizagem de máquina: explora o processo de geração de sinais e seleção de parâmetros de otimização usando algoritmos de aprendizagem de máquina.
A estratégia de negociação de volume de dupla linha de equilíbrio é um sistema de acompanhamento de tendências que combina análise técnica e otimização de tempo. A estratégia visa capturar tendências de mercado e otimizar a execução de negociações, utilizando o cruzamento de médias móveis e janelas de tempo de negociação cuidadosamente projetadas. Embora tenha vantagens como a intuitividade e a flexibilidade, a estratégia também enfrenta riscos de negociação como a volatilidade e o excesso de mercado.
/*backtest
start: 2024-07-23 00:00:00
end: 2024-07-30 00:00:00
period: 2m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Gold Trend Trader", shorttitle="Gold Trader", overlay=true)
// User-defined input for moving averages
shortMA = input.int(10, minval=1, title="Short MA Period")
longMA = input.int(100, minval=1, title="Long MA Period")
target_1 = input.int(100, minval=1, title="Target_1")
target_2 = input.int(150, minval=1, title="Target_2")
// User-defined input for the start and end times with default values
startTimeInput = input.int(12, title="Start Time for Session (UTC, in hours)", minval=0, maxval=23)
endTimeInput = input.int(17, title="End Time Session (UTC, in hours)", minval=0, maxval=23)
// Convert the input hours to minutes from midnight
startTime = startTimeInput * 60
endTime = endTimeInput * 60
// Function to convert the current exchange time to UTC time in minutes
toUTCTime(exchangeTime) =>
exchangeTimeInMinutes = exchangeTime / 60000
// Adjust for UTC time
utcTime = exchangeTimeInMinutes % 1440
utcTime
// Get the current time in UTC in minutes from midnight
utcTime = toUTCTime(time)
// Check if the current UTC time is within the allowed timeframe
isAllowedTime = (utcTime >= startTime and utcTime < endTime)
// Calculating moving averages
shortMAValue = ta.sma(close, shortMA)
longMAValue = ta.sma(close, longMA)
// Plotting the MAs
plot(shortMAValue, title="Short MA", color=color.blue)
plot(longMAValue, title="Long MA", color=color.red)
// Tracking buy and sell signals
var float buyEntryPrice_1 = na
var float buyEntryPrice_2 = na
var float sellEntryPrice_1 = na
var float sellEntryPrice_2 = na
// Logic for Buy and Sell signals
buySignal = ta.crossover(shortMAValue, longMAValue) and isAllowedTime
sellSignal = ta.crossunder(shortMAValue, longMAValue) and isAllowedTime
// Entry conditions for long and short trades
if (buySignal)
strategy.entry("Buy_1", strategy.long)
strategy.exit("TP_1", "Buy_1", limit=close + target_1, stop=close - 100)
strategy.entry("Buy_2", strategy.long)
strategy.exit("TP_2", "Buy_2", limit=close + target_2, stop=close - 1500)
if (sellSignal)
strategy.entry("Sell_1", strategy.short)
strategy.exit("TP_3", "Sell_1", limit=close - target_1, stop=close + 100)
strategy.entry("Sell_2", strategy.short)
strategy.exit("TP_4", "Sell_2", limit=close - target_2, stop=close + 150)
// Apply background color for entry candles
barcolor(buySignal ? color.green : sellSignal ? color.red : na)
// Creating buy and sell labels
if (buySignal)
label.new(bar_index, low, text="BUY", style=label.style_label_up, color=color.green, textcolor=color.white, yloc=yloc.belowbar)
if (sellSignal)
label.new(bar_index, high, text="SELL", style=label.style_label_down, color=color.red, textcolor=color.white, yloc=yloc.abovebar)
// Creating labels for 100-point movement
if (not na(buyEntryPrice_1) and close >= buyEntryPrice_1 + target_1)
label.new(bar_index, high, text=str.tostring(target_1), style=label.style_label_down, color=color.green, textcolor=color.white, yloc=yloc.abovebar)
buyEntryPrice_1 := na // Reset after label is created
if (not na(buyEntryPrice_2) and close >= buyEntryPrice_2 + target_2)
label.new(bar_index, high, text=str.tostring(target_2), style=label.style_label_down, color=color.green, textcolor=color.white, yloc=yloc.abovebar)
buyEntryPrice_2 := na // Reset after label is created
if (not na(sellEntryPrice_1) and close <= sellEntryPrice_1 - target_1)
label.new(bar_index, low, text=str.tostring(target_1), style=label.style_label_up, color=color.red, textcolor=color.white, yloc=yloc.belowbar)
sellEntryPrice_1 := na // Reset after label is created
if (not na(sellEntryPrice_2) and close <= sellEntryPrice_2 - target_2)
label.new(bar_index, low, text=str.tostring(target_2), style=label.style_label_up, color=color.red, textcolor=color.white, yloc=yloc.belowbar)
sellEntryPrice_2 := na // Reset after label is created