Abordamos o tema de automatização de estratégias em NTSL, MQL5 e NinjaScript!
Boa tarde,
Esses dias postei aqui e em outro um indicador baseado no SAR PARABOLICO.
Ele funciona basicamente na virada do SAR Parabolico (Fator 0.04 e Limite 0.3).
-Entrada no fechamento do candle que deu a virada do SAR Parabolico
-STOP LOSS 50 pontos abaixo do indicador SAR Parabolico
-Gain 200 pontos faz parcial e stop no preço de entrada e ordem OCO subindo stop 100 pontos a cada 50 pontos que seguir o preço.
Tenho facilidade em indicador, mas em automatização infelizmente não consigo sair do lugar. Se alguém puder me ajudar ficaria muito grato.
Segue o indicador que utilizo como parametro:
var psar, dir,midPrice : Real; psarCor : Inteiro; buySignal,sellSignal,changeCond : Booleano; Inicio midPrice := (open + high + low + close) / 1; psar := ParabolicSAR(0.02, 0.2); Se (psar < fechamento) entao dir := 1 senao dir := -1; buySignal := (dir[1] = -1) e (dir = 1); sellSignal := (dir = -1) e (dir[1] = 1); changeCond := dir <> dir[3]; Se buySignal entao PlotText("C", clgreen, 0, 16); //verde Se sellSignal entao PlotText("V", clred, -1, 16); //vermelho Plot(psar); Plot2(midPrice); se (dir = 1 ) entao psarcor := clgreen senao psarcor := clred; SetPlotColor(1, psarCor); PaintBar(psarCor); Se changeCond entao noPlot(1); Plot(2); Fim;
Você já tentou dar uma olhada nesse Snippet ( https://neotraderbot.com/docs/material-iniciantes/programando-estrategias/exemplos-de-codigos/ordens-administracao-trade/#stoploss-com-breakeven)
Mesmo iniciantes, seguindo o vídeo e a explicação, é possível adaptar essa estratégia ao código.
Em todo caso, vou dar um ponta pé inicial na sua estratégia, onde será possível você rodar no automatizador, mas com uma ordem oco criada a parte por você no editor de estratégia oco e posteriormente apontando a saída da estratégia no editor do modulo de automação.
var psar,dir,midPrice : Real; psarCor : Inteiro; buySignal,sellSignal,changeCond : Booleano; Inicio midPrice := (open + high + low + close) / 1; psar := ParabolicSAR(0.02,0.2); Se (psar < fechamento) entao dir := 1 senao dir := - 1; buySignal := (dir[1] = - 1) e (dir = 1); sellSignal := (dir = - 1) e (dir[1] = 1); changeCond := dir <> dir[3]; Se buySignal entao begin BuyAtMarket; PlotText("C",clgreen,0,16); //verde end; Se sellSignal entao begin SellShortAtMarket; PlotText("V",clred, - 1,16); //vermelho end; Plot(psar); Plot2(midPrice); se (dir = 1) entao psarcor := clgreen senao psarcor := clred; SetPlotColor(1,psarCor); PaintBar(psarCor); Se changeCond entao noPlot(1); Plot(2); Fim;