Type/to search

Stratégie de sortie avec prise de bénéfices à multiples pourcentages

Common strategy
Created: 2023-12-01 15:22:29
Last modified: 3 years ago
1
Follow
1802
Followers

img

Aperçu

Cette stratégie implémente la possibilité de définir plusieurs niveaux de take-profit en pourcentage. La stratégie détermine d'abord les conditions haussières/baissières pour entrer en position longue ou courte. Ensuite, grâce à une fonction personnalisée percentAsPoints, elle convertit les pourcentages en ticks de prix. Le programme définit quatre sorties (exit) avec des niveaux de take-profit de 1 %, 2 %, 3 % et 4 %, ainsi qu'un stop-loss générique de 2 %. Cela permet d'obtenir un effet de take-profit progressif à plusieurs niveaux.

Principe de la stratégie

Cette stratégie utilise principalement les croisements des moyennes mobiles SMA pour déterminer les entrées. Plus précisément, lorsque la SMA rapide (14) croise au-dessus de la SMA lente (28), une position longue est ouverte ; lorsqu'elle croise en dessous, une position courte est ouverte.

La question se pose : comment définir plusieurs niveaux de take-profit en pourcentage ? On utilise ici une fonction personnalisée percentAsPoints qui convertit un pourcentage en ticks de prix. La logique de la fonction est :

percentAsPoints(pcnt) => strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)

Si la position n'est pas nulle, la fonction multiplie le pourcentage par le prix moyen de la position, divise par le tick minimum, puis arrondit pour obtenir le nombre de ticks. Si la position est nulle, elle retourne na.

Grâce à cette fonction, nous pouvons facilement convertir les pourcentages en ticks. Ensuite, le programme définit quatre sorties avec des take-profit de 1 %, 2 %, 3 % et 4 % :

lossPnt = percentAsPoints(2) strategy.exit("x1", qty_percent = 25, profit = percentAsPoints(1), loss = lossPnt) strategy.exit("x2", qty_percent = 25, profit = percentAsPoints(2), loss = lossPnt) strategy.exit("x3", qty_percent = 25, profit = percentAsPoints(3), loss = lossPnt) strategy.exit("x4", profit = percentAsPoints(4), loss = lossPnt)

Toutes les sorties utilisent le même stop-loss de 2 %. Cela permet de réaliser plusieurs niveaux de take-profit en pourcentage.

Analyse des avantages

Cette stratégie de take-profit progressif présente les avantages suivants :

  1. Elle permet de prendre ses bénéfices de manière ordonnée, sans risquer de manquer des profits plus importants. En général, plus le take-profit est élevé, plus le risque est grand ; cette stratégie permet d'équilibrer le rapport risque/rendement.

  2. La sortie par tranches permet de récupérer le capital, réduisant ainsi le risque. Par exemple, avec une tranche de 25 %, lorsque le profit atteint 1 %, on peut récupérer un quart du capital ; le reste de la position est alors géré avec des profits.

  3. Elle protège contre les mouvements anormaux du marché : un stop-loss de 2 % permet d'éviter des pertes massives lors de situations extrêmes.

  4. Le code est simple, clair, facile à comprendre, à modifier et à optimiser. Une fonction personnalisée convertit les pourcentages en ticks, puis quelques lignes de code suffisent pour définir plusieurs niveaux de take-profit.

Analyse des risques

Cette stratégie comporte également certains risques :

  1. Le take-profit en pourcentage peut entraîner des oscillations latérales, le prix fluctuant autour du niveau de take-profit. Cela peut déclencher fréquemment des take-profit et stop-loss, augmentant le nombre de transactions et les frais.

  2. La sortie par tranches augmente le nombre de transactions, alourdissant les frais. Si les frais sont trop élevés, ils peuvent annuler une partie des bénéfices.

  3. Un mauvais réglage des niveaux de take-profit peut affecter le taux de rendement. Des niveaux trop prudents ne permettront pas d'obtenir des rendements satisfaisants ; des niveaux trop agressifs augmentent le risque.

  4. Un take-profit fixe en pourcentage ne tient pas compte de la volatilité du marché ni de la tendance. En période de range, il faudrait réduire les niveaux de take-profit ; en période de tendance, il faudrait les élargir.

Pistes d'optimisation

Compte tenu des risques ci-dessus, plusieurs améliorations sont possibles :

  1. Optimiser la stratégie de take-profit pour qu'elle s'adapte automatiquement à la volatilité et à la tendance du marché. Par exemple, utiliser un take-profit basé sur l'ATR : resserrer le take-profit en range, l'élargir en tendance.

  2. Optimiser les proportions et les amplitudes des sorties par tranches pour obtenir la meilleure combinaison risque/rendement. Introduire une fonction d'optimisation des paramètres pour trouver les valeurs optimales.

  3. Réduire le nombre de prises de bénéfices pour éviter des transactions trop fréquentes. Par exemple, ajouter une zone tampon de prix : ne prendre de bénéfices qu'au-delà d'un certain seuil.

  4. Prendre en compte les frais de transaction : ne pas prendre de bénéfice si le profit attendu est inférieur aux frais. Ou optimiser l'amplitude du take-profit en fonction des frais.

  5. Utiliser un take-profit sur carnet d'ordres (order book). En fonction de la profondeur, privilégier la profondeur puis le prix pour éviter de décaler le prix de take-profit.

Résumé

Cette stratégie implémente un effet de take-profit progressif à plusieurs niveaux (1 %, 2 %, 3 % et 4 %), permettant de prendre ses bénéfices de manière ordonnée, tout en utilisant un stop-loss de 2 % pour se protéger contre des pertes massives lors de mouvements anormaux. Elle équilibre risque et rendement et évite de manquer des profits plus importants. Cependant, elle comporte certains risques comme les oscillations latérales ou l'augmentation de la fréquence des transactions. Ces suggestions méritent d'être intégrées pour optimiser la stratégie afin qu'elle fonctionne de manière stable sur un plus grand nombre de marchés.

Source
Pine
/*backtest
start: 2023-10-31 00:00:00
end: 2023-11-30 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © adolgov

//@version=4
Comment
All comments (0)
No data
No data
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)