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

Sistema de negociação de suporte dinâmico de duplo prazo

Autora:ChaoZhang, Data: 2024-12-05 16:44:56
Tags:SMAEMA

img

Resumo

Esta estratégia é um sistema de negociação de suporte dinâmico de quadro de tempo duplo que combina sinais de cruzamento de SMA e EMA em quadros de tempo semanais e diários. O sistema utiliza bandas de suporte formadas entre médias móveis para identificar tendências de mercado e oportunidades de negociação, aumentando a precisão da negociação através da confirmação de sinais de dois períodos de tempo diferentes. A estratégia emprega gerenciamento de posição baseado em porcentagem e contabiliza custos de negociação e deslizamento.

Princípios de estratégia

O princípio central gira em torno do acompanhamento das cruzações das médias móveis e das posições relativas em dois prazos:

  1. O prazo longo (semanal) utiliza a SMA de 20 semanas e a EMA de 21 semanas, o prazo curto (diário) utiliza a SMA de 50 dias e a EMA de 51 dias
  2. No longo prazo, os sinais longos são gerados quando a EMA cruza acima da SMA e as posições são fechadas em cruzes descendentes.
  3. No curto prazo, os sinais longos ocorrem quando a EMA cruza acima da SMA e a EMA de curto prazo está acima da EMA de longo prazo.
  4. Todas as posições longas são fechadas quando um curto período de tempo gera sinais curtos ou um longo período de tempo apresenta cruzes descendentes
  5. A estratégia opera dentro de intervalos de tempo especificados com encerramento automático de posições fora destes intervalos

Vantagens da estratégia

  1. Mecanismo de confirmação múltipla: reduz os falsos sinais através da confirmação de dois prazos
  2. Banda de apoio dinâmica: as bandas de apoio entre as médias móveis adaptam-se às alterações do mercado
  3. Gerenciamento de riscos abrangente: inclui a consideração dos custos de negociação e do deslizamento com dimensionamento das posições baseado em percentagem
  4. Forte adaptabilidade: as faixas de apoio ajustam-se automaticamente à volatilidade do mercado
  5. Regras operacionais claras: condições de entrada e saída bem definidas, fáceis de aplicar e backtest

Riscos estratégicos

  1. Risco de mercado agitado: pode gerar sinais falsos frequentes em mercados laterais
  2. Risco de atraso: as médias móveis têm atraso inerente, potencialmente faltando pontos de entrada ideais
  3. Sensibilidade dos parâmetros: o desempenho da estratégia depende muito da selecção da média móvel do período
  4. Dependência do ambiente de mercado: apresenta melhores resultados em mercados em tendência, mas pode ter dificuldades em condições altamente voláteis
  5. Risco de dimensionamento da posição: a posicionamento em percentagem fixa pode apresentar um risco excessivo em determinadas condições de mercado

Orientações de otimização

  1. Incorporar indicadores de volatilidade: considerar a adição de ATR para o dimensionamento dinâmico das posições
  2. Optimizar a seleção de parâmetros: testar para trás diferentes períodos de média móvel para otimizar o desempenho do sistema
  3. Adicionar filtros de ambiente de mercado: implementar indicadores de força de tendência para filtrar condições de mercado inadequadas
  4. Melhorar os mecanismos de stop-loss: considerar a adição de trailing ou stop fixos para um melhor controlo do risco
  5. Melhorar a gestão das posições: ajustar dinamicamente as posições com base na força do sinal e na volatilidade do mercado

Conclusão

Esta estratégia constrói um sistema de negociação relativamente robusto, combinando sinais de cruzamento de média móvel de diferentes prazos. Identifica as tendências do mercado através do conceito de banda de suporte e usa vários mecanismos de confirmação para melhorar a precisão da negociação. O design da estratégia considera vários fatores práticos de negociação, incluindo custos de negociação, deslizamento e gerenciamento de tempo.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-04 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Demo GPT - Bull Market Support Band", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value=0.1, slippage=3)

start_date = input(timestamp("2018-01-01 00:00 +0000"), title="Start Date")
end_date = input(timestamp("2069-12-31 00:00 +0000"), title="End Date")

lsmaLength = input.int(20, title="Long SMA Length", minval=1)
lemaLength = input.int(21, title="Long EMA Length", minval=1)
customLongTimeframe = input.timeframe("W", title="Long Timeframe")  // Khung thời gian dài
ssmaLength = input.int(50, title="Short SMA Length", minval=1)
semaLength = input.int(51, title="Short EMA Length", minval=1)
customShortTimeframe = input.timeframe("D", title="Short Timeframe")  // Khung thời gian ngắn

source = close

// Tính toán SMA và EMA cho khung thời gian dài
smaLong = ta.sma(source, lsmaLength)
emaLong = ta.ema(source, lemaLength)
outSmaLong = request.security(syminfo.tickerid, customLongTimeframe, smaLong)
outEmaLong = request.security(syminfo.tickerid, customLongTimeframe, emaLong)

// Tính toán SMA và EMA cho khung thời gian ngắn
smaShort = ta.sma(source, ssmaLength)
emaShort = ta.ema(source, semaLength)
outSmaShort = request.security(syminfo.tickerid, customShortTimeframe, smaShort)
outEmaShort = request.security(syminfo.tickerid, customShortTimeframe, emaShort)

// Plot các chỉ báo trên biểu đồ
smaPlotLong = plot(outSmaLong, color=color.new(color.red, 0), title='20w SMA (Long)')
emaPlotLong = plot(outEmaLong, color=color.new(color.green, 0), title='21w EMA (Long)')
smaPlotShort = plot(outSmaShort, color=color.new(color.red, 0), title='20d SMA (Short)')
emaPlotShort = plot(outEmaShort, color=color.new(color.green, 0), title='21d EMA (Short)')

// Fill vùng giữa các đường SMA và EMA
fill(smaPlotLong, emaPlotLong, color=color.new(color.orange, 75), fillgaps=true)
fill(smaPlotShort, emaPlotShort, color=color.new(color.orange, 75), fillgaps=true)

// Điều kiện long và short cho khung thời gian dài
longConditionLong = ta.crossover(outEmaLong, outSmaLong)
shortConditionLong = ta.crossunder(outEmaLong, outSmaLong)

// Điều kiện long và short cho khung thời gian ngắn
longConditionShort = ta.crossover(outEmaShort, outSmaShort) and (outEmaShort > outEmaLong)
shortConditionShort = ta.crossunder(outEmaShort, outSmaShort) and (outEmaShort > outEmaLong) // Điều kiện short khi EMA ngắn hạn cắt xuống dưới SMA ngắn hạn và EMA ngắn hạn cao hơn EMA dài hạn

// Kiểm tra điều kiện trong khoảng thời gian được chỉ định
inDateRange = true

// Nếu khung ngắn hạn xuất hiện tín hiệu short, ưu tiên đóng tất cả các lệnh Long
if shortConditionShort and inDateRange
    strategy.close_all()

// Nếu khung dài có tín hiệu short, đóng tất cả các lệnh Long
if shortConditionLong and inDateRange
    strategy.close_all()

// Nếu khung ngắn hạn có tín hiệu long và không có tín hiệu short từ khung dài, vào lệnh Long
if longConditionShort and not shortConditionLong and not shortConditionShort and inDateRange
    strategy.entry("Long", strategy.long)

// Đóng tất cả các lệnh khi không trong khoảng thời gian được chọn
if not inDateRange
    strategy.close_all()


Relacionados

Mais.