Stratégies de trading basées sur les inversions et les sorties de points pivots


Date de création: 2024-04-30 15:57:54 Dernière modification: 2024-04-30 15:57:54
Copier: 0 Nombre de clics: 753
1
Suivre
1617
Abonnés

Stratégies de trading basées sur les inversions et les sorties de points pivots

Aperçu

La stratégie est basée sur les Pivot Points pour identifier les points de retournement du marché et effectuer des transactions en fonction de ceux-ci. La stratégie prend une position plus élevée lorsque le marché atteint un Pivot High dans la ligne 4K à gauche; la stratégie prend une position vide lorsque le marché atteint un Pivot Low dans la ligne 4K à gauche. La stratégie est arrêtée sur la plus petite unité de variation de prix supérieure et suivante du prix d’ouverture.

Principe de stratégie

  1. Utilisez les fonctions ta.pivothigh () et ta.pivotlow () pour calculer les hauts et les bas des points pivots de la gamme des 4 lignes K à gauche et des 2 lignes K à droite.
  2. Lorsque le sommet de l’axe swh est présent, le prix le plus élevé est mis à jour, tout en satisfaisant le prix le plus élevé actuel supérieur au prix le plus élevé précédent.
  3. Lorsqu’une condition de placement multiple est établie, le placement est effectué à une position d’une unité de moindre mouvement au-dessus du point de hauteur du point de pivot.
  4. De la même manière que le plus, le prix minimum est mis à jour lorsque le point le plus bas du pivot est présent (swl_second) et le prix minimum actuel (lprice) est mis à jour lorsque le prix minimum actuel est inférieur au prix minimum précédent.
  5. Lorsque la condition d’entrée en bourse pour la couverture est établie, la position est ouverte à la position la plus basse d’une unité de variation minimale sous le point pivot.
  6. Dans la fonction exitAtNextPivot (), si vous détenez des positions multiples, vous perdez une unité de variation minimale au-dessous du point le plus bas du point pivot suivant; si vous détenez des positions vides, vous perdez une unité de variation minimale au-dessus du point le plus élevé du point pivot suivant.
  7. Dans la fonction exitIfProfitLessThanThirtyPercent (), on calcule le pourcentage de gain et de perte des positions à plus ou à moins de 30%, et la perte est nulle si elle est supérieure à 30%.

Avantages stratégiques

  1. Le pivot est un indicateur d’analyse technique couramment utilisé et qui a une certaine reconnaissance du marché.
  2. Il est possible de s’inscrire au moment de la rupture des pivots et de saisir l’occasion d’une reprise du marché.
  3. Deux conditions d’exode ont été définies, l’une étant l’exode technique basé sur le prochain pivot de direction opposée, et l’autre l’exode de contrôle du vent basé sur le pourcentage de pertes, permettant un certain contrôle sur la stratégie de retrait.

Risque stratégique

  1. L’indicateur de pivot lui-même présente des problèmes de latence et de fréquence des signaux, qui peuvent être négatifs dans les marchés instables.
  2. Les paramètres de calcul des lignes K à 4 et 2 fixes peuvent ne pas s’appliquer à toutes les conditions du marché et manquent d’une certaine adaptabilité et de flexibilité.
  3. La position de stop loss est plus proche du prix d’entrée ((une unité de moindre variation) et peut être abandonnée en cas de fortes fluctuations du marché.
  4. Les réglages de 30% de pertes peuvent être trop relâchés et les retraits trop élevés.

Orientation de l’optimisation de la stratégie

  1. On peut essayer d’utiliser d’autres types d’indicateurs de pivot, tels que les pivots de facteurs, les pivots pondérés, etc., pour améliorer la sensibilité et la rapidité des indicateurs.
  2. Le nombre de lignes K à droite et à gauche peut être utilisé comme paramètre d’entrée pour rechercher la valeur optimale en optimisant les paramètres.
  3. La position de stop loss peut être optimisée en ATR ou en pourcentage de stop loss, le premier étant capable de s’adapter aux variations de la volatilité du marché, le second permettant de limiter le risque à des limites contrôlables.
  4. Les conditions de placement à 30% de pertes peuvent être resserrées, ce qui réduit les retraits stratégiques. De plus, il est possible d’augmenter les conditions de placement à pourcentage de bénéfices, ce qui permet de gérer à la fois les fluctuations et les fluctuations.
  5. D’autres conditions de filtrage, telles que le filtrage de tendance et le filtrage de taux d’oscillation, peuvent être superposées sur la base de la rupture de pivot pour améliorer la qualité du signal.

Résumer

La stratégie a une base théorique et une valeur pratique, mais en raison des limites de l’indicateur de pivot lui-même, la stratégie peut faire face à des risques et des défis dans la pratique. La stabilité et la rentabilité de la stratégie sont susceptibles d’être encore améliorées en optimisant le type d’indicateur de pivot, les paramètres, les conditions de filtrage, le stop-loss, etc.

Code source de la stratégie
/*backtest
start: 2023-04-24 00:00:00
end: 2024-04-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Pivot Reversal Strategy with Pivot Exit", overlay=true)

leftBars = input(4)
rightBars = input(2)

var float dailyEquity = na

// Reset equity to $10,000 at the beginning of each day
isNewDay = ta.change(time("D")) != 0
if (isNewDay)
    dailyEquity := 10000

// Calculate pivot highs and lows
swh = ta.pivothigh(leftBars, rightBars)
swl = ta.pivotlow(leftBars, rightBars)

// Define long entry condition
swh_cond = not na(swh)
hprice = 0.0
hprice := swh_cond ? swh : hprice[1]
le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])

// Enter long position if long entry condition is met
if (le)
    strategy.entry("PivRevLE", strategy.long, comment="EnterLong", stop=hprice + syminfo.mintick)

// Define short entry condition
swl_cond = not na(swl)
lprice = 0.0
lprice := swl_cond ? swl : lprice[1]
se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])

// Enter short position if short entry condition is met
if (se)
    strategy.entry("PivRevSE", strategy.short, comment="EnterShort", stop=lprice - syminfo.mintick)

// Exit condition: Exit at the next pivot point
exitAtNextPivot() =>
    if strategy.opentrades > 0
        if strategy.position_size > 0
            // Exiting long position at next pivot low
            if not na(swl)
                strategy.exit("ExitLong", "PivRevLE", stop=swl - syminfo.mintick)
        else
            // Exiting short position at next pivot high
            if not na(swh)
                strategy.exit("ExitShort", "PivRevSE", stop=swh + syminfo.mintick)

// Call exitAtNextPivot function
exitAtNextPivot()

// Exit condition: Exit if profit is less than 30%
exitIfProfitLessThanThirtyPercent() =>
    if strategy.opentrades > 0
        if strategy.position_size > 0
            // Calculate profit percentage for long position
            profit_percentage_long = (close - strategy.position_avg_price) / strategy.position_avg_price * 100
            // Exiting long position if profit is less than 30%
            if profit_percentage_long < -30
                strategy.close("PivRevLE")
        else
            // Calculate profit percentage for short position
            profit_percentage_short = (strategy.position_avg_price - close) / strategy.position_avg_price * 100
            // Exiting short position if profit is less than 30%
            if profit_percentage_short < -30
                strategy.close("PivRevSE")

// Call exitIfProfitLessThanThirtyPercent function
exitIfProfitLessThanThirtyPercent()