Stratégie d'optimisation adaptative du stop loss avec suivi des tendances SAR sur plusieurs périodes

PSAR AF EP SAR SL TS MM
Date de création: 2025-02-18 13:48:30 Dernière modification: 2025-02-18 13:48:30
Copier: 1 Nombre de clics: 391
1
Suivre
1617
Abonnés

Stratégie d’optimisation adaptative du stop loss avec suivi des tendances SAR sur plusieurs périodes

Aperçu

Cette stratégie est basée sur la traditionnelle parabolique SAR (Parabolic Stop and Reverse) indicateur de la profondeur d’optimisation, en combinaison avec le jugement de la tendance à plusieurs cycles et le mécanisme d’arrêt de perte d’adaptation. La stratégie utilise le facteur d’accélération dynamique (AF) d’ajustement, par la mise à jour continue de points extrêmes (EP) pour suivre la tendance du marché, la prise de la tendance à la hausse et le contrôle du risque.

Principe de stratégie

La logique fondamentale de la stratégie repose sur les éléments clés suivants :

  1. Calcul du SAR dynamique: trois paramètres sont utilisés: le facteur d’accélération initial (AF), la valeur croissante et la valeur maximale. Le SAR est ajusté dynamiquement en fonction de l’intensité de la tendance.
  2. Mécanisme de détermination de la tendance: déterminer la direction de la tendance en comparant la valeur SAR avec la relation de position du prix et déclencher un signal de renversement de tendance lorsque la SAR traverse le prix.
  3. Logique d’entrée: lors de la confirmation d’une tendance à la hausse et sans position, utilisez la valeur SAR prévue pour le prochain cycle pour définir l’ordre d’entrée en tant que stop-loss.
  4. Optimisation de l’arrêt des pertes: les valeurs maximales des 1 à 2 premières lignes K sont utilisées comme référence d’ajustement SAR pour améliorer l’exactitude et la rapidité de l’arrêt des pertes.

Avantages stratégiques

  1. Adaptabilité: grâce à l’ajustement dynamique du facteur d’accélération, la stratégie peut ajuster automatiquement les paramètres en fonction de l’intensité des fluctuations du marché.
  2. Le contrôle des risques est perfectionné: la prévision des pertes est assurée par la mise en place d’une valeur prédictive de SAR.
  3. La prise de tendance est précise: plusieurs mécanismes de confirmation de tendance réduisent le risque de fausses ruptures.
  4. La logique de calcul est rigoureuse: un mécanisme de maintien de l’état des variables est utilisé pour assurer la stabilité de la stratégie dans le repérage historique.

Risque stratégique

  1. Risque de choc: les chocs horizontaux peuvent souvent déclencher de faux signaux, entraînant des pertes continues. Solution: un filtre de volatilité peut être introduit pour réduire la fréquence des transactions dans un environnement à faible volatilité.
  2. Effets des points de glissement: les arrêts SAR prédictifs peuvent présenter un risque de points de glissement dans les marchés à forte volatilité. Solution: Il est recommandé de définir des tolérances de points de glissement raisonnables et d’ajuster les paramètres en fonction des caractéristiques de la variété.
  3. Retard de reprise de tendance: un retard de rupture peut survenir dans le cas d’une reprise de tendance brusque. Solution: associée à des mesures de dynamique à courte période pour aider au jugement et améliorer la sensibilité à l’arrêt des dommages.

Orientation de l’optimisation de la stratégie

  1. Synchronisation pluricyclique: il est recommandé d’ajouter un mécanisme de confirmation de tendance pour plusieurs périodes de temps, afin d’améliorer la fiabilité du signal.
  2. Optimisation des paramètres dynamiques: les paramètres du facteur d’accélération peuvent être ajustés dynamiquement en fonction de la volatilité du marché.
  3. Amélioration des mécanismes d’arrêt des dommages: introduction d’une bande d’arrêt dynamique basée sur l’ATR, améliorant la flexibilité de l’arrêt des dommages.
  4. Optimisation de la gestion des positions: ajout d’un mécanisme de gestion des positions dynamique basé sur la volatilité.

Résumer

La stratégie est optimisée en profondeur sur les indicateurs classiques du PSAR, permettant une combinaison efficace de suivi des tendances et de contrôle des risques. Les caractéristiques d’adaptation de la stratégie et son mécanisme d’arrêt des pertes perfectionné lui confèrent une forte valeur d’application sur le terrain.

Code source de la stratégie
/*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相关的图形