
Visão geral
A estratégia é uma estratégia de acompanhamento de tendências baseada em rupturas e filtragem de frequência, com apenas negociações em múltiplos pontos. A principal ideia da estratégia é usar o indicador EMA para determinar a direção da tendência atual, gerando múltiplos sinais quando o preço supera o preço mais alto dentro de um determinado intervalo, enquanto usa o filtro de frequência para controlar a frequência de negociação, evitando abrir posições com demasiada frequência.
Princípio da estratégia
- Calcular o indicador EMA, para determinar a direção da tendência atual. Quando o preço de fechamento está acima da EMA, a tendência atual é considerada como multifacetada.
- Calcula-se o preço máximo dentro de um determinado intervalo, como condição de ruptura. Quando o preço de fechamento supera o preço máximo no período de retração mais curto ou no período de retração mais longo, e a tendência atual é multi-cabeça, gera-se um sinal de fazer mais.
- Introdução de filtros de frequência para controlar o intervalo mínimo de abertura de posições consecutivas, evitando a frequência de transação excessiva.
- Estabelecer um ponto de parada, fechar uma posição quando o preço cai abaixo do ponto de parada, controlar o risco.
- Definir um sinal de fim de tendência, quando o preço de fechamento cai abaixo da EMA, é considerado o fim da tendência, e, nesse momento, se houver mais opções, é eliminado.
Vantagens estratégicas
- Seguimento de tendências: determinar a direção da tendência através dos indicadores EMA e negociar de acordo com a tendência, ajudando a aumentar os lucros da estratégia.
- Confirmação de ruptura: usa a ruptura de preço como sinal de entrada, permitindo a entrada oportuna no início da tendência, capturando mais espaço de lucro.
- Controle de frequência: introdução de filtros de frequência para controlar o intervalo de tempo de abertura de posições, evitando transações excessivamente frequentes e reduzindo custos e riscos de transação.
- Proteção de stop loss: estabelecer um ponto de stop loss, quando o preço de reversão de flutuação atinge uma certa amplitude, parar de tempo, controlar eficazmente o risco de queda.
- Equilíbrio dinâmico: equilíbrio dinâmico de acordo com o sinal de término da tendência, que permite bloquear os ganhos em tempo hábil e evitar perdas causadas pela reversão da tendência.
Risco estratégico
- Sensibilidade a parâmetros: o desempenho da estratégia é sensível à seleção de parâmetros. Diferentes configurações de parâmetros podem causar grandes diferenças no desempenho da estratégia.
- Falha de ruptura: A ruptura de preço não garante a continuação da tendência, e pode ocorrer uma falha de ruptura, resultando em perdas contínuas na estratégia.
- Identificação de tendências: a estratégia depende do indicador EMA para determinar as tendências, mas o indicador EMA pode ter atrasos ou erros de julgamento, afetando a precisão da estratégia.
- Negociação Frequente: Apesar da introdução de filtros de frequência na estratégia, é possível abrir e fechar posições com frequência quando há grande volatilidade no mercado, aumentando os custos de negociação.
- Risco de stop loss: a configuração do ponto de stop loss pode não evitar completamente a retirada máxima da estratégia, podendo ainda ocorrer grandes perdas em situações extremas.
Direção de otimização da estratégia
- Optimização de parâmetros: Otimização de parâmetros-chave da estratégia, como a duração do EMA, a duração do período de retrocesso e a porcentagem de parada, para encontrar a melhor combinação de parâmetros e melhorar a estabilidade e a rentabilidade da estratégia.
- Filtragem de sinais: após a geração de um sinal de ruptura, pode-se introduzir outros indicadores técnicos ou condições para a segunda confirmação do sinal, melhorar a qualidade do sinal e reduzir o erro de julgamento e falso sinal.
- Determinação de tendências: pode-se tentar usar outros indicadores de determinação de tendências, como MACD, DMI, etc., ou combinar vários indicadores para determinar as tendências, aumentando a precisão da identificação de tendências.
- Stop loss dinâmico: ajuste dinâmico do ponto de parada de acordo com a flutuação do mercado, por exemplo, usando o indicador ATR para calcular o preço de stop loss dinâmico, ou introduzir estratégias de stop loss de rastreamento para melhor controlar o risco.
- Gerenciamento de posições: otimização da estratégia de gerenciamento de posições, ajustamento dinâmico do tamanho das posições de acordo com a flutuação do mercado e a situação dos fundos da conta, controle da abertura de risco de uma única transação e melhoria da eficiência do uso de fundos.
Resumir
A estratégia é uma estratégia de acompanhamento de tendências baseada em rupturas e filtragem de frequência, que determina a direção da tendência através dos indicadores EMA, usa a ruptura de preço como sinal de entrada e, ao mesmo tempo, introduz o filtro de frequência para controlar a frequência de negociação e configurar o risco de controle de stop loss. Os benefícios da estratégia consistem em acompanhamento de tendências, confirmação de rupturas, controle de frequência, proteção de stop loss e equilíbrio dinâmico, mas também há riscos potenciais, como sensibilidade a parâmetros, identificação de tendências de ruptura e fracasso, negociação frequente e risco de parada.
Código-fonte da estratégia
/*backtest
start: 2023-05-22 00:00:00
end: 2024-05-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Trend Following with Breakout and Frequency Filter (Long Only)", overlay=true)
// 输入参数
emaLength = input.int(50, title="EMA长度")
lookbackPeriodMin = input.int(80, title="最短回溯期")
lookbackPeriodMax = input.int(120, title="最长回溯期")
stopLossPct = input.float(2, title="止损百分比") / 100 // 止损百分比
minHoldBars = input.int(10, title="最小持仓K线数量") // 最小持仓K线数量
// 计算EMA
ema = ta.ema(close, emaLength)
// 计算最高价和最低价
highestHigh = ta.highest(high, lookbackPeriodMax)
lowestLow = ta.lowest(low, lookbackPeriodMax)
// 定义趋势方向
isBullish = close > ema
// 定义突破信号
breakoutCondition = (ta.crossover(close, highestHigh[lookbackPeriodMin]) or ta.crossover(close, highestHigh[lookbackPeriodMax])) and isBullish
// 计算止损点
stopLossLevelLong = close * (1 - stopLossPct)
// 绘制EMA
plot(ema, title="EMA", color=color.blue)
// 记录上次开仓时间
var float lastEntryTime = na
// 策略执行并标注信号
if (breakoutCondition and (na(lastEntryTime) or (time - lastEntryTime) > minHoldBars * timeframe.multiplier))
strategy.entry("做多", strategy.long)
label.new(bar_index, high, text="买入", style=label.style_label_up, color=color.green, textcolor=color.white)
strategy.exit("止损", from_entry="做多", stop=stopLossLevelLong)
lastEntryTime := time
// 定义趋势结束信号
exitCondition = close < ema
if (exitCondition and (strategy.position_size > 0) and (time - lastEntryTime) > minHoldBars * timeframe.multiplier)
strategy.close("做多")
label.new(bar_index, low, text="卖出", style=label.style_label_down, color=color.red, textcolor=color.white)