Stratégie de trading avec stop loss dynamique


Date de création: 2023-09-18 17:20:06 Dernière modification: 2023-09-18 17:20:06
Copier: 0 Nombre de clics: 901
1
Suivre
1617
Abonnés

Aperçu

La stratégie montre comment utiliser les variables dynamiques de TradingView pour transmettre le prix d’arrêt dans les alertes et exécuter des transactions sur la plate-forme MT4/5 via TradingConnector. La stratégie utilise l’indicateur stochastique pour déterminer le moment de l’entrée en bourse, définissant dynamiquement la résistance au support le plus récent comme point d’arrêt, et peut également être partiellement arrêtée.

Principe de stratégie

Les lignes K et D de l’indicateur stochastique sont en hausse et en baisse. Le point de résistance au support le plus proche est calculé comme prix d’arrêt. Après l’entrée, le prix d’arrêt est transmis en temps réel au courtier via une variable dynamique.

Analyse des avantages

  • Le stop loss dynamique permet de régler précisément le prix de stop loss
  • Une partie de la suspension pour améliorer l’efficacité des fonds
  • Transmission en temps réel du Stop Loss à votre compte de courtier
  • Le prix de stop loss est proche du disque réel, simulant la réalité

Analyse des risques

  • Les stochastiques sont en retard
  • Des arrêts partiels trop fréquents affectent la tenue des positions
  • Les variables dynamiques ont des effets différents selon les périodes
  • La proportion d’arrêt partiel doit être optimisée

Il est possible de raccourcir le cycle des paramètres stochastiques, d’ajuster la proportion des arrêts partiels, etc. pour contrôler le risque.

Direction d’optimisation

  • Test de différentes combinaisons de paramètres stochastiques
  • Optimisation des réglages de proportion pour les freins partiels
  • Essayez différentes méthodes de stop loss, comme le stop loss mobile
  • Testé sur plusieurs marchés, plusieurs variétés

Résumer

Cette stratégie montre comment utiliser les nouvelles fonctionnalités de TradingView pour exécuter des transactions stop-loss dynamiques sur MT4 / 5. Elle peut servir de cadre de base pour un backtesting supplémentaire. Des ajustements d’optimisation sont encore nécessaires pour les variétés spécifiques.

Code source de la stratégie
/*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")