Alertas de tradingView para MT4 MT5 + variáveis dinâmicas

Autora:ChaoZhang, Data: 24 de maio de 2022 16:59:00
Tags:SMAMT4MT5

Por acaso, estou compartilhando estratégia de Forex lucrativa de código aberto. Por acaso, porque este foi destinado a ser puramente material educacional. Alguns dias atrás, o TradingView lançou um recurso muito poderoso de valores dinâmicos do PineScript agora sendo permitido ser passado em Alertas. E graças ao TradingConnector, eles poderiam ser executados instantaneamente na plataforma MT4 ou MT5 de qualquer corretor do mundo. Então sim - o TradingConnector também funciona com índices e commodities.

A lógica desta estratégia EURUSD 6h é muito simples - baseia-se em crossovers estocásticos com stop-loss definido sob o ponto de pivô mais recente. A definição de stop-loss com precisão cirúrgica é possível exatamente graças à concessão de valores dinâmicos em alertas.

Outra novidade do TradingConnector, é fechar posições apenas parcialmente - desde que o corretor o permita, é claro. Uma posição precisa ter trade_id especificado na entrada, referida em alertas adicionais com fechamento parcial. As especificações detalhadas da sintaxe e funcionalidades dos alertas podem ser encontradas no site TradingConnector. Como incluir variáveis dinâmicas em mensagens de alerta pode ser visto no final do script em alertcondition ((() chamadas.

A estratégia também leva em consideração a comissão.

O slippage é intencionalmente deixado em 0. Devido ao tempo de entrega de menos de 1 segundo do TradingConnector, o slippage é praticamente inexistente. Isso pode ser alcançado especialmente se você estiver usando um servidor VPS, hospedado no mesmo datacenter que os servidores de seus corretores. Estou usando tal configuração, é viável.

Esta estratégia é não-repintando e usa NO TRAILING-STOP ou qualquer outra característica conhecida por ser defeituosa no backtester TradingView. Isso torna esta estratégia à prova de balas e 100% de sucesso garantido?

Para transformar este script em estudo para que os alertas possam ser produzidos, faça duas coisas:

  1. comentário linha de estratégia no início e não comentário linha de estudo
  2. As linhas de comentários 54-59 e as linhas de não comentários 62-65. Depois, adicione script ao gráfico e configure alertas.

Este script foi criado apenas para fins educativos.

Certamente não se trata de um conselho financeiro, mas qualquer pessoa que utilize este script ou qualquer uma das suas partes de alguma forma, deve estar ciente dos altos riscos associados ao trading.

Obrigado @LucF e @a.tesla2018 por me ajudarem com correções de código :)

backtest

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)

Relacionados

Mais.