Estratégia de otimização de stop loss adaptável de rastreamento de tendência SAR multiperíodo

PSAR AF EP SAR SL TS MM
Data de criação: 2025-02-18 13:48:30 última modificação: 2025-02-18 13:48:30
cópia: 1 Cliques: 391
1
focar em
1617
Seguidores

Estratégia de otimização de stop loss adaptável de rastreamento de tendência SAR multiperíodo

Visão geral

Esta estratégia é baseada em uma linha de paralisação tradicional SAR (Parabolic Stop and Reverse) indicador de profundidade de otimização, combinado com o juízo de tendência de múltiplos períodos e um mecanismo de parada de perda auto-adaptável. A estratégia utiliza o método de ajuste do fator de aceleração dinâmica (AF) para acompanhar a tendência do mercado através da atualização contínua do ponto de extremo (EP), para obter uma compreensão precisa da tendência ascendente e controle de risco.

Princípio da estratégia

A lógica central da estratégia é baseada nos seguintes elementos-chave:

  1. Cálculo de SAR dinâmico: usando o fator de aceleração inicial ((AF), o valor de aceleração e o valor máximo de três parâmetros, ajuste o valor de SAR dinâmico de acordo com a intensidade da tendência.
  2. Mecanismo de determinação de tendências: determina a direção da tendência comparando o valor SAR com a relação de posição do preço, e aciona um sinal de reversão de tendência quando o SAR atravessa o preço.
  3. Lógica de entrada: quando se confirma uma tendência ascendente e não se mantém uma posição, o SAR previsto para o próximo ciclo é usado como ponto de parada para a configuração de uma ordem de entrada.
  4. Optimização de stop loss: Utiliza o valor máximo das primeiras 1-2 linhas K como referência de ajuste de SAR para melhorar a precisão e a pontualidade do stop loss.

Vantagens estratégicas

  1. Adaptabilidade: A estratégia pode ajustar os parâmetros automaticamente de acordo com a intensidade das flutuações do mercado, através de ajustes dinâmicos do fator de aceleração.
  2. Controle de risco perfeito: Stop Losses com o uso de configurações de SAR previsíveis, garantindo a previsibilidade e a eficácia do stop loss.
  3. A tendência é capturada com precisão: o mecanismo de confirmação de tendências múltiplas reduz o risco de falsas rupturas.
  4. A lógica de cálculo é rigorosa: um mecanismo de manutenção de estado de variável é adotado para garantir a estabilidade da estratégia no histórico de retrocesso.

Risco estratégico

  1. Risco de mercado de choque: O mercado de choque horizontal pode desencadear frequentemente sinais falsos, resultando em perdas contínuas. Solução: Filtros de volatilidade podem ser introduzidos para reduzir a frequência de negociação em ambientes de baixa volatilidade.
  2. Efeitos de deslizamento: o SAR previsivo pode ser suspenso em mercados de alta volatilidade. Resposta: Recomenda-se a definição de tolerâncias razoáveis de deslizamento e ajuste de parâmetros de acordo com as características da variedade.
  3. Atraso de reversão de tendência: pode haver um atraso de parada de perda em uma reversão acentuada. Solução: pode ser combinada com um critério auxiliar de um indicador de movimento de curto período, aumentando a sensibilidade para a parada.

Direção de otimização da estratégia

  1. Sincronização multi-período: recomenda-se a adição de mecanismos de confirmação de tendências para vários períodos de tempo, aumentando a confiabilidade do sinal.
  2. Otimização de parâmetros dinâmicos: configuração de parâmetros do fator de aceleração que pode ser ajustado dinamicamente de acordo com a volatilidade do mercado.
  3. Melhoria do mecanismo de travamento: introdução de uma faixa de travamento dinâmica baseada no ATR, aumentando a flexibilidade do travamento.
  4. Optimização da gestão de posições: adição de um mecanismo de gestão de posições dinâmico baseado na volatilidade.

Resumir

A estratégia permite uma combinação eficaz de rastreamento de tendências e controle de risco, através da otimização em profundidade dos indicadores clássicos de PSAR. As características adaptativas da estratégia e o mecanismo de parada de perdas perfeito tornam-na com um forte valor de aplicação em campo. A estabilidade e a lucratividade da estratégia são esperadas para ser ainda melhorada com a orientação de otimização sugerida.

Código-fonte da estratégia
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-16 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("A股抛物线策略(仅做多)- 完全移除SAR绘图", overlay=true)

// 参数设置
start     = input.float(0.02, "起始加速因子")
increment = input.float(0.02, "加速因子增量")
maximum   = input.float(0.2,  "加速因子最大值")

// 定义变量(var保证变量在整个历史数据中保持状态)
var bool   uptrend    = true    // 默认初始化为上升趋势
var float  EP         = na      // 极值点:上升趋势时为最高价,下降趋势时为最低价
var float  SAR        = na      // 当前K线的SAR
var float  AF         = start   // 当前加速因子
var float  nextBarSAR = na      // 下一根K线的预测SAR

//【1】初始化:针对第一根K线(bar_index==0)
if bar_index == 0
    // 使用首根K线收盘价初始化
    SAR        := close
    nextBarSAR := close
    EP         := close
    uptrend    := true

//【2】从第二根K线开始(bar_index>=1)计算SAR
if bar_index >= 1
    // 先将上一根K线计算得到的 nextBarSAR 赋给当前SAR
    SAR := nz(nextBarSAR, SAR)
    
    // 第2根K线(bar_index==1)做初始化,利用上一根K线(bar_index==0)的高低价
    if bar_index == 1
        if close > close[1]
            uptrend := true
            EP      := high
            SAR     := low[1]
        else
            uptrend := false
            EP      := low
            SAR     := high[1]
        AF := start
        nextBarSAR := SAR + AF * (EP - SAR)
    else
        // 记录是否处于趋势反转的首根K线,方便后续判断
        var bool firstTrendBar = false
        firstTrendBar := false
        
        // 检测趋势反转:
        // 在上升趋势中,如果当前SAR超过最低价,则认为发生反转
        if uptrend
            if SAR > low
                firstTrendBar := true
                uptrend     := false
                // 反转时,SAR取上一次极值与当前最高价中的较大者,极值改为当前最低价
                SAR         := math.max(EP, high)
                EP          := low
                AF          := start
            // 注意:原代码在上升趋势中还有个判断 SAR < high 的分支,但通常反转判据只需检测SAR是否穿过低点即可
        else
            // 在下降趋势中,如果当前SAR低于最高价,则认为反转为上升趋势
            if SAR < high
                firstTrendBar := true
                uptrend     := true
                SAR         := math.min(EP, low)
                EP          := high
                AF          := start
        
        // 若非反转情形,则更新极值和加速因子
        if not firstTrendBar
            if uptrend
                if high > EP
                    EP := high
                    AF := math.min(AF + increment, maximum)
            else
                if low < EP
                    EP := low
                    AF := math.min(AF + increment, maximum)
                    
        // 调整SAR,确保其不超过最近1-2根K线的最低价(上升趋势)或最高价(下降趋势)
        if uptrend
            SAR := math.min(SAR, low[1])
            if bar_index > 1
                SAR := math.min(SAR, low[2])
        else
            SAR := math.max(SAR, high[1])
            if bar_index > 1
                SAR := math.max(SAR, high[2])
        
        // 计算下一根K线的预测SAR
        nextBarSAR := SAR + AF * (EP - SAR)
        
        //【3】交易逻辑(仅做多)
        if barstate.isconfirmed
            // 当出现上升趋势且当前无多头仓位时进场做多(以预测的下一根K线SAR为止损触发价)
            if uptrend and strategy.position_size <= 0
                strategy.entry("Long", strategy.long, stop=nextBarSAR, comment="Long Entry")
            // 当趋势转为下降且持有多头时平仓
            if not uptrend and strategy.position_size > 0
                strategy.close("Long", comment="Long Exit")

// 绘图部分完全移除,不再绘制任何与SAR相关的图形