Cette stratégie vise à utiliser la fonction de stop de trailing de Bitmex
La stratégie utilise principalement 3 indicateurs: prix le plus élevé, prix le plus bas et prix de clôture.longoffset
pour une longue distance d'arrêt à l'arrière etshortoffset
La distance par défaut longue est de 228,5 points et la distance courte est de 243,5 points.
Ensuite, la stratégie utilise la logique suivante pour ajuster le prix de l'arrêt de trailingtrailstop
:
Si le prix le plus bas de la dernière bougie est inférieur au prix de l'arrêt de trailing de la bougie précédente, et le prix le plus bas de la bougie avant que ce soit plus élevé que le prix de l'arrêt de trailing des 2 bougies précédentes, alors le prix de l'arrêt de trailing de la bougie actuelle = prix de fermeture + courte distance d'arrêt de trailing
Si le prix le plus élevé de la dernière bougie est plus élevé que le prix de l'arrêt de trailing de la bougie précédente, et le prix le plus élevé de la bougie avant que ce soit inférieur au prix de l'arrêt de trailing des 2 bougies précédentes, alors le prix de l'arrêt de trailing de la bougie actuelle = prix de fermeture - longue distance d'arrêt de trailing
Si le prix le plus élevé de la dernière bougie est supérieur au prix de l'arrêt de trail de la bougie précédente, alors le prix de l'arrêt de trail de la bougie actuelle = max ((prix de l'arrêt de trail de la bougie précédente, le prix le plus élevé de la dernière bougie - distance d'arrêt de trail longue)
Si le prix le plus bas de la dernière bougie est inférieur au prix d'arrêt de trail de la bougie précédente, alors le prix d'arrêt de trail de la bougie actuelle = min ((prix d'arrêt de trail de la bougie précédente, prix le plus bas de la dernière bougie + courte distance d'arrêt de trail)
Dans le cas contraire, le prix de clôture de la bougie actuelle = prix de clôture
Cette méthode permet d'ajuster dynamiquement le prix de l'arrêt de traction en fonction des variations des prix les plus élevés et les plus bas du marché afin d'obtenir des arrêts dynamiques.
Le principal avantage de cette stratégie est la mise en œuvre d'arrêts de suivi vraiment dynamiques et flexibles. Par rapport aux prix de stop loss fixes, le suivi dynamique peut ajuster la plage de stop loss en fonction des fluctuations du marché, évitant des pertes inutiles dues à des distances d'arrêt trop grandes, tout en évitant d'être arrêté par des fluctuations normales des prix lorsque la distance est trop petite. Cela réduit les pertes inutiles tout en réduisant la probabilité d'arrêts prématurés.
Un autre avantage est que la distance de stop loss est personnalisable et optimisée. Les utilisateurs peuvent choisir des plages de stop loss adaptées à eux-mêmes en fonction des caractéristiques de différents produits et styles de trading. Cela permet d'appliquer la stratégie à un plus large éventail de scénarios.
Enfin, la logique de stop loss de cette stratégie est simple et claire, facile à comprendre et facile à développer et à intégrer dans d'autres stratégies.
Les principaux risques de cette stratégie sont les suivants:
Les arrêts dynamiques ne peuvent réduire les pertes que dans des conditions de marché normales, mais ne peuvent pas résister à des événements majeurs ou à des conditions de marché extrêmes.
Si la distance d'arrêt de trail est réglée trop grande, elle peut entraîner de plus grandes pertes. Si elle est réglée trop petite, elle peut s'arrêter prématurément. Le réglage nécessite des tests et une optimisation soigneux basés sur les caractéristiques du produit.
Dans les premières bougies après l'ouverture d'une position, en raison du mécanisme des arrêts de trailing, la distance d'arrêt peut être trop grande, ce qui pose un risque supplémentaire pendant cette période.
Cette stratégie peut être optimisée dans les aspects suivants:
Optimisation des paramètres pour différents produits: Choisissez des distances raisonnables d'arrêt long et court basées sur la volatilité, la plage intradienne et d'autres mesures pour différents produits.
Réduire le risque supplémentaire dans les premières bougies après l'ouverture des positions: Limiter la plage d'ajustement des distances d'arrêt de retard dans les premières bougies pour éviter des distances trop grandes.
Incorporer des indicateurs de volume de négociation: par exemple, réduire la distance d'arrêt pendant les augmentations de volume pour éviter d'être arrêté par l'arbitrage.
Combiner avec d'autres stratégies d'entrée/sortie: la fonction principale de cette stratégie est de suivre le stop loss.
Cette stratégie implémente un stop loss dynamique basé sur les changements des prix les plus élevés et les plus bas du marché. Elle peut réduire efficacement les pertes inutiles dans des conditions normales de marché et résoudre le problème des distances fixes trop grandes ou trop petites. Les principales directions d'optimisation sont le test de paramètres appropriés sur différents produits et le contrôle des risques dans les premières bougies après l'ouverture de positions. La logique de stop loss est simple et claire, facile à comprendre et à intégrer dans d'autres stratégies ou à utiliser de manière autonome comme outil de stop loss.
/*backtest start: 2023-02-20 00:00:00 end: 2024-02-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //By River strategy("BitMex Trailing Stop Strategy", overlay=true) longoffset = input(defval=228.5, title="Long Trailing Stop Size", type=float, minval=0.5, maxval=1000, step=0.5) shortoffset = input(defval=243.5, title="Short Trailing Stop Size ", type=float, minval=0.5, maxval=1000, step=0.5) hiprice = request.security(syminfo.tickerid, "1", high) loprice = request.security(syminfo.tickerid, "1", low) price = request.security(syminfo.tickerid, "1", close) trailstop = price trailstop := (loprice <= trailstop[1] and loprice[1] >= trailstop[2]) ? price + shortoffset : ((hiprice >= trailstop[1] and hiprice[1] <= trailstop[2]) ? price - longoffset : (hiprice > trailstop[1] ? max(hiprice - longoffset, trailstop[1]) : (loprice < trailstop[1] ? min(loprice + shortoffset, trailstop[1]) : price))) trailcol = trailstop > price ? red : green plot(trailstop, color=trailcol) longCondition = trailcol == green alertcondition(longCondition, "Long Stop alert", "BUY") if (longCondition) strategy.entry("Long", strategy.long) shortCondition = trailcol == red alertcondition(shortCondition, "Short alert", "SELL") if (shortCondition) strategy.entry("Short", strategy.short)