Stratégie dynamique de prise de bénéfices et d'ajout de position dynamique

Auteur:ChaoZhang est là., Date: 2024-03-22 15h49 et 28h
Les étiquettes:

img

Vue d'ensemble de la stratégie

Cette stratégie est basée sur l'indicateur de la bande de Bollinger. Elle ouvre des positions lorsque le prix atteint la bande supérieure ou inférieure, et établit une logique de prise de profit dynamique et une logique d'ajout de position dynamique. Lorsque le prix rebondit de la bande inférieure et franchit la bande du milieu, la stratégie considère qu'une tendance haussière s'est formée. À ce moment-là, la stratégie ajoutera des positions lorsque le prix retombe à un certain pourcentage de la bande du milieu. Lorsque le prix franchit enfin la bande supérieure, la stratégie ferme des positions pour prendre des bénéfices. Dans une tendance baissière, la stratégie adopte la logique d'exploitation opposée.

Principe de stratégie

Les principaux principes de cette stratégie sont les suivants:

  1. Calculer les bandes supérieures, moyennes et inférieures des bandes de Bollinger. Les bandes supérieures et inférieures sont calculées en ajoutant et en soustrayant N fois l'écart type de la bande moyenne, où N peut être personnalisé.

  2. Lorsque le prix de clôture dépasse la bande inférieure et qu'aucune position n'a été ouverte auparavant, la stratégie ouvre une position longue; lorsque le prix de clôture dépasse la bande supérieure et qu'aucune position n'a été ouverte auparavant, la stratégie ouvre une position courte.

  3. Après ouverture d'une position longue, si le prix de clôture dépasse la bande du milieu, on considère qu'une tendance haussière s'est formée et la variable baseCrossed est marquée comme vraie.

  4. Dans le cas d'une position longue, si le prix de clôture dépasse la bande inférieure et que la baseCrossed est vraie, et que le prix actuel a chuté de plus de 2% par rapport au prix d'ouverture initial, la stratégie ajoute des positions à ce moment-là et réinitialise la baseCrossed à false en même temps.

  5. Si le prix de clôture dépasse la bande supérieure lors de la tenue d'une position longue, ou si le prix de clôture dépasse la bande inférieure lors de la tenue d'une position courte, la stratégie ferme toutes les positions, prend des bénéfices et réinitialise diverses variables de marqueur pour se préparer à l'ouverture suivante.

Grâce à l'ouverture dynamique ci-dessus, à l'ajout de positions et à la logique de prise de profit, cette stratégie peut fonctionner de manière flexible sur les marchés tendance pour obtenir des bénéfices plus élevés.

Analyse des avantages

  1. Cette stratégie permet d'ajuster dynamiquement le niveau de prise de profit à travers les bandes supérieures et inférieures des bandes de Bollinger.

  2. L'ajout de position dynamique: dans la phase de recul après la formation de la tendance, la stratégie ajoutera progressivement des positions, ce qui peut générer des bénéfices plus élevés sur les marchés en tendance.

  3. Paramètres flexibles: les paramètres des bandes de Bollinger, tels que les valeurs N et P, peuvent être ajustés de manière flexible pour s'adapter aux différentes caractéristiques du marché et aux différents styles de négociation.

  4. Une forte adaptabilité: la bande de Bollinger est un indicateur technique classique avec une bonne capacité à capturer les tendances.

  5. Logique claire: Les conditions d'ouverture et de fermeture et la logique d'ajout et de réduction des positions de cette stratégie sont très claires et faciles à comprendre, ce qui est pratique pour les traders à comprendre et à contrôler.

Analyse des risques

  1. Marché oscillant: les stratégies de Bollinger Band ont souvent de mauvaises performances sur les marchés oscillants.

  2. Inversion de tendance: au moment clé de l'inversion de tendance, cette stratégie peut présenter un retard de jugement, entraînant l'ajout de positions dans la mauvaise direction, ce qui entraîne un retrait plus important.

  3. Dans des situations extrêmes (telles que des hausses et des baisses brusques), la tendance des bandes de Bollinger peut être anormale, ce qui entraîne l'échec de la stratégie.

  4. Paramètres: les paramètres inappropriés affecteront sérieusement les performances de cette stratégie. Par exemple, le fait de régler la valeur N trop basse entraînera des transactions fréquentes et le fait de régler la valeur N trop grande entraînera un décalage du signal.

  5. Événements du cygne noir: s'il y a des événements politiques et économiques majeurs, cette stratégie peut être exposée à un risque plus élevé.

Pour contrôler les risques ci-dessus, nous pouvons commencer par deux aspects: 1) Fixer raisonnablement les paramètres et optimiser les paramètres pour différentes cibles et conditions de marché; 2) Ajouter plus de conditions de filtrage à la stratégie, telles que le jugement de tendance, le filtrage de volatilité, etc., pour améliorer la qualité des signaux.

Direction de l'optimisation

  1. Filtrage de tendance: ajouter la logique du jugement de tendance lors de l'ouverture de positions, comme l'utilisation de l'arrangement haussier MA comme condition de filtrage pour aller long, et l'arrangement baissier MA comme condition de filtrage pour aller court, ce qui peut améliorer le taux de réussite de la saisie de tendance.

  2. Filtrage de la volatilité: Les bandes de Bollinger sont en fait une sorte d'indicateur de volatilité. Des indicateurs de volatilité tels que l'ATR et la volatilité historique peuvent être introduits pour identifier l'état de volatilité du marché. Les positions peuvent être réduites de manière appropriée dans les états à forte volatilité et augmentées dans les états à faible volatilité, afin de mieux contrôler les risques.

  3. Optimisation des paramètres dynamiques: les paramètres des bandes de Bollinger peuvent être ajustés dynamiquement en fonction des conditions du marché. Par exemple, la valeur N peut être augmentée sur les marchés en tendance et diminuée sur les marchés en oscillation. Cela nécessite l'utilisation de l'apprentissage automatique et d'autres technologies pour trouver les paramètres optimaux grâce à une formation sur les données historiques.

  4. Stratégies combinées: Cette stratégie peut être combinée avec d'autres stratégies classiques telles que le MACD et le RSI pour former des stratégies combinées, améliorant la robustesse et la rentabilité du système.

  5. Ajouter une logique de stop-loss: à l'heure actuelle, cette stratégie ne dispose pas d'une logique de stop-loss claire. Nous pouvons envisager d'ajouter des mécanismes tels que le stop de suivi ou le stop-loss en pourcentage fixe pour contrôler la perte maximale d'une seule transaction.

  6. Optimisation de la gestion des positions: dans le processus d'addition et de réduction des positions, des méthodes classiques de gestion des positions telles que la formule de Kelly et la valeur F optimale peuvent être utilisées pour maximiser les profits en cas de risques contrôlables.

Grâce aux optimisations susmentionnées, le rapport risque/rendement de cette stratégie peut être encore amélioré, ce qui lui permet de mieux s'adapter à l'évolution de l'environnement du marché et d'apporter des rendements stables aux traders.

Résumé

La stratégie de prise de profit dynamique et d'ajout de position dynamique est une stratégie classique de suivi des tendances. Basée sur les bandes de Bollinger, elle cherche des profits de tendance plus élevés en ajustant dynamiquement les positions. Cette stratégie a une logique claire, des paramètres flexibles et une forte adaptabilité. C'est une stratégie de trading quantitative digne d'une recherche et d'une application approfondies. Mais en même temps, nous devons également voir que cette stratégie fonctionne mal sur les marchés oscillants et n'a pas la capacité de faire face à des situations extrêmes et à des événements de cygne noir. Cela nous oblige à nous concentrer sur l'optimisation des paramètres, le contrôle des risques et la stratégie de combinaison dans l'application réelle, et à tester régulièrement l'efficacité de la stratégie dans différentes conditions de marché. En comprenant profondément la logique interne de cette stratégie et en l'optimisant et en l'améliorant continuellement, je crois que cette stratégie peut devenir un outil important pour les trad


/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//  Bollinger Bands 1Bb 상하한 크로스 롱숏 실행

strategy(shorttitle="BB", title="Bollinger Bands", overlay=true )
 // bb
length = input.int(12, minval=1)
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
add = input.float(0.98, step = 0.001)
// plot(upper - lower, "Basis", color=color.red, offset = offset)
var bool entryMade = false
var bool basisCrossed = false
var bool upperCrossed = false
var bool lowerCrossed = false
strategy.initial_capital = 50000
if close < lower and not entryMade
    strategy.entry("롱", strategy.long, qty = strategy.initial_capital/10000)
    entryMade := true
if ta.crossover(close, basis) and entryMade and not upperCrossed
    basisCrossed := true
if close > upper
    upperCrossed := true
if close < lower and entryMade and basisCrossed and not upperCrossed and close < strategy.position_avg_price*add
    strategy.entry("추가롱", strategy.long, strategy.initial_capital/10000)
    basisCrossed := false
if close > upper
    strategy.close("롱")
    strategy.close("추가롱")
    entryMade := false
    basisCrossed := false
    upperCrossed := false
///////////반대 포지션
if close > upper and not entryMade
    strategy.entry("s", strategy.short, qty = strategy.initial_capital/10000)
    entryMade := true
if ta.crossunder(close, basis) and entryMade and not lowerCrossed
    basisCrossed := true
if close < lower
    lowerCrossed := true
if close > upper and entryMade and basisCrossed and not lowerCrossed and close > strategy.position_avg_price*add
    strategy.entry("추가s", strategy.short, strategy.initial_capital/10000)
    basisCrossed := false
if close < lower
    strategy.close("s")
    strategy.close("추가s")
    entryMade := false
    basisCrossed := false
    upperCrossed := false


Plus de