Stratégie de suivi de la perte d'arrêt

Auteur:ChaoZhang est là., Date: 2024-01-03 16h15 et 29h
Les étiquettes:

img

Résumé

Cette stratégie utilise l'indicateur Stoch pour générer des signaux d'entrée. Après avoir entré une position, il suivra de nouveaux sommets ou bas en temps réel pour ajuster dynamiquement le stop loss. En même temps, la stratégie enverra également des informations de modification du stop loss à MT4/MT5 via la fonction d'alerte pour ajuster les positions dans le trading réel.

Principe de stratégie

  1. La stratégie génère des signaux d'achat et de vente basés sur l'indicateur Stoch. Lorsque la ligne Stoch K traverse au-dessus de la ligne D depuis le bas, un signal d'achat est généré. Lorsque la ligne K traverse au-dessous de la ligne D depuis le haut, un signal de vente est généré.

  2. Après avoir entré une position, la stratégie suit le dernier bas du prix le plus bas et le dernier haut du prix le plus élevé en temps réel sous forme de niveaux de stop loss dynamiques.

  3. Lorsqu'un changement du niveau de stop loss est détecté, la stratégie génère un ordre de modification de stop loss via la fonction d'alerte et l'envoie à MT4/MT5 pour ajuster le niveau de stop loss des transactions réelles en temps réel.

  4. Cette stratégie prend en charge le contrôle manuel de l'activation du mécanisme de stop loss dynamique.

Analyse des avantages

  1. Le mécanisme dynamique d'arrêt des pertes de suivi peut ajuster de manière flexible les niveaux d'arrêt des pertes en fonction des fluctuations du marché afin de contrôler efficacement les risques.

  2. La fonction d'alerte permet l'envoi en temps réel d'informations sur l'ajustement de la perte de stockage au MT4/MT5 pour une gestion automatisée sans intervention manuelle.

  3. Les annotations visuelles des ajustements de stop loss sur le graphique facilitent la visualisation et la vérification des effets de stop loss.

  4. La prise en charge du contrôle manuel du mécanisme de suivi du stop loss permet une adaptation flexible aux différentes conditions du marché.

  5. Combinée à l'indicateur Stoch pour déterminer les opportunités, la stratégie peut filtrer efficacement les fausses ruptures et améliorer la stabilité.

Analyse des risques

  1. L'indicateur Stoch peut générer des signaux croisés fréquents, ce qui entraîne un risque d'opérations plus inefficaces.

  2. Dans des conditions de marché extrêmes, les arrêts de pertes pourraient être pénétrés, incapables d'éviter complètement d'énormes pertes.

  3. Des problèmes de connexion d'alerte tels que des interruptions et des retards peuvent survenir, empêchant la rétroaction en temps réel des ajustements.

  4. L'intervalle d'ajustement doit être équilibré par rapport aux coûts.

Directions d'optimisation

  1. Différentes combinaisons de paramètres peuvent être testées pour optimiser l'indicateur Stoch pour une meilleure qualité du signal et une meilleure performance de la stratégie.

  2. D'autres indicateurs peuvent être combinés pour filtrer les signaux ou déterminer des plages d'ajustement pour 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 assurant des effets de stop loss.

  4. Les méthodes de connexion avec MT4/MT5 peuvent être améliorées afin d'assurer des alertes rapides et efficaces et de minimiser les retards.

  5. Les modes d'arrêt automatique et manuel des pertes peuvent être introduits pour utiliser différents mécanismes dans différentes conditions de marché.

Résumé

Cette stratégie détermine d'abord les opportunités de trading basées sur l'indicateur Stoch, puis suit les fluctuations de prix pendant les positions pour ajuster dynamiquement les stop-loss et émet automatiquement des informations d'ajustement via des ordres d'alerte. Un tel mécanisme dynamique permet une gestion active du risque de position en fonction des changements du marché avec moins d'intervention manuelle.


/*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)


Plus de