Stratégie d'arrêt le plus haut/le plus bas

Auteur:ChaoZhang est là., Date: 2024-03-08 14h32h30
Les étiquettes:

img

Résumé

Cette stratégie définit des points de stop-loss basés sur les plus hauts et les plus bas récents pour entrer rapidement dans les tendances et contrôler strictement les risques. Elle entre dans des positions longues lorsque les prix augmentent consécutivement et des positions courtes lorsque les prix tombent consécutivement. Lors de la tenue de positions, le niveau de stop-loss pour les positions longues est le plus bas des quelques barres récentes, et le niveau de stop-loss pour les positions courtes est le plus haut. Cette approche dynamique de stop-loss peut capturer efficacement les tendances tout en limitant strictement les pertes.

Principes de stratégie

  1. Utilisez leinputfonction pour définir les périodes de repéragehiLenetloLenpour les plus hauts et les plus bas, en défaut à 20.
  2. Calculer le plus hauthiHighsjusqu'à la barre précédente en utilisantta.highest(high, hiLen)[1], et le plus bas basloLowsen utilisantta.lowest(low, loLen)[1].
  3. Tracer les niveaux de stop-loss, avecloLowspour les positions longues ethiHighsNe tracez pas lorsque vous êtes à plat pour faciliter la confirmation.
  4. Définir les conditions du signal commercial:
    • higherCloses: les 3 dernières barres ont des clôtures plus élevées consécutives
    • lowerCloses: les 3 dernières barres ont des clôtures plus basses consécutives
    • isFlat: aucune position actuelle
  5. Entrée: entrer long lorsqueisFlatethigherCloses, entrez à court lorsqueisFlatetlowerCloses.
  6. Stop-loss: pour les positions longues, stop-out auloLows; pour les positions courtes, arrêt àhiHighs.

En bref, cette stratégie utilise les plus hauts et les plus bas récents pour définir des arrêts de trailing, en entrant rapidement dans des tendances fortes et en limitant strictement les pertes, capturant ainsi efficacement les profits de tendance.

Analyse des avantages

  1. Simple et efficace: la stratégie a une logique claire et simple, fixant des arrêts basés sur les prix eux-mêmes pour capturer efficacement les tendances.
  2. Entrée rapide: l'entrée sur 3 barres consécutives se déplaçant dans la même direction permet d'entrer rapidement de nouvelles tendances.
  3. Arrêt strict: les arrêts sont fixés à des prix extrêmes récents, étroitement liés aux prix actuels pour un contrôle strict du risque.
  4. Trailing stops: les niveaux d'arrêt sont continuellement mis à jour en fonction des prix, ce qui garantit à la fois des bénéfices et un espace de tendance.
  5. Très adaptable: adapté à divers marchés et instruments, avec des paramètres réglables de manière flexible.

Analyse des risques

  1. Risque d'instabilité des marchés: les marchés instables peuvent entraîner des entrées et des arrêts fréquents, dégradant les performances.
  2. Risque de fin de tendance: lorsqu'une tendance est sur le point de s'inverser, une nouvelle entrée peut immédiatement faire face à un renversement et à une perte.
  3. Risque de mouvement extrême: en cas de rebond extrême de survente ou de chute de surachat, les arrêts de trailing peuvent ne pas bien protéger les positions.
  4. Risque de paramètres: des paramètres inappropriés peuvent entraîner des entrées et des sorties trop fréquentes.

Directions d'optimisation

  1. Identification de tendance: ajouter des indicateurs de tendance comme des moyennes mobiles et ne négocier que dans la direction de la tendance principale pour améliorer le taux de gain.
  2. Incorporer la volatilité: ajuster les paramètres basés sur des indicateurs de volatilité tels que l'ATR pour s'adapter à différentes volatilités.
  3. Confirmation de l'élan: ajouter des indicateurs d'élan comme le MACD pour confirmer les entrées uniquement avec un support d'élan.
  4. Optimiser les arrêts: combiner avec des arrêts en pourcentage pour les mouvements extrêmes; ajouter des arrêts de protection pour réduire les pertes par transaction.
  5. Taille des positions: optimiser la taille des positions, par exemple en ajustant la taille en fonction des niveaux de risque afin d'améliorer le rapport risque/rendement.

Résumé

Cette stratégie d'arrêt le plus élevé / le plus bas bas définit des arrêts dynamiques basés sur les prix eux-mêmes pour capturer efficacement les fortes tendances et contrôler strictement les risques. Ses avantages sont la simplicité, l'efficacité, les entrées rapides, les arrêts stricts et une grande adaptabilité. Cependant, il fonctionne mal sur les marchés agités, les fins de tendance et les mouvements extrêmes, et nécessite une attention aux paramètres. Les améliorations futures peuvent ajouter une confirmation de tendance et de momentum, optimiser les arrêts et la dimensionnement des positions.


/*backtest
start: 2023-03-02 00:00:00
end: 2024-03-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Highest high/lowest low stop", overlay=true)

// STEP 1:
// Make inputs for length of highest high and lowest low
hiLen = input.int(20, title="Highest High Lookback", minval=2)
loLen = input.int(20, title="Lowest Low Lookback", minval=2)

// STEP 2:
// Calculate recent extreme high and low
hiHighs = ta.highest(high, hiLen)[1]
loLows  = ta.lowest(low, loLen)[1]

// Plot stop values for visual confirmation
plot(strategy.position_size > 0 ? loLows : na,
     style=plot.style_circles, color=color.green, linewidth=3,
     title="Lowest Low Stop")

plot(strategy.position_size < 0 ? hiHighs : na,
     style=plot.style_circles, color=color.red, linewidth=3,
     title="Highest High Stop")

// Trading conditions for this example strategy
higherCloses = close > close[1] and
     close[1] > close[2] and 
     close[2] > close[3]

lowerCloses = close < close[1] and
     close[1] < close[2] and 
     close[2] < close[3]

isFlat = strategy.position_size == 0

// Submit entry orders
if isFlat and higherCloses
    strategy.entry("EL", strategy.long)

if isFlat and lowerCloses
    strategy.entry("ES", strategy.short)

// STEP 3:
// Submit stops based on highest high and lowest low
if strategy.position_size > 0
    strategy.exit("XL HH", stop=loLows)

if strategy.position_size < 0
    strategy.exit("XS LL", stop=hiHighs)

Plus de