Esta estratégia usa principalmente uma combinação de média móvel simples e volume de negociação para determinar a direção da tendência do mercado.
A estratégia adota duas médias móveis simples de diferentes períodos para determinar a tendência do mercado. A média móvel de período mais curto pode capturar a tendência de mudança de preço mais rapidamente, enquanto o período mais longo ajuda a filtrar algum ruído. Um sinal de compra é gerado quando o período mais curto MA cruza o período mais longo um, indicando o início de uma tendência ascendente. Um sinal de venda é gerado quando o MA mais curto cruza abaixo do MA mais longo, indicando o início de uma tendência descendente.
Além disso, esta estratégia também incorpora um indicador de volume de negociação para confirmar os sinais de tendência.
Ao entrar em posições, a estratégia também considera os níveis dinâmicos de suporte / resistência para selecionar pontos de entrada apropriados. Ele só compra quando o preço está acima do nível de suporte e só vende quando o preço está abaixo do nível de resistência. Isso ajuda a mitigar o risco de flutuações em mercados de gama até certo ponto.
A estratégia apresenta as seguintes vantagens:
As regras do sinal são simples e claras, fáceis de entender e ajustar parâmetros, adequados para iniciantes em quant trading.
Combina a ação dos preços e a análise do volume para determinar melhor a tendência do mercado e filtrar falsas rupturas.
Ele usa níveis dinâmicos de suporte / resistência para selecionar o momento favorável de entrada para aliviar o risco de ser chicoteado.
Ele tem abundantes dados de backtest e os parâmetros passaram por múltiplas otimizações, levando a um desempenho ao vivo relativamente estável.
A estratégia apresenta igualmente alguns riscos potenciais, principalmente nos seguintes aspectos:
Como uma tendência de seguir a estratégia, pode sofrer perdas consistentes durante os mercados de gama.
A média móvel simples responde lentamente às mudanças de preço, incapaz de capturar reversões rápidas em tempo hábil.
Pode haver algum atraso na determinação dos níveis dinâmicos de suporte/resistência, não sendo possível evitar completamente os riscos de falha de ruptura.
A otimização acarreta o risco de sobreajuste.
Os riscos acima referidos podem ser atenuados por:
Ainda há muito espaço para melhorar esta estratégia:
Tente diferentes tipos de médias móveis, por exemplo, MA exponencial, KAMA.
Realizar uma análise multidimensional do volume, por exemplo, volume climático, encolhimento.
Ativar ajuste/actualização automática de parâmetros utilizando aprendizagem automática.
Adicionar indicadores de reversão para cortar perdas e reverter a posição em tempo hábil em mercados variados.
Incorporar dados fundamentais para determinar o justo valor das existências individuais.
Projeto de conjuntos de parâmetros específicos de referência e fluxos de trabalho de backtest.
Em resumo, esta é uma tendência típica seguindo o modelo de estratégia com alguma aplicabilidade geral. Ela sintetiza a ação do preço, volume e outras dimensões para filtrar o ruído efetivamente.
/*backtest start: 2023-12-16 00:00:00 end: 2024-01-15 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("PVSRA Strategy", overlay=true) // Price Action shortMaPeriod = input(50, "Short MA Period") longMaPeriod = input(25, "Long MA Period") shortMa = sma(close, shortMaPeriod) // Simple Moving Average for short period longMa = sma(close, longMaPeriod) // Simple Moving Average for long period // Volume Analysis volMaPeriod = input(25, "Volume MA Period") volMa = sma(volume, volMaPeriod) // Simple Moving Average for volume // Support and Resistance support = lowest(low, 30) resistance = highest(high, 30) // Entry Conditions longCondition = crossover(shortMa, longMa) and (volume > volMa) and (close > support) shortCondition = crossunder(shortMa, longMa) and (volume > volMa) and (close < resistance) // Plotting plot(shortMa, color=color.blue, title="Short MA") plot(longMa, color=color.red, title="Long MA") plot(support, color=color.green, title="Dynamic Support") plot(resistance, color=color.red, title="Dynamic Resistance") // Entering and Exiting Positions if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short)