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.
A estratégia utiliza principalmente o cruzamento das médias móveis de curto e longo prazo para determinar a tendência do mercado.
Calcular a média móvel simples de 3 dias short_ma como a média móvel de curto prazo.
Calcular a média móvel simples de 19 dias long_ma como a média móvel de longo prazo.
Quando short_ma cruza acima de long_ma, um sinal longo é gerado.
Quando o preço subir acima do preço de entrada * (1 + % stop loss), feche todas as posições.
Quando short_ma cruza abaixo de long_ma, um sinal curto é gerado.
Testes de retrocesso num intervalo de datas específico para limitar o período de funcionamento da estratégia.
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.
As vantagens desta estratégia:
Lógica simples e fácil de entender baseada em cruzamento de médias móveis.
Regras claras de entrada e saída que sigam a tendência e gerem os riscos.
Parar perdas para bloquear lucros quando a tendência se inverte.
Só negocie quando a tendência geral estiver em alta para evitar sinais falsos.
Períodos de média móvel personalizáveis adaptáveis a diferentes mercados.
Os testes de retrocesso ao longo de períodos específicos permitem a validação.
Os riscos desta estratégia:
Sensível ao ajuste de parâmetros, diferentes configurações afetam o desempenho.
Curva adaptada a dados históricos, ineficaz em anomalias.
Incapaz de lidar com as diferenças de preço, os riscos excedem o stop loss.
São propensos a serem esfaqueados em mercados variados.
Só funciona em mercados de tendências óbvias, não para lado.
A selecção do período de ensaio posterior influencia os resultados.
A estratégia pode ser melhorada nos seguintes aspectos:
Teste diferentes conjuntos de parâmetros para encontrar valores ótimos.
Incorporar outros indicadores como MACD, Bollinger Bands para melhorar as decisões.
Usar stop loss dinâmico para controlar melhor os riscos.
Otimizar a entrada, a lógica de saída, como a entrada de fuga.
Teste a robustez em diferentes condições de mercado.
Explorar o aprendizado de máquina para ajuste de parâmetros e geração de sinal.
Adicionar o tratamento de diferenças de preços e cenários de stop loss.
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)