Trem da Cruz de Ouro Seguindo a Estratégia

Autora:ChaoZhang, Data: 2023-11-01 17:02:14
Tags:

img

Resumo

Esta estratégia gera sinais de negociação baseados na cruz de ouro de médias móveis de curto e longo prazo para determinar pontos de entrada e define pontos de stop loss para posições de saída.

Estratégia lógica

A estratégia utiliza principalmente o cruzamento das médias móveis de curto e longo prazo para determinar a tendência do mercado.

  1. Calcular a média móvel simples de 3 dias short_ma como a média móvel de curto prazo.

  2. Calcular a média móvel simples de 19 dias long_ma como a média móvel de longo prazo.

  3. Quando short_ma cruza acima de long_ma, um sinal longo é gerado.

  4. Quando o preço subir acima do preço de entrada * (1 + % stop loss), feche todas as posições.

  5. Quando short_ma cruza abaixo de long_ma, um sinal curto é gerado.

  6. Testes de retrocesso num intervalo de datas específico para limitar o período de funcionamento da estratégia.

  7. Negociar apenas quando a média móvel de 100 dias trend_ma sugere uma tendência ascendente.

A estratégia utiliza a cruz de ouro das médias móveis. Durante uma tendência de alta sustentada, os sinais longos gerados quando o short_ma cruza acima do long_ma permitem que ele capture oportunidades. Os sinais curtos quando o short_ma cruza abaixo do long_ma ajudam a gerenciar riscos.

Análise das vantagens

As vantagens desta estratégia:

  1. Lógica simples e fácil de entender baseada em cruzamento de médias móveis.

  2. Regras claras de entrada e saída que sigam a tendência e gerem os riscos.

  3. Parar perdas para bloquear lucros quando a tendência se inverte.

  4. Só negocie quando a tendência geral estiver em alta para evitar sinais falsos.

  5. Períodos de média móvel personalizáveis adaptáveis a diferentes mercados.

  6. Os testes de retrocesso ao longo de períodos específicos permitem a validação.

Análise de riscos

Os riscos desta estratégia:

  1. Sensível ao ajuste de parâmetros, diferentes configurações afetam o desempenho.

  2. Curva adaptada a dados históricos, ineficaz em anomalias.

  3. Incapaz de lidar com as diferenças de preço, os riscos excedem o stop loss.

  4. São propensos a serem esfaqueados em mercados variados.

  5. Só funciona em mercados de tendências óbvias, não para lado.

  6. A selecção do período de ensaio posterior influencia os resultados.

Oportunidades de melhoria

A estratégia pode ser melhorada nos seguintes aspectos:

  1. Teste diferentes conjuntos de parâmetros para encontrar valores ótimos.

  2. Incorporar outros indicadores como MACD, Bollinger Bands para melhorar as decisões.

  3. Usar stop loss dinâmico para controlar melhor os riscos.

  4. Otimizar a entrada, a lógica de saída, como a entrada de fuga.

  5. Teste a robustez em diferentes condições de mercado.

  6. Explorar o aprendizado de máquina para ajuste de parâmetros e geração de sinal.

  7. Adicionar o tratamento de diferenças de preços e cenários de stop loss.

Conclusão

Esta estratégia simples e eficaz capta tendências de alta usando cruzes médias móveis e gerencia o risco através de stop loss. Ele tem um bom desempenho em mercados de forte tendência, mas tem limitações. Mais otimização e testes são necessários para melhorar a robustez.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Ta3MooChi
//@version=5
strategy("전략", overlay=true,process_orders_on_close = true, pyramiding = 100)

short_ma = ta.sma(close,input.int(3, "단기 이평", minval = 1))
long_ma = ta.sma(close, input.int(19,"장기 이평", minval = 1))

trend_ma = ta.sma(close, input.int(100," 추세 이평", minval = 20, group = "추세 이평"))
up_trend = (trend_ma > trend_ma[1])
use_trend_ma = input.bool(true, title = "추세용 이평 사용", group = "추세 이평" )
inTrendMa = not use_trend_ma or up_trend

useDateFilter = input.bool(true, title = "특정 기간 백테스트", group = "기간 백테스트")
backtestStartDate = input(timestamp("1 Jan 2021"), title = "시작날짜", group = "기간 백테스트")
backtestEndDate = input(timestamp("1 Jan 2022"), title = "종료날짜", group = "기간 백테스트")
inTradeWindow = true

longStopPerc = 1 + input.float(3, "최소수익률%", minval = 1)*0.01

longcondition = ta.crossover(short_ma, long_ma)
shortcondition = ta.crossunder(short_ma, long_ma)

if (longcondition) and inTradeWindow and inTrendMa
    strategy.entry("long", strategy.long)

if (shortcondition) and (close > strategy.position_avg_price*longStopPerc) and inTradeWindow
    strategy.close_all()

if not inTradeWindow and inTradeWindow[1]
    strategy.cancel_all()
    strategy.close_all(comment = "매매 종료")

plot(short_ma,color = color.yellow)
plot(long_ma,color = color.blue)
plot(trend_ma,color = color.gray)
    



Mais.