Alerta de Stop Loss Dinâmico TradingView Strategy

Autora:ChaoZhang, Data: 2023-09-18 17:20:06
Tags:

Resumo

Esta estratégia demonstra passar preços de stop loss dinâmicos através de alertas do TradingView para execução em plataformas MT4/5 usando o TradingConnector. As entradas são determinadas usando o indicador estocástico com paradas dinâmicas definidas em pivots recentes.

Estratégia lógica

Entradas longas e curtas em cruzes de linhas estocásticas K e D. Os altos / baixos recentes do pivô são calculados como preços de stop loss dinâmicos. Estes são transmitidos em tempo real ao corretor através de alertas na entrada. Lucros parciais são tomados em uma certa porcentagem da distância de stop loss. Os preços de lucro também podem ser alertas dinamicamente.

Vantagens

  • Paradas dinâmicas permitem colocação cirúrgica de stop loss
  • A obtenção parcial de lucros melhora a eficiência do capital
  • Transmissão em tempo real do preço de stop loss para a conta do corretor
  • Simulação realista e em tempo real

Riscos

  • Existe atraso no indicador estocástico
  • Distúrbios frequentes na obtenção de lucros parciais
  • Variaveis dinâmicas comportam-se de forma diferente em diferentes prazos
  • Percentagem parcial de lucro precisa de otimização

Os riscos podem ser geridos ajustando os parâmetros estocásticos, ajustando o rácio de lucro parcial, etc.

Melhorias

  • Teste diferentes combinações de parâmetros estocásticos
  • Otimizar o rácio de lucro parcial
  • Explore outras abordagens de stop loss como trailing stop
  • Testar a robustez em todos os mercados e produtos

Conclusão

Esta estratégia demonstra a execução de negociações de stop loss dinâmicas do TradingView para o MT4/5 usando novos recursos.


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


Mais.