
A estratégia é um sistema de negociação quantitativa baseado no cruzamento de médias móveis de dois índices (EMA) e no filtro de média real de volatilidade (ATR), projetado especificamente para ambientes de mercado altamente voláteis. Combina os benefícios do acompanhamento de tendências com filtros de volatilidade, buscando o melhor retorno de ajuste de risco em mercados de alta IV (implicada volatilidade). O núcleo da estratégia é determinar a direção da tendência por meio de um fator de interseção entre um EMA rápido (dia 10) e um EMA lento (dia 30), enquanto usa o ATR e seus derivados para identificar ambientes de mercado altamente voláteis, garantindo a entrada de negociação somente quando a volatilidade é alta o suficiente, aumentando assim a taxa de Sharpe.
A estratégia baseia-se em dois conjuntos de indicadores tecnológicos:
Indicadores de tendência:
Indicadores de flutuação:
A lógica de negociação da estratégia é clara: quando a média curta ((EMA_fast) atravessa a média longa ((EMA_slow) para cima, formando um golden fork, e o ATR atual é superior a sua média mais um desvio padrão, gera-se um sinal múltiplo; quando a média curta atravessa a média longa para baixo, formando um dead fork, e satisfaz as mesmas condições de ATR, gera-se um zero. O sinal de saída é um reverso de tendência (a média cruza novamente) ou uma queda significativa na volatilidade (a ATR é inferior à média menos um desvio padrão).
Para controlar o risco, a estratégia configura um stop loss dinâmico baseado no ATR (preço de entrada + 2*ATR) e Stop Stop ((Preço de entrada + 4*ATR), e implementa uma gestão de posições dinâmica baseada na proporção de fundos da conta e na volatilidade do mercado, garantindo que o risco de uma única transação não exceda 1% -2% dos fundos da conta.
Captura de ambientes de alta volatilidade: a estratégia garante que a negociação ocorra apenas em ambientes de alta volatilidade por meio do filtro ATR, o que lhe permite aproveitar ao máximo as flutuações de preços durante a turbulência do mercado e aumentar o potencial de ganhos.
Retorno ajustado ao risco: Combinação de acompanhamento de tendências e filtragem de volatilidade, evitando negociações ineficazes em períodos de baixa volatilidade, aumentando significativamente a relação retorno/risco, ou seja, a taxa de Sharpe.
Adaptabilidade: O mecanismo de gestão de stop loss e posições dinâmicas baseado no ATR pode ser automaticamente ajustado de acordo com as condições do mercado, permitindo que a estratégia mantenha o controle de risco adequado em diferentes ambientes de volatilidade.
Optimização de parâmetros: vários parâmetros-chave da estratégia (como o ciclo EMA, o limite ATR e os fatores de risco) podem ser otimizados de acordo com as condições específicas do mercado, aumentando a adaptabilidade do sistema.
Eficiência e simplicidade: O design baseado em dados de linha de sol permite a implementação de estratégias relativamente simples, com um pequeno volume de cálculo, adequado para comerciantes de frequência média, sem a necessidade de suporte de dados de alta frequência.
Risco de Falso Breakout: Em mercados turbulentos, o cruzamento de equilíbrio pode produzir falsos sinais, resultando em negociações frequentes e perdas. A solução é adicionar outros indicadores de confirmação, como volume de negociação ou RSI, para filtrar falsos sinais.
Efeitos sobre os custos de negociação: negociações frequentes em mercados altamente voláteis podem levar a custos de negociação mais elevados, incluindo comissões e pontos de deslizamento. É recomendável levar em conta esses custos na retrospectiva e reduzir a frequência de negociação, possivelmente aumentando o tempo de posse ou aumentando o limiar de entrada.
Risco de retirada: Embora a estratégia tenha um mecanismo de parada de perdas, em condições de mercado extremas (como salto ou queda), os perdas reais podem ser maiores do que o esperado. É recomendado definir limites de risco total da conta para garantir que o risco acumulado de todas as posições seja aceitável.
Sensibilidade de parâmetros: a performance da estratégia pode ser sensível à escolha de parâmetros, e diferentes ambientes de mercado podem exigir diferentes configurações de parâmetros. A solução é re-otimizar os parâmetros periodicamente ou adotar métodos de parâmetros adaptativos.
Mudanças no cenário de mercado: em mercados com baixa volatilidade ou sem tendências, as estratégias podem não ter sinais de negociação por longos períodos ou gerar sinais de má eficácia. Pode-se considerar alternar estratégias diferentes em diferentes cenários de mercado.
Filtragem de taxa de flutuação em vários níveis: pode-se introduzir indicadores de taxa de flutuação em vários períodos de tempo, como o ATR de curto, médio e longo prazo, garantindo que as condições de alta flutuação sejam atendidas em diferentes escalas de tempo para a entrada, reduzindo os falsos sinais.
Aprendizagem automática: Algoritmos de aprendizagem automática podem ser introduzidos para prever tendências e oscilações, como o uso de LSTM ou modelos de floresta aleatória para prever futuros níveis de ATR e tendências de preços, melhorando a qualidade do sinal.
Parâmetros de auto-adaptação: realização de ajustes de auto-adaptação de EMAs e ATRs em diferentes períodos de mercado, como o ajuste automático de parâmetros para adaptar-se a mudanças no estado do mercado, aumentando a robustez da estratégia.
Integração de indicadores de sentimento: introdução de indicadores de sentimento do mercado, como o VIX (indice de volatilidade), dados de fluxo de capital ou mercado de opções, aumento da base de confirmação de sinais de entrada e melhoria da qualidade do sinal.
Optimização de stop loss: permite a implementação de estratégias de stop loss e stop loss mais complexas, como stop loss móvel baseada em ATR ou stop loss inteligente baseada em pontos de suporte/resistência, para aumentar a taxa de ganho.
Adaptabilidade multi-mercado: ampliação da estratégia para que ela possa operar simultaneamente em vários mercados relevantes, aproveitando a correlação e as diferenças de volatilidade entre os mercados para dispersar riscos e aumentar oportunidades.
Classificação do cenário de mercado: desenvolvimento de módulos de identificação do cenário de mercado para ajustar os parâmetros da estratégia ou a lógica de negociação em diferentes cenários de mercado (trends, turbulências, alta e baixa volatilidade, etc.) para melhorar o desempenho da estratégia durante todo o tempo.
A estratégia de Sharpie é um sistema de negociação quantitativa que combina o acompanhamento de tendências e a filtragem de taxas de flutuação, buscando um alto retorno após o ajuste de risco, negociando apenas em ambientes de alta volatilidade. A estratégia determina a direção da tendência através do cruzamento de linhas médias rápidas e lentas, enquanto usa indicadores relacionados ao ATR para garantir que o mercado esteja em um estado de alta volatilidade, aumentando a qualidade do sinal de negociação.
O mecanismo dinâmico de stop loss e gerenciamento de posições permite que a estratégia controle o risco de forma eficaz e se adapte a diferentes condições de mercado. Embora existam riscos como falsas rupturas, custos de transação e sensibilidade de parâmetros, a robustez e o desempenho da estratégia devem ser melhorados com a introdução de filtros de taxa de flutuação em vários níveis, integração de indicadores emocionais e aprimoramento de aprendizagem de máquina.
Este é um quadro de estratégia a considerar para os comerciantes de quantidade que procuram obter maiores retornos de ajuste de risco em mercados de alta volatilidade. Antes da implantação real, é recomendável fazer um bom histórico de retrospectiva e otimização de parâmetros e ajustar os parâmetros da estratégia de acordo com as características específicas do mercado para obter o melhor resultado de negociação.
/*backtest
start: 2025-02-17 00:00:00
end: 2025-02-24 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=6
strategy("Aggressive Strategy for High IV Market", overlay=true)
// 用户输入
ema_fast_length = input.int(10, title="Fast EMA Length")
ema_slow_length = input.int(30, title="Slow EMA Length")
atr_length = input.int(14, title="ATR Length")
atr_mean_length = input.int(20, title="ATR Mean Length")
atr_std_length = input.int(20, title="ATR Std Dev Length")
risk_factor = input.float(0.01, title="Risk Factor") // 单笔交易风险占账户资金的百分比
slippage = input.float(0.001, title="Slippage") // 假设滑点
// 计算EMA、ATR、均值、标准差
ema_fast = ta.ema(close, ema_fast_length)
ema_slow = ta.ema(close, ema_slow_length)
atr_value = ta.atr(atr_length)
atr_mean = ta.sma(atr_value, atr_mean_length)
atr_std = ta.stdev(atr_value, atr_std_length)
// 进场条件
long_condition = ta.crossover(ema_fast, ema_slow) and atr_value > (atr_mean + atr_std)
short_condition = ta.crossunder(ema_fast, ema_slow) and atr_value > (atr_mean + atr_std)
// 止损与止盈设置
long_stop_loss = close - 2 * atr_value // 基于ATR的止损
long_take_profit = close + 4 * atr_value // 基于ATR的止盈
short_stop_loss = close + 2 * atr_value // 基于ATR的止损
short_take_profit = close - 4 * atr_value // 基于ATR的止盈
// 动态仓位控制
position_size_calc = (strategy.equity * risk_factor) / (2 * atr_value)
position_size = math.min(position_size_calc, strategy.equity) // 限制仓位不能大于账户总值
// 进场与出场信号
if (long_condition)
strategy.entry("Long", strategy.long, qty=position_size)
if (short_condition)
strategy.entry("Short", strategy.short, qty=position_size)
// 止损与止盈
strategy.exit("Take Profit/Stop Loss Long", "Long", stop=long_stop_loss, limit=long_take_profit)
strategy.exit("Take Profit/Stop Loss Short", "Short", stop=short_stop_loss, limit=short_take_profit)
// 绘制图表
plot(ema_fast, title="Fast EMA", color=color.blue, linewidth=2)
plot(ema_slow, title="Slow EMA", color=color.orange, linewidth=2)
plot(long_stop_loss, title="Long Stop Loss", color=color.red, linewidth=1, style=plot.style_line)
plot(long_take_profit, title="Long Take Profit", color=color.green, linewidth=1, style=plot.style_line)
plot(short_stop_loss, title="Short Stop Loss", color=color.red, linewidth=1, style=plot.style_line)
plot(short_take_profit, title="Short Take Profit", color=color.green, linewidth=1, style=plot.style_line)
// 显示信号
bgcolor(long_condition ? color.new(color.green, 90) : na, title="Long Signal Background")
bgcolor(short_condition ? color.new(color.red, 90) : na, title="Short Signal Background")