Stratégie de négociation dynamique d'alerte de cessation de perte

Auteur:ChaoZhang est là., Date: 18 septembre 2023 à 17h20:06
Les étiquettes:

Résumé

Cette stratégie démontre le passage de prix de stop loss dynamiques via des alertes TradingView pour l'exécution dans les plateformes MT4/5 à l'aide de TradingConnector. Les entrées sont déterminées à l'aide de l'indicateur stochastique avec des arrêts dynamiques définis aux pivots récents. Une prise de profit partielle est également possible.

La logique de la stratégie

Les entrées longues et courtes sur les croisements des lignes stochastiques K et D. Les hauts / bas de pivot récents sont calculés sous forme de prix de stop loss dynamiques. Ceux-ci sont transmis en temps réel au courtier via des alertes à l'entrée. Des bénéfices partiels sont pris à un certain pourcentage de la distance de stop loss. Les prix de profit peuvent également être alertés dynamiquement.

Les avantages

  • Les arrêts dynamiques permettent le placement chirurgical de la perte de stop
  • La prise partielle de bénéfices améliore l'efficacité du capital
  • Transfert en temps réel du prix du stop loss sur le compte de courtage
  • Une simulation réaliste et en direct

Les risques

  • L'indicateur stochastique présente un décalage
  • La prise de bénéfices partiels fréquente perturbe la détention
  • Les variables dynamiques se comportent différemment selon les délais
  • Le pourcentage de profit partiel doit être optimisé

Les risques peuvent être gérés en ajustant les paramètres stochastiques, en ajustant le ratio de profit partiel, etc.

Améliorations

  • Tester différentes combinaisons de paramètres stochastiques
  • Optimiser le ratio de prise de profit partiel
  • Explorez d' autres approches de stop-loss comme le trailing stop
  • Test de la robustesse sur tous les marchés et produits

Conclusion

Cette stratégie démontre l'exécution dynamique des opérations de stop loss de TradingView à MT4/5 en utilisant de nouvelles fonctionnalités.


/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// strategy(title="TradingView Alerts to MT4 MT5 Strategy example", commission_type=strategy.commission.cash_per_order, commission_value=0.00003, overlay=false, default_qty_value=100000, initial_capital=1000)
// study(title="TradingView Alerts to MT4 MT5 Strategy example")  //uncomment this line and comment previous one to make it a study producing alerts
//
// This script was created for educational purposes only.
// It is showing how to use dynamic variables in TradingView alerts.
// And how to execute them in Forex, indices and commodities markets
// thanks to www.tradingconnector.com

TakeProfitLevel=input(400)
TakePartialProfitLevel=input(150)

// **** Entries logic **** {
periodK = input(14, title="K", minval=1)
periodD = input(3, title="D", minval=1)
smoothK = input(4, title="Smooth", minval=1)
k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)
plot(k, title="%K", color=color.blue)
plot(d, title="%D", color=color.orange)
h0 = hline(80)
h1 = hline(20)
fill(h0, h1, color=color.purple, transp=75)

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
// } End of Pivot-points and stop-loss logic

// **** Trade counter and partial closing mechanism **** {
var int trade_id=0
if GoLong or GoShort
    trade_id:=trade_id[1]+1

TakePartialProfitLong = barssince(GoLong)<barssince(GoShort) and crossover(high,(valuewhen(GoLong,close,0)+TakePartialProfitLevel*syminfo.mintick))
TakePartialProfitShort = barssince(GoLong)>barssince(GoShort) and crossunder(low,(valuewhen(GoShort,close,0)-TakePartialProfitLevel*syminfo.mintick))
// } End of Trade counter and partial closing mechanism


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


// alertcondition("Long", when=GoLong, message="long slprice={{stoploss_long}} tradeid={{trade_id}} tp=TakeProfitLevel")
// alertcondition("Short", when=GoShort, message="short slprice={{stoploss_short}} tradeid={{trade_id}} tp=TakeProfitLevel")
// alertcondition("ClosePartLong", when=TakePartialProfitLong, message="closepart tradeit={{trade_id}} part=0.5")
// alertcondition("ClosePartShort", when=TakePartialProfitShort, message="closepart tradeit={{trade_id}} part=0.5")


Plus de