Abordamos o tema de automatização de estratégias em NTSL, MQL5 e NinjaScript!
Prezados membros,
por oportunidade da série de vídeos "Passeando pela Lojinha", na qual realizamos a análise de desempenho das estratégias mais assinadas na Loja de Estratégias do Profit Chart, e tendo em vista que a estratégia disponibilizada pela L&S Quant de PFR estava aparentemente incorreta (verificação realizada em 29/03/2023), compartilho abaixo a implementação da Comunidade NeoTraderBot.
input pRiscoGanho(2.0); var bGraficoTemporalDiarioOuAcima: boolean; bSinalCompraPFR, bSinalVendaPFR: boolean; fMedia08, fMedia80: float; fStop: float; fMinima2UltCandles, fMaxima2UltCandles: float; begin if CurrentBar = 0 then bGraficoTemporalDiarioOuAcima := (GraphicInterval = itDaily) or (GraphicInterval = itWeekly) or (GraphicInterval = itMonthly); bSinalCompraPFR := false; bSinalVendaPFR := false; fMedia08 := MediaExp(8,Close); fMedia80 := MediaExp(80,Close); fMinima2UltCandles := Lowest(Low,2); fMaxima2UltCandles := Highest(High,2); plot(fMedia08); plot2(fMedia80); setPlotColor(1,clWhite); setPlotColor(2,clWhite); if not hasPosition and ( (not bGraficoTemporalDiarioOuAcima) or ((bGraficoTemporalDiarioOuAcima) and not(bSinalCompraPFR[1] or bSinalVendaPFR[1])) ) then begin //Sinal PFR de Compra if (Low <= fMinima2UltCandles[1]) and (Close >= Close[1]) and (fMedia08 > fMedia80) and (fMedia08 > fMedia08[1]) and (fMedia80 > fMedia80[1]) then begin bSinalCompraPFR := true; PaintBar(clBlue); PlotText("C", clBlue, 3, 10, Low - 5*MinPriceIncrement); end; //Sinal PFR de Venda if (High >= fMaxima2UltCandles[1]) and (Close <= Close[1]) and (fMedia08 < fMedia80) and (fMedia08 < fMedia08[1]) and (fMedia80 < fMedia80[1]) then begin bSinalVendaPFR := true; PaintBar(clRed); PlotText("V", clRed, 3, 10, High + 5*MinPriceIncrement); end; end; // Apregoa ordens stop if bGraficoTemporalDiarioOuAcima then begin if bSinalCompraPFR[1] then begin BuyStop(High[1] + 1*MinPriceIncrement, High[1] + 10*MinPriceIncrement); fStop := High[1] - Low[1]; end; if bSinalVendaPFR[1] then begin SellShortStop(Low[1] - 1*MinPriceIncrement, Low[1] - 10*MinPriceIncrement); fStop := High[1] - Low[1]; end; end else begin if bSinalCompraPFR then begin BuyStop(High + 1*MinPriceIncrement, High + 10*MinPriceIncrement); fStop := High[1] - Low[1]; end; if bSinalVendaPFR then begin SellShortStop(Low - 1*MinPriceIncrement, Low - 10*MinPriceIncrement); fStop := High[1] - Low[1]; end; end; // Gerencia posição if IsBought then begin SellToCoverStop(buyPrice - fStop, buyPrice - fStop - 10*MinPriceIncrement); SellToCoverLimit(BuyPrice + pRiscoGanho*fStop); end; if IsSold then begin BuyToCoverStop(sellPrice + fStop, sellPrice + fStop + 10*MinPriceIncrement); BuyToCoverLimit(sellPrice - pRiscoGanho*fStop); end; end;
Show, eu vi você comentando la no grupo da LS Quant hehe Nice catch!