Stratégie dynamique d'arrêt des pertes et de prise de bénéfices basée sur les signaux VWAP et les signaux intertemporels

Auteur:ChaoZhang est là., Date: 2024-03-08 17h37 et 21h
Les étiquettes:

img

Résumé

Cette stratégie utilise le VWAP (Volume Weighted Average Price) du calendrier quotidien comme signal pour entrer et sortir des transactions. Lorsque le prix de clôture dépasse le VWAP, elle déclenche une entrée longue avec le stop loss fixé au plus bas des bougies précédentes si elle est en dessous du VWAP, et le prix cible fixé 3 points au-dessus du prix d'entrée. Inversement, lorsque le prix de clôture dépasse le VWAP, elle déclenche une entrée courte avec le stop loss fixé au plus haut des bougies précédentes si elle est au-dessus du VWAP, et le prix cible fixé 3 points en dessous du prix d'entrée. Cette stratégie ne comprend pas de condition de sortie, de sorte que les transactions restent ouvertes jusqu'à ce que le signal opposé se produise.

Principe de stratégie

  1. Obtenir les données VWAP à partir de l'intervalle de temps quotidien, qui sert de base à la détermination de la tendance et aux signaux de négociation.
  2. Déterminez si le prix de clôture actuel dépasse/dépasse le VWAP, agissant comme déclencheur pour les entrées longues et courtes, respectivement.
  3. Pour les entrées longues, si le bas de la bougie précédente est inférieur au VWAP, il est utilisé comme stop loss; sinon, le VWAP lui-même est utilisé.
  4. Après avoir entré dans une position, fixez un niveau de prise de profit fixe de 3 points.
  5. La stratégie continue à fonctionner jusqu'à ce qu'un signal inverse déclenche la position pour la fermer et en ouvrir une nouvelle.

En utilisant des données VWAP transversales pour déterminer les tendances et en tirant parti des arrêts de perte dynamiques et des bénéfices à point fixe, la stratégie peut capturer efficacement les marchés en tendance, contrôler les risques de retrait et verrouiller les bénéfices en temps opportun.

Analyse des avantages

  1. Simplicité et efficacité: la logique de la stratégie est claire, utilisant uniquement l'indicateur VWAP pour la détermination de la tendance et le déclenchement du signal, ce qui la rend simple à mettre en œuvre et à optimiser.
  2. Stop loss dynamique: en définissant le stop loss en fonction du niveau élevé ou bas des bougies précédentes, la stratégie s'adapte mieux aux fluctuations du marché et réduit le risque.
  3. Prise de profit à un point fixe: Le fait de fixer le prix cible avec un nombre fixe de points permet d'obtenir rapidement des profits et d'éviter une érosion des profits.
  4. Arrêter les pertes en temps opportun et prendre des bénéfices: la stratégie ferme immédiatement la position lorsqu'un signal inverse est déclenché, évitant ainsi des pertes supplémentaires sur les bénéfices existants.

Analyse des risques

  1. Optimisation des paramètres: la stratégie utilise un point fixe de 3 pour le bénéfice, ce qui peut nécessiter une optimisation basée sur différents instruments et caractéristiques du marché pour sélectionner les paramètres optimaux pour le trading réel.
  2. Marchés agités: Dans des conditions de marché instables, les entrées et les sorties fréquentes peuvent entraîner des coûts de négociation plus élevés, ce qui affecte la rentabilité.
  3. La stratégie repose sur les marchés en tendance. Si le marché est limité à une plage ou manque de durabilité de la tendance, il peut y avoir plus de signaux de trading générés, introduisant plus de risque.

Directions d'optimisation

  1. Filtrage des tendances: Incorporer d'autres indicateurs de tendance tels que les moyennes mobiles, le MACD, etc., pour confirmer les tendances et améliorer la fiabilité du signal.
  2. Prise de profit dynamique: ajuster les points de prise de profit dynamiquement en fonction de la volatilité du marché, de l'ATR ou d'autres indicateurs afin de mieux s'adapter aux conditions du marché.
  3. Taille des positions: ajustez dynamiquement la taille des positions pour chaque transaction en fonction de la taille du compte, de la tolérance au risque et d'autres facteurs.
  4. Sélection des sessions de négociation: choisir les sessions de négociation optimales en fonction des caractéristiques et de la liquidité de l'instrument afin d'améliorer l'efficacité de la stratégie.

Résumé

Cette stratégie utilise des données VWAP intertemporelles pour la détermination des tendances et le déclenchement des signaux tout en utilisant des stop-loss dynamiques et des bénéfices à point fixe pour contrôler les risques et verrouiller les bénéfices. C'est une stratégie de trading quantitative simple et efficace. Grâce à l'optimisation du filtrage des tendances, de la prise de profit dynamique, du dimensionnement des positions et de la sélection des sessions de négociation, la robustesse et le potentiel de profit de la stratégie peuvent être encore améliorés. Cependant, lors de l'application de la stratégie en pratique, l'attention doit être portée aux caractéristiques du marché, aux coûts de négociation et à l'optimisation des paramètres pour atteindre une meilleure stratégie de performance.


/*backtest
start: 2024-03-06 00:00:00
end: 2024-03-07 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Pine Script Tutorial Example Strategy 1', overlay=true, initial_capital=1000, default_qty_value=100, default_qty_type=strategy.percent_of_equity)
// fastEMA = ta.ema(close, 24)
// slowEMA = ta.ema(close, 200)
// Higher Time Frame
float sl = na
float tgt = na
posSize = 1
vwap_1d = request.security(syminfo.tickerid, "1D", ta.vwap(close))
// plot(vwap_1d)

// To avoid differences on historical and realtime bars, you can use this technique, which only returns a value from the higher timeframe on the bar after it completes:
// indexHighTF = barstate.isrealtime ? 1 : 0
// indexCurrTF = barstate.isrealtime ? 0 : 1
// nonRepaintingVWAP = request.security(syminfo.tickerid, "1D", close[indexHighTF])[indexCurrTF]
// plot(nonRepaintingVWAP, "Non-repainting VWAP")

enterLong = ta.crossover(close, vwap_1d)
exitLong  = ta.crossunder(close, vwap_1d)

enterShort = ta.crossunder(close, vwap_1d)
exitShort  = ta.crossover(close, vwap_1d)

if enterLong
    sl := low[1]>vwap_1d ?low[1]:vwap_1d
    tgt:=close+3
    strategy.entry("EL", strategy.long, qty=posSize)
    strategy.exit('exitEL', 'EL', stop=sl, limit=tgt)
if enterShort
    sl := high[1]<vwap_1d ?high[1]:vwap_1d
    tgt := close-3
    strategy.entry("ES", strategy.short, qty=posSize)
    strategy.exit('exitES', 'ES', stop=sl, limit=tgt)

// if exitLong
//     strategy.close("EL")
// if exitShort
//     strategy.close("ES")





// goLongCondition1 = ta.crossover(close, vwap_1d)
// timePeriod = time >= timestamp(syminfo.timezone, 2021, 01, 01, 0, 0)
// notInTrade = strategy.position_size <= 0
// if goLongCondition1 and timePeriod and notInTrade
//     stopLoss = low[1]
//     takeProfit = close+3
//     strategy.entry('long', strategy.long)
//     strategy.exit('exit', 'long', stop=stopLoss, limit=takeProfit)
plot(close, color=color.new(#00c510, 0))
plot(vwap_1d, color=color.new(#f05619, 0))
plot(sl, color=color.new(#fbff00, 0))
plot(tgt, color=color.new(#00e1ff, 0))

Plus de