Stratégie de suivi dynamique du stop-loss


Date de création: 2024-01-03 16:15:29 Dernière modification: 2024-01-03 16:15:29
Copier: 0 Nombre de clics: 596
1
Suivre
1617
Abonnés

Stratégie de suivi dynamique du stop-loss

Aperçu

La stratégie utilise l’indicateur Stoch pour déterminer les signaux d’entrée et suit en temps réel les hauts et les bas des prix après l’entrée, afin d’ajuster dynamiquement les arrêts de perte. En outre, la stratégie envoie des informations sur les modifications de la perte via la fonction d’alert à MT4/MT5 pour ajuster en temps réel les positions dans la transaction réelle.

Principe de stratégie

  1. La stratégie est basée sur l’indicateur de Stoch pour générer des signaux d’achat et de vente, générant un signal d’achat lorsque la ligne K de Stoch franchit la ligne D du bas vers le haut et un signal de vente lorsque la ligne K de Stoch franchit la ligne D du haut vers le bas.

  2. Après l’entrée en bourse, la stratégie suit en temps réel les derniers bas du prix le plus bas et les derniers hauts du prix le plus élevé, en tant que stop loss dynamique. Plus précisément, pour les ordres multiples, elle suit les derniers bas du prix le plus bas comme stop loss; pour les ordres négatifs, elle suit les derniers hauts du prix le plus élevé comme stop loss.

  3. Lorsqu’une modification du seuil de stop est détectée, la stratégie génère des instructions de modification du seuil de stop via la fonction d’alerte, qui est envoyée à MT4/MT5 pour ajuster le seuil de stop dans la transaction réelle en temps réel. Des marqueurs graphiques sont également dessinés pour afficher visuellement le changement de seuil de stop.

  4. Cette stratégie permet de contrôler manuellement si le mécanisme d’arrêt dynamique est activé. Une fois activé, le prix de suivi de l’arrêt peut être ajusté en temps réel en fonction des fluctuations du marché.

Analyse des avantages

  1. L’utilisation d’un mécanisme de suivi dynamique des pertes permet d’ajuster de manière flexible les points de rupture en fonction des fluctuations du marché, de réaliser un suivi des pertes et de contrôler efficacement les risques.

  2. La fonction alert permet d’envoyer en temps réel des informations sur les ajustements de stop-loss à MT4/MT5, ce qui permet une gestion automatisée, sans intervention humaine.

  3. Les informations sur les ajustements de stop-loss sont affichées de manière graphique pour faciliter l’affichage et la vérification des effets de suivi des stop-loss.

  4. Prise en charge du contrôle manuel de l’activation ou non d’un mécanisme de suivi des pertes, adaptation flexible aux différentes conditions du marché.

  5. La combinaison de l’indicateur de Stoch avec le timing permet de filtrer efficacement les fausses percées et d’améliorer la stabilité de la stratégie.

Analyse des risques

  1. L’indicateur Stoch peut avoir des signaux de croisement fréquents, entraînant un risque d’opérations plus inefficaces. Les paramètres peuvent être ajustés de manière appropriée pour filtrer les signaux.

  2. Dans des situations extrêmes, le risque de rupture du stop loss peut être élevé, ce qui ne permet pas d’éviter complètement les pertes massives. Le risque de position doit être surveillé à temps.

  3. La connexion alert peut être interrompue, retardée, etc. Il n’est pas possible de modifier les résultats en temps réel, il est nécessaire de faire un traitement de la tolérance.

  4. La traçabilité dynamique des stop-loss nécessite des ajustements relativement denses et peut entraîner des coûts de transaction plus élevés. L’amplitude d’ajustement doit être équilibrée par rapport aux coûts.

Direction d’optimisation

  1. Il est possible de tester différentes combinaisons de paramètres pour optimiser les indicateurs de Stoch et obtenir une meilleure qualité du signal et une meilleure efficacité de la stratégie.

  2. Il peut être combiné avec d’autres indicateurs pour filtrer les signaux ou déterminer l’amplitude d’ajustement, optimiser les mécanismes d’arrêt des pertes et améliorer la stabilité de la stratégie.

  3. Différents algorithmes de suivi peuvent être étudiés pour réduire la fréquence d’ajustement tout en garantissant un effet de stop-loss.

  4. L’optimisation de la connexion au MT4/MT5 permet d’assurer l’efficacité des alertes et de réduire les problèmes de latence.

  5. Il est possible d’introduire des modes d’arrêt automatique et de commutation manuelle, avec différents mécanismes d’arrêt selon les conditions du marché.

Résumer

Cette stratégie permet d’identifier le moment de l’achat et de la vente en fonction de l’indicateur Stoch, puis de suivre en temps réel les fluctuations des prix et d’ajuster le point de rupture. La stratégie permet de gérer le risque de position de manière proactive en fonction des changements du marché et de réduire l’efficacité des interventions artificielles.

Code source de la stratégie
/*backtest
start: 2022-12-27 00:00:00
end: 2024-01-02 00:00:00
period: 1d
basePeriod: 1h
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/
// © Peter_O

//@version=4
strategy(title="Moving Stop-Loss mechanism", overlay=true)

// This script was created for educational purposes only and it is a spin-off of my previous script:
// https://www.tradingview.com/script/9MJO3AgE-TradingView-Alerts-to-MT4-MT5-dynamic-variables-NON-REPAINTING/
// This spin-off adds very often requested Moving Stop-Loss Mechanism - the logic here moves the stop-loss each time 
// a new pivot is detected.
//
// Last lines of the script include alert() function calls, with a syntax compatible with TradingConnector
// for execution in Forex/indices/commodities/crypto markets via MetaTrader.
// Please note that "tradeid=" variable must be passed with each alert, so that MetaTrader knows which
// trade to modify.

TakeProfitLevel=input(400)

// **** Entries logic, based on Stoch **** {
periodK = 13 //input(13, title="K", minval=1)
periodD = 3 //input(3, title="D", minval=1)
smoothK = 4 //input(4, title="Smooth", minval=1)
k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)

GoLong=crossover(k,d) and k<80
GoShort=crossunder(k,d) and k>20
// } End of entries logic

// **** Pivot-points and stop-loss logic **** {
piv_high = pivothigh(high,1,1)
piv_low = pivotlow(low,1,1)
var float stoploss_long=low
var float stoploss_short=high

pl=valuewhen(piv_low,piv_low,0)
ph=valuewhen(piv_high,piv_high,0)

if GoLong 
    stoploss_long := low<pl ? low : pl
if GoShort 
    stoploss_short := high>ph ? high : ph

plot(stoploss_long, color=color.red, title="stoploss_long")
plot(stoploss_short, color=color.lime, title="stoploss_short")

// Stop-Loss Updating mechanism
enable_stoploss_mechanism=input(true, title="Enable Stoploss Modification Mechanism")
UpdateLongStopLoss = strategy.position_size>0 and strategy.position_size[1]>0 and piv_low and pl!=stoploss_long and not GoLong and enable_stoploss_mechanism
UpdateShortStopLoss = strategy.position_size<0 and strategy.position_size[1]<0 and piv_high and ph!=stoploss_short and not GoShort and enable_stoploss_mechanism
if UpdateLongStopLoss
    stoploss_long := pl
if UpdateShortStopLoss
    stoploss_short := ph

plotshape(UpdateLongStopLoss ? stoploss_long[1]-300*syminfo.mintick : na, location=location.absolute, style=shape.labelup, color=color.lime, textcolor=color.white, text="SL\nmove")
plotshape(UpdateShortStopLoss ? stoploss_short[1]+300*syminfo.mintick : na, location=location.absolute, style=shape.labeldown, color=color.red, textcolor=color.black, text="SL\nmove")
// } End of Pivot-points and stop-loss logic

// **** Trade counter **** {
var int trade_id=0
if GoLong or GoShort
    trade_id:=trade_id+1
// } End of Trade counter

strategy.entry("Long", strategy.long, when=GoLong)
strategy.exit("XLong", from_entry="Long", stop=stoploss_long, profit=TakeProfitLevel)
strategy.entry("Short", strategy.short, when=GoShort)
strategy.exit("XShort", from_entry="Short", stop=stoploss_short, profit=TakeProfitLevel)

if GoLong
    alertsyntax_golong='long slprice=' + tostring(stoploss_long) + ' tradeid=' + tostring(trade_id) + ' tp=' + tostring(TakeProfitLevel)
    alert(message=alertsyntax_golong, freq=alert.freq_once_per_bar_close)
if GoShort
    alertsyntax_goshort='short slprice=' + tostring(stoploss_short) + ' tradeid=' + tostring(trade_id) + ' tp=' + tostring(TakeProfitLevel)
    alert(message=alertsyntax_goshort, freq=alert.freq_once_per_bar_close)
if UpdateLongStopLoss
    alertsyntax_updatelongstoploss='slmod slprice=' + tostring(stoploss_long) + ' tradeid=' + tostring(trade_id)
    alert(message=alertsyntax_updatelongstoploss, freq=alert.freq_once_per_bar_close)
if UpdateShortStopLoss
    alertsyntax_updateshortstoploss='slmod slprice=' + tostring(stoploss_short) + ' tradeid=' + tostring(trade_id)
    alert(message=alertsyntax_updateshortstoploss, freq=alert.freq_once_per_bar_close)