Alertes de tradingView à MT4 MT5 + variables dynamiques NON-REPAINTING

Auteur:ChaoZhang est là., Date: le 24 mai 2022 à 16h59
Les étiquettes:SMAMT4MT5 Résultats

Par hasard, je partage une stratégie Forex rentable open-source. Par hasard, parce que cela visait à être un matériel purement éducatif. Il y a quelques jours, TradingView a publié une fonctionnalité très puissante de valeurs dynamiques de PineScript qui est maintenant autorisée à être transmise dans les alertes. Et grâce à TradingConnector, elles pourraient être instantanément exécutées dans la plate-forme MT4 ou MT5 de n'importe quel courtier dans le monde. Donc oui - TradingConnector fonctionne avec des indices et des matières premières aussi.

La logique de cette stratégie EURUSD 6h est très simple - elle est basée sur des croisements stochastiques avec un stop-loss défini sous le point de pivot le plus récent. Le paramétrage du stop-loss avec une précision chirurgicale est possible précisément grâce à l'allocation de valeurs dynamiques dans les alertes. TradingConnector a également été mis à niveau pour tirer parti de ces valeurs dynamiques et il permet désormais d'exécuter des transactions avec des ordres stop-loss, take-profit, ainsi que des ordres stop et limités précalculés.

Une autre nouvelle fonctionnalité de TradingConnector, est la fermeture partielle des positions - à condition que le courtier le permette, bien sûr. Une position doit avoir trade_id spécifié à l'entrée, mentionné dans les alertes ultérieures avec fermeture partielle. Des spécifications détaillées de la syntaxe et des fonctionnalités des alertes peuvent être trouvées sur le site Web de TradingConnector.

La stratégie tient également compte des commissions.

Le slippage est intentionnellement laissé à 0. En raison du temps de livraison de TradingConnector inférieur à 1 seconde, le slippage est pratiquement inexistant. Cela peut être réalisé surtout si vous utilisez un serveur VPS, hébergé dans le même centre de données que les serveurs de vos courtiers. J'utilise une telle configuration, c'est faisable.

Cette stratégie est NON-REPAINTING et utilise NO TRAILING-STOP ou toute autre fonctionnalité connue pour être défectueuse dans le backtester TradingView. Est-ce que cela rend cette stratégie à l'épreuve des balles et 100% garantie de succès?

Pour transformer ce script en étude afin que des alertes puissent être produites, faites 2 choses:

  1. commentaire stratégie ligne au début et non-commentaire étude ligne
  2. les lignes de commentaire 54-59 et les lignes de non-commentaire 62-65. Puis ajoutez un script au graphique et configurez les alertes.

Ce script a été créé à des fins éducatives uniquement.

Il ne s'agit certainement pas d'un conseil financier. Toute personne utilisant ce script ou l'une quelconque de ses parties de quelque manière que ce soit, doit être consciente des risques élevés liés au trading.

Merci @LucF et @a.tesla2018 de m'avoir aidé avec les corrections de code :)

test de retour

img


/*backtest
start: 2022-04-23 00:00:00
end: 2022-05-22 23:59:00
period: 15m
basePeriod: 5m
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=5
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

TakeProfitDistance = input(400)
TakePartialProfitDistance = input(150)

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

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

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

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

if GoLong
    stoploss_long := low < pl ? low : pl
    stoploss_long
if GoShort
    stoploss_short := high > ph ? high : ph
    stoploss_short
// } End of Pivot-points and stop-loss logic

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

if GoLong
    alertsyntax_golong = 'long slprice=' + str.tostring(stoploss_long) + ' tp1=' + str.tostring(TakePartialProfitDistance) + ' part1=0.5 tp=' + str.tostring(TakeProfitDistance)
    alert(message=alertsyntax_golong, freq=alert.freq_once_per_bar_close)
if GoShort
    alertsyntax_goshort = 'short slprice=' + str.tostring(stoploss_short) + ' tp1=' + str.tostring(TakePartialProfitDistance) + ' part1=0.5 tp=' + str.tostring(TakeProfitDistance)
    alert(message=alertsyntax_goshort, freq=alert.freq_once_per_bar_close)


if GoLong
    strategy.entry("Enter Long", strategy.long)
else if GoShort
    strategy.entry("Enter Short", strategy.short)

Relationnée

Plus de