Neo traderBot

Neo traderBot

Você sabia?

Um backtesting adequado deve buscar simular situações práticas do mercado (slippage, custo de operação, etc...)

leaf leftleaf right
Notifications
Clear all

Setup PFR - Preço de Fechamento de Reversão

2 Posts
2 Usuários
1 Reactions
263 Visualizações
(@admin)
Membro Admin
Registrou: 2 anos atrás
Posts: 216
Iniciador do tópico  

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;
This topic was modified 1 ano atrás by Johnathas

   
ToledoX82 reacted
Citar
(@toledox82)
Membro eminente
Registrou: 2 anos atrás
Posts: 17
 

Show, eu vi você comentando la no grupo da LS Quant hehe Nice catch!


   
ReplyCitar