<?xml version="1.0" encoding="UTF-8"?>        <rss version="2.0"
             xmlns:atom="http://www.w3.org/2005/Atom"
             xmlns:dc="http://purl.org/dc/elements/1.1/"
             xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
             xmlns:admin="http://webns.net/mvcb/"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:content="http://purl.org/rss/1.0/modules/content/">
        <channel>
            <title>
									Dúvidas sobre Otimização e Backtesting - Neo TraderBot Forum				            </title>
            <link>https://neotraderbot.com/community/otimizacao-backtesting/</link>
            <description>Neo TraderBot Discussion Board</description>
            <language>pt-PT</language>
            <lastBuildDate>Fri, 24 Apr 2026 03:24:48 +0000</lastBuildDate>
            <generator>wpForo</generator>
            <ttl>60</ttl>
							                    <item>
                        <title>Só faz compra</title>
                        <link>https://neotraderbot.com/community/otimizacao-backtesting/so-faz-compra/</link>
                        <pubDate>Tue, 11 Mar 2025 02:46:45 +0000</pubDate>
                        <description><![CDATA[estou com um código de divergencia, mas estou apanhando pacas pq não está indo do jeito que quero no renko. só faz compra e não compra nos lugares certos.
var
  Maxima1, Maxima2, Maxima3, ...]]></description>
                        <content:encoded><![CDATA[<p>estou com um código de divergencia, mas estou apanhando pacas pq não está indo do jeito que quero no renko. só faz compra e não compra nos lugares certos.<br /><br /></p>
<pre contenteditable="false">var
  Maxima1, Maxima2, Maxima3, Minima1, Minima2, Minima3: Float;
  Maxima4, Maxima5, Maxima6, Minima4, Minima5, Minima6: Float;
  ADXValor, DIPlus, DIMinus: Float;
  RSI1MAXIMA, RSI2MAXIMA, RSI1MINIMA, RSI2MINIMA: Float;
  MAX1, MAX2, MIN1, MIN2: Float;
  Parte1Concluida: Boolean;
  StopLoss, StopGain: Float;

// Função para verificar se um Renko é branco
function RenkoBranco(index: Integer): Boolean;
begin
  Result := Close &gt; Open;
end;

// Função para verificar se um Renko é preto
function RenkoPreto(index: Integer): Boolean;
begin
  Result := Close &lt; Open;
end;

begin
  // Inicialização de variáveis
  Maxima1 := 0;
  Maxima2 := 0;
  Maxima3 := 0;
  Minima1 := 0;
  Minima2 := 0;
  Minima3 := 0;
  Maxima4 := 0;
  Maxima5 := 0;
  Maxima6 := Highest(High, 55);
  Minima4 := 0;
  Minima5 := 0;
  Minima6 := Lowest(Low, 55);
  ADXValor := 0;
  DIPlus := 0;
  DIMinus := 0;
  RSI1MAXIMA := 0;
  RSI2MAXIMA := 0;
  RSI1MINIMA := 0;
  RSI2MINIMA := 0;
  MAX1 := 0;
  MAX2 := 0;
  MIN1 := 0;
  MIN2 := 0;
  Parte1Concluida := False;
  StopLoss := 0;
  StopGain := 0;

  // Cálculo do ADX e DI+/- (Índice de Movimento Direcional)
  ADXValor := ADX(14, 9);
  DIPlus := DiPDim(14)|0|;  // DI+ (índice positivo)
  DIMinus := DiPDiM(14)|1|; // DI- (índice negativo)

  // Reset das condições se ADX ou DI+/- caírem abaixo de 32
  if (ADXValor &lt; 32) or (DIPlus &lt; 32) or (DIMinus &lt; 32) then
  begin
    Parte1Concluida := False;
    MAX1 := 0;
    MAX2 := 0;
    MIN1 := 0;
    MIN2 := 0;
  end;

  // Parte 1: Identificação do primeiro swing (MAX2 e MIN2)
  if RenkoBranco(2) and RenkoBranco(1) and RenkoPreto(0) then
  begin
    Maxima2 := High;
    MAX2 := Maxima2;
  end;
  
  if RenkoPreto(2) and RenkoPreto(1) and RenkoBranco(0) then
  begin
    Minima2 := Low;
    MIN2 := Minima2;
  end;
  
  Parte1Concluida := (MAX2 &gt; 0) and (MIN2 &gt; 0);
  
  // Parte 2: Identificação do segundo swing (MAX1 e MIN1)
  if (Parte1Concluida) then
  begin
    if RenkoBranco(2) and RenkoBranco(1) and RenkoPreto(0) then
    begin
      Maxima5 := High;
      MAX1 := Maxima5;
    end;
    
    if RenkoPreto(2) and RenkoPreto(1) and RenkoBranco(0) then
    begin
      Minima5 := Low;
      MIN1 := Minima5;
    end;
  end;

  // Cálculo do Stop Loss e Stop Gain
  if (Maxima5 &gt; 0) and (Minima5 &gt; 0) then
  begin
    StopLoss := Abs(Maxima5 - Minima5);
    StopGain := StopLoss * 3;
  end;

  // Regra de Venda (Reversão de Alta para Baixa)
  if (MAX2 &lt; MAX1) then
  begin
    RSI1MAXIMA := RSI(9, 0);    // RSI atual
    RSI2MAXIMA := RSI(9, 0); // RSI anterior
    // Divergência negativa: RSI caindo enquanto o preço sobe
    if (RSI2MAXIMA &gt; RSI1MAXIMA) and (Minima6 &gt; 0) then
    begin
      SellShortLimit(Minima6); // Venda limite na mínima atual
      StopLoss := Maxima5; // Stop na Maxima5
      StopGain := Minima6 - (StopLoss * 3);
    end;
  end;

  // Regra de Compra (Reversão de Baixa para Alta)
  if (MIN2 &gt; MIN1) then
  begin
    RSI1MINIMA := RSI(9, 0);    // RSI atual
    RSI2MINIMA := RSI(9, 0); // RSI anterior
    // Divergência positiva: RSI subindo enquanto o preço cai
    if (RSI2MINIMA &lt; RSI1MINIMA) and (Maxima6 &gt; 0) then
    begin
      BuyLimit(Maxima6); // Compra limite na máxima atual
      StopLoss := Minima5; // Stop na Minima5
      StopGain := Maxima6 + (StopLoss * 3);
    end;
  end;

  // Adicionando os Plots para visualizar os valores
  Plot(MAX1);
  Plot(MAX2);
  Plot(MIN1);
  Plot(MIN2);
  Plot(Minima6);
  Plot(Maxima6);
  Plot(StopLoss);
  Plot(StopGain);
end.
</pre>]]></content:encoded>
						                            <category domain="https://neotraderbot.com/community/otimizacao-backtesting/">Dúvidas sobre Otimização e Backtesting</category>                        <dc:creator>FarMister</dc:creator>
                        <guid isPermaLink="true">https://neotraderbot.com/community/otimizacao-backtesting/so-faz-compra/</guid>
                    </item>
				                    <item>
                        <title>Código com um pequeno erro de administração de ordem</title>
                        <link>https://neotraderbot.com/community/otimizacao-backtesting/codigo-com-um-pequeno-erro-de-administracao-de-ordem/</link>
                        <pubDate>Sat, 06 Apr 2024 05:03:16 +0000</pubDate>
                        <description><![CDATA[Olá a todos! Venho compartilhar com vocês parte de uma administração de ordens para estratégia de execução em Opções que venho usando em conta real há cerca de 20 dias. Meu objetivo com esse...]]></description>
                        <content:encoded><![CDATA[<p>Olá a todos! Venho compartilhar com vocês parte de uma administração de ordens para estratégia de execução em Opções que venho usando em conta real há cerca de 20 dias. Meu objetivo com esse compartilhamento é que vocês possam me ajudar a melhorar o código, pois encontrei um certo bug. Abaixo o código.</p>
<p>Meus robozinhos somente operam Opções de call americanas de Petrobras por conta de liquidez e spread, no código temos até 5 sinais de compra e venda para que a estratégia possa ser executada e nesses 20 dias de uso notei somente um pequeno bug:</p>
<p>* Em certos momentos quando comprado por exemplo a ordem limite é menor que a posição, o que faz com que tenha uma saída precoce da operação, o mesmo para posição vendida, outra observação importante é que esse bug ocorre frequentemente quando troco de ativo já dentro da automatização, caso eu refaça todo o processo de "Nova Automação" dificilmente acontece.</p>
<p>Algo relevante também é que temos um tipo de trailing Stop e Trailing Gain que quando automação é executada de forma correta funciona super bem. </p>
<p>Vou agradecer bastante se puderem compartilhar o conhecimento de vocês para melhorar essa parte do código. </p>
<pre contenteditable="false">if not bPosicionado
   and (Time &gt;= AberturaPosicao) and (Time &lt;= FimAbertura) then
begin

    if (pConfBuy = True) and (pConfBuy1 = True) then
     bSinalCompra := True;
    
    if (aConfBuy = True) and (aConfBuy1 = True) then
     aSinalCompra := True;

    if (zConfBuy = True) and (zConfBuy1 = True) then
     zSinalCompra := True;

    if (yConfBuy = True) and (yConfBuy1 = True) then
     ySinalCompra := True;

    if (rConfBuy = True) and (rConfBuy1 = True) then
     rSinalCompra := True;

    // Confirmação de posição de venda
    if (pConfSell = True) and (pConfSell1 = True) then
     bSinalVenda := True;

    if (aConfSell = True) and (aConfSell1 = True) then
     aSinalVenda := True;
    
    if (zConfSell = True) and (zConfSell1 = True) then
     zSinalVenda := True;

    if (yConfSell = True) and (yConfSell1 = True) then
     ySinalVenda := True;

    if (rConfSell = True) and (rConfSell1 = True) then
     rSinalVenda := True;

  end;
   
    if not bPosicionado and (bSinalCompra = True) or
     (aSinalCompra = True) or 
     (ySinalCompra = True) or
     (rSinalCompra = True) or
     (zSinalCompra = True) then
    begin
      SendOrder(osBuy,otLimit,contratos,close + (Entrada*MinPriceIncrement),close);
      bConfigurouRisco := false;
    end;  

   if GestaodeRisco then
begin

    if (IsBought) then
      begin
        if not bConfigurouRisco and not bTrailingStopAtivado then
          begin   
            fPrecoStop := BuyPrice - cStopEmTicks * MinPriceIncrement;
            fPrecoAlvo := BuyPrice + cAlvoEmTicks * MinPriceIncrement;
            fPrecoStopOffset := fPrecoStop - cStopOffSetEmTicks * MinPriceIncrement;
            bConfigurouRisco := True;

          end;

        if bConfigurouRisco then    
  
        if ((close &gt;= (BuyPrice + StopTrigger*MinPriceIncrement))
           or (StopTrigger = 1)) then
         bTrailingStopAtivado := True;
         
        if (close &gt;= BuyPrice) and (close &gt; close) then
        fFloorTraillingStop := BuyPrice
           + ((close - BuyPrice) / (cStepEmTicks*MinPriceIncrement))
           * cStepEmTicks*MinPriceIncrement;
     
                             
        if ((fFloorTraillingStop - cStepEmTicks*MinPriceIncrement) &gt;= FprecoStop)
         and bTrailingStopAtivado  then
         
                 
        fPrecoStop := fFloorTraillingStop - cStopEmTicks*MinPriceIncrement;
        fPrecoStopOffSet := fPrecoStop - cStopOffSetEmTIcks*MinPriceIncrement;
        fPrecoAlvo := fFloorTraillingStop + cAlvoEmTicks*MinPriceIncrement;  

    

        SellToCoverStop(fPrecoStop,fPrecoStopoffSet);
        SellToCoverLimit(fPrecoAlvo);

        if (close &lt;= fPrecoStopOffSet)  then
          ClosePosition; 

      end;
       
       if not bPosicionado and (bSinalVenda = True) or 
       (aSinalVenda = True) or
       (ySinalVenda = True) or
       (rSinalVenda = True) or 
       (zSinalVenda = True) then
       begin
       SendOrder(osSell,otLimit,contratos,close - (entrada*MinPriceIncrement),close);
       bConfigurouRisco := false;
       end;
   if GestaodeRisco then
begin 
    if (IsSold) then
      begin
        if not bConfigurouRisco and not bTrailingStopAtivado  then
          begin
            fPrecoStop := SellPrice + cStopEmTicks*MinPriceIncrement;
            fPrecoAlvo := SellPrice - cAlvoEmTicks*MinPriceIncrement;
            fPrecoStopOffset := fPrecoStop + cStopOffSetEmTicks*MinPriceIncrement;
            bConfigurouRisco := True;    

          end;
   
        
        if bConfigurouRisco then

        if ((close &lt;= (SellPrice - StopTrigger * MinPriceIncrement)) 
        or (StopTrigger = 1)) then
          bTrailingStopAtivado := True;

          if (Close &lt;= SellPrice) and (close &lt; close) Then
          fFloorTraillingStop := SellPrice
           - ((SellPrice - close) / (cStepEmTicks * MinPriceIncrement))
            * cStepEmTicks * MinPriceIncrement;

        if ((fFloorTraillingStop + cStepEmTicks*MinPriceIncrement) &lt;= fPrecoStop)
         and bTrailingStopAtivado then


          fPrecoStop := fFloorTraillingStop + cStopEmTicks*MinPriceIncrement;
          fPrecoStopOffSet := fPrecoStop + cStopOffSetEmTIcks*MinPriceIncrement;
          fPrecoAlvo := fFloorTraillingStop - cAlvoEmTicks*MinPriceIncrement;
   

        BuyToCoverStop(fPrecoStop,fPrecoStopoffSet);
        BuyToCoverLimit(fPrecoAlvo);
       


        if (close &gt;= fPrecoStopOffSet) then
          ClosePosition;

      end;

 if not bPosicionado and (bConfigurouRisco = true) or (bTrailingStopAtivado = True) then
 begin
    bConfigurouRisco := false;
    bTrailingStopAtivado := false;
  
   end;
   end;
end;
























</pre>
<p> </p>]]></content:encoded>
						                            <category domain="https://neotraderbot.com/community/otimizacao-backtesting/">Dúvidas sobre Otimização e Backtesting</category>                        <dc:creator>Caffaro</dc:creator>
                        <guid isPermaLink="true">https://neotraderbot.com/community/otimizacao-backtesting/codigo-com-um-pequeno-erro-de-administracao-de-ordem/</guid>
                    </item>
				                    <item>
                        <title>ERRO DE GAIN E STOP NO BACKTEST</title>
                        <link>https://neotraderbot.com/community/otimizacao-backtesting/erro-de-gain-e-stop-no-backtest/</link>
                        <pubDate>Tue, 02 Jan 2024 23:51:04 +0000</pubDate>
                        <description><![CDATA[Fala pessoal! blz?
eu criei uma estratégia e rodei o backtest, estava rodando muito bem, até que fui analisar algumas entradas e o robo prioriza o gain e não pega o stop ate fechar o candle...]]></description>
                        <content:encoded><![CDATA[<p>Fala pessoal! blz?</p>
<p>eu criei uma estratégia e rodei o backtest, estava rodando muito bem, até que fui analisar algumas entradas e o robo prioriza o gain e não pega o stop ate fechar o candle vigente. É como se o stop só ativasse posteiormente, no proximo candle.</p>
<p>Exemplo: Coloquei ele para rodar no tempo gráfico de 20min, quando o candle posterior rompe para cima ou para baixo, ele entra e teoricamente deveria ativar o stop e o gain. Sendo o gain e stop de 5 ptos no dolar, percebi que no mesmo candle, ele vai para o stop, chega a andar 7 pontos contra (teoricamente ele deveria stopar), e depois vai para o gain de 5ptos, ele considera gain e não ativa o stop. Tudo isso acontecendo antes de fechar o candle de 20min...Se não tivesse pego o gain, ele so stopa no proximo candle. Alguem sabe porque isso acontece e como ajustar?</p>
<p>desde ja agradeço</p>]]></content:encoded>
						                            <category domain="https://neotraderbot.com/community/otimizacao-backtesting/">Dúvidas sobre Otimização e Backtesting</category>                        <dc:creator>qiroz</dc:creator>
                        <guid isPermaLink="true">https://neotraderbot.com/community/otimizacao-backtesting/erro-de-gain-e-stop-no-backtest/</guid>
                    </item>
				                    <item>
                        <title>frequência superamostrada</title>
                        <link>https://neotraderbot.com/community/otimizacao-backtesting/frequencia-superamostrada/</link>
                        <pubDate>Mon, 29 May 2023 13:40:45 +0000</pubDate>
                        <description><![CDATA[Bom dia! sou novo aqui e estou gostando bastante dos conteudos, não encontrei algum topico falando sobre frequência superamostrada, por isso criei este..Tenho visto muitas divergencias entre...]]></description>
                        <content:encoded><![CDATA[<p>Bom dia! sou novo aqui e estou gostando bastante dos conteudos, não encontrei algum topico falando sobre <span>frequência superamostrada, por isso criei este..<br />Tenho visto muitas divergencias entre o backtest da estrategia e o resultado quando em automatização.. poderiam explicar melhor o que seria fazer o teste em frequência superamostrada? <br />por exemplo algo que  tenho tido dificuldades é quanto ao tipo de envio de ordens no backtest (ordens limit não retornam resultados, preciso por do tipo stop) e na automatização, o inverso... tenho a impressão que o backtest representa muito pouco a realidade em ambiente real..</span></p>]]></content:encoded>
						                            <category domain="https://neotraderbot.com/community/otimizacao-backtesting/">Dúvidas sobre Otimização e Backtesting</category>                        <dc:creator>LuisSilva</dc:creator>
                        <guid isPermaLink="true">https://neotraderbot.com/community/otimizacao-backtesting/frequencia-superamostrada/</guid>
                    </item>
				                    <item>
                        <title>Mesma Estrategia em Codigos Diferentes gerando resultados diferentes</title>
                        <link>https://neotraderbot.com/community/otimizacao-backtesting/mesma-estrategia-em-codigos-diferentes-gerando-resultados-diferentes/</link>
                        <pubDate>Sun, 07 May 2023 15:43:21 +0000</pubDate>
                        <description><![CDATA[Ola amigos,
Eu tenho uma estrategia que escrevi numa logica em que faço o entrelaço de Vendas e Compras separadamente sem usar a palavra &quot;senao&quot;.    E noutro, faço tudo entrelaçado, usando ...]]></description>
                        <content:encoded><![CDATA[<p>Ola amigos,</p>
<p>Eu tenho uma estrategia que escrevi numa logica em que faço o entrelaço de Vendas e Compras separadamente sem usar a palavra "senao".    E noutro, faço tudo entrelaçado, usando "senao".   Colocarei abaixo os dois codigos (rodei Backtest em Winfut M5 e M15)</p>
<p>Alguem consegue me dizer se existe erro em algum desses codigos? Ja fiquei cego, de tanto revisar.   </p>
<p>É possivel dizer qual dos dois codigos seria "mais confiavel"?  ou seja, aquele que preduz o Backteste mais confiavel e com maior probabilidade de replicar em conta real?</p>
<p><span style="text-decoration: underline;color: #ff0000"><strong>===== Abaixo Codigo com entrelaços fechado:</strong></span></p>
<p>INPUT<br />Desvio(2); <br />PeriodoBanda(40); <br />Alvo(1);<br />StopTicks(150);<br />SpreadTicks(50);<br />HrInicio (945);<br />HrFim (1200);<br />HrFechar (1700);<br /><br />Var<br />BSup,BInf,StopVTicks, StopCTicks:float;<br />SinalVenda, SinalCompra : Booleano;<br /><br /><br /><br />begin<br /><br />//=== Regras das Variaveis<br />BSup := BollingerBands(Desvio, PeriodoBanda, 1)|0|;<br />BInf := BollingerBands(Desvio, PeriodoBanda, 1)|1|; <br />StopVTicks := SellPrice + StopTicks*MinPriceIncrement;<br />StopCTicks := BuyPrice - StopTicks*MinPriceIncrement; <br /><br />Se (Time&gt;HrInicio) e (HrFim&lt;1300) entao<br /><br />//======= VENDA =========<br /><br />Inicio<br /><br />SinalVenda := (Fechamento &gt; BSup) <br />e (Fechamento &lt; BSup)<br />e (Fechamento &gt; (Lowest(low,Alvo))+10*MinPriceIncrement);<br /><br /><br />se (not IsSold) e (SinalVenda = True) entao<br />Inicio<br />SellShortStop(minima - 1*MinPriceIncrement, minima - 3*MinPriceIncrement );<br />Fim; <br /><br />se IsSold então<br />Inicio<br />BuyToCoverStop(StopVTicks, StopVTicks+SpreadTicks); <br />BuyToCoverLimit(Lowest(low,Alvo)+ 3 *MinPriceIncrement,SellPosition); <br />Fim;<br />Fim;<br /><br />//======= COMPRA ==========<br /><br />Inicio<br /><br />SinalCompra := (Fechamento &lt; BInf) <br />e (Fechamento &gt; BInf)<br />e (Fechamento &lt; Highest(high,Alvo)-10*MinPriceIncrement);<br /><br />se (not isBought) e SinalCompra = True então<br />Inicio<br />BuyStop(maxima + 1*MinPriceIncrement, maxima + 3*MinPriceIncrement );<br />Fim;<br /><br />se isBought então<br />Inicio<br />SellToCoverStop(StopCTicks, StopCTicks-SpreadTicks);<br />SellToCoverLimit(Highest(high,Alvo) - 3*MinPriceIncrement,BuyPosition); <br />Fim;<br /><br />Fim;<br /><br />//=== plotagem ===========<br /><br />Plot (BInf);<br />Plot2 (BSup);<br />Se SinalCompra=True então PaintBar(clGreeN);<br />Se SinalVenda=True então PaintBar(clYellow);<br /><br />Inicio<br />Se (Time&gt;HrFechar) e hasPosition então CancelPendingOrders;<br />Se (Time&gt;HrFechar) e HasPosition então ClosePosition;<br />Fim;<br /><br />Fim;</p>
<p> </p>
<p><span style="text-decoration: underline;color: #ff0000"><strong>===  Agora, segue o outro codigo, em que tudo esta entrelaçado usando a expressao "senao"</strong></span></p>
<p>INPUT<br />Desvio(2); //testar os parametros, com 1 desvio, faz 40k e 1400operacoes<br />PeriodoBanda(40); //testar os parametros<br />Alvo(1);<br />StopTicks(150);<br />SpreadTicks(50);<br />HorarioInicio(0945); <br />HorarioFim(1200);  <br />HorarioFecharPosicoes(1700); </p>
<p><br />Var<br />BSup,BInf,StopVTicks, StopCTicks:float;<br />SinalVenda, SinalCompra : Booleano;<br />StopCompra, StopVenda: real;<br />HorarioNegociacao, HorarioZeragem : booleano;<br />BarraPosicionado, BarraNaoPosicionado : inteiro;<br /><br /><br />Inicio<br />//===== CONFIGURA=====<br />BSup := BollingerBands(Desvio, PeriodoBanda, 1)|0|;<br />BInf := BollingerBands(Desvio, PeriodoBanda, 1)|1|; <br />StopVTicks := SellPrice + StopTicks*MinPriceIncrement;<br />StopCTicks := BuyPrice - StopTicks*MinPriceIncrement; <br /><br />//====== VERIFICA O HORÁRIO DE NEGOCIAÇÃO ======<br />Se (Time &gt;= HorarioInicio) e (Time &lt;= HorarioFim) então<br />HorarioNegociacao := verdadeiro<br />Senao<br />HorarioNegociacao := falso;<br /><br />//====== VERIFICA O HORARIO DE ZERAGEM ======<br />Se (Time &gt;= HorarioFecharPosicoes) então<br />HorarioZeragem := verdadeiro<br />Senao<br />HorarioZeragem := falso;<br /><br /><br />//====== VERIFICA SE ESTÁ COMPRADO ======<br />Se IsBought e (CurrentBar &lt;&gt; BarraNaoPosicionado) entao <br />Inicio<br />SellToCoverStop(StopCTicks, StopCTicks-SpreadTicks);<br />SellToCoverLimit(Highest(high,Alvo) - 3*MinPriceIncrement,BuyPosition);<br />Se HorarioZeragem ou (Abertura &lt; StopVTicks) entao ClosePosition; <br />Fim<br />Senao<br />Inicio<br />//====== VERIFICA SE ESTÁ VENDIDO =====<br />Se IsSold e (CurrentBar &lt;&gt; BarraNaoPosicionado) entao<br />Inicio<br />BuyToCoverStop(StopVTicks, StopVTicks+SpreadTicks); <br />BuyToCoverLimit(Lowest(low,Alvo)+ 3 *MinPriceIncrement,SellPosition); <br />Se HorarioZeragem ou (Abertura &gt; StopVTicks) entao ClosePosition;<br />BarraPosicionado := CurrentBar; <br />Fim<br />Senao<br />Inicio<br />//====== VERIFICA SE O HORARIO ATUAL PERMITE NOVAS ENTRADAS ======<br />Se HorarioNegociacao e (CurrentBar &lt;&gt; BarraPosicionado) entao<br />Inicio<br />//====== ENTRADAS COMPRAS =====<br />SinalCompra := (Fechamento &lt; BInf) <br />e (Fechamento &gt; BInf)<br />e (Fechamento &lt; Highest(high,Alvo)-10*MinPriceIncrement);<br /><br />se (not isBought) e SinalCompra = True então<br />Inicio<br />BuyStop(maxima + 1*MinPriceIncrement, maxima + 3*MinPriceIncrement );<br />Fim<br />Senao<br />//====== ENTRADAS VENDAS =====<br />SinalVenda := (Fechamento &gt; BSup)<br />e (Fechamento &lt; BSup)<br />e (Fechamento &gt; (Lowest(low,Alvo))+10*MinPriceIncrement);<br />Se (not IsSold) e (SinalVenda = True) entao<br />SellShortStop(minima - 1*MinPriceIncrement, minima - 3*MinPriceIncrement );<br />BarraNaoPosicionado := CurrentBar;<br />Fim<br />Senao<br />//====== CANCELA AS ORDENS PENDENTES CASO NÃO ESTEJA COMPRADO E NÃO ESTEJA EM HORÁRIO DE NEGOCIAÇÃO ======<br />CancelPendingOrders;<br />Fim;<br />Fim;<br />Fim;<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> </p>]]></content:encoded>
						                            <category domain="https://neotraderbot.com/community/otimizacao-backtesting/">Dúvidas sobre Otimização e Backtesting</category>                        <dc:creator>Paulo Ferreira</dc:creator>
                        <guid isPermaLink="true">https://neotraderbot.com/community/otimizacao-backtesting/mesma-estrategia-em-codigos-diferentes-gerando-resultados-diferentes/</guid>
                    </item>
				                    <item>
                        <title>Setup - Cruzamento de 3 médias</title>
                        <link>https://neotraderbot.com/community/otimizacao-backtesting/setup-cruzamento-de-3-medias/</link>
                        <pubDate>Thu, 30 Mar 2023 19:42:02 +0000</pubDate>
                        <description><![CDATA[Prezados membros,
 
       por oportunidade da série de vídeos &quot;Passeando pela Lojinha&quot;, na qual realizamos a análise de desempenho das estratégias mais assinadas na Loja de Estratégias do...]]></description>
                        <content:encoded><![CDATA[<p>Prezados membros,</p>
<p> </p>
<p>       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, compartilho abaixo a implementação do setup clássico de Cruzamento de 3 médias (Triple crossover) da Comunidade NeoTraderBot.</p>
<p> </p>
<pre contenteditable="false">input
  pQtdePeriodosMediaRapida(4);
  pQtdePeriodosMediaIntermediaria(9);
  pQtdePeriodosMediaLenta(18);

var
  bSinalCompra,bSinalVenda,bSinalLiquida       : boolean;
  fMediaRapida,fMediaIntermediaria,fMediaLenta : float;

begin
  //Inicializa variáveis a cada processamento
  bSinalCompra := False;
  bSinalVenda := False;
  bSinalLiquida := False;

  fMediaRapida := MediaExp(pQtdePeriodosMediaRapida, Close);
  fMediaIntermediaria := MediaExp(pQtdePeriodosMediaIntermediaria, Close);
  fMediaLenta := MediaExp(pQtdePeriodosMediaLenta, Close);

  //Plota indicadores
  SetPlotColor(1,clRed);
  SetPlotWidth(1,2);
  SetPlotStyle(1,psDash);
  SetPlotColor(2,clOlive);
  SetPlotWidth(2,2);
  SetPlotColor(3,clWhite);
  SetPlotWidth(3,2);
  Plot(fMediaRapida);
  Plot2(fMediaIntermediaria);
  Plot3(fMediaLenta);

  //Se já houver média lenta, realiza cálculos de entrada/saida/liquidação
  if (fMediaLenta &lt;&gt; 0) then
  begin
    if  (fMediaRapida &gt;= fMediaIntermediaria)
    and (fMediaIntermediaria &gt; fMediaLenta)
    and (fMediaIntermediaria &lt;= fMediaLenta)  
    then bSinalCompra := True;

    if  isBought
    and (fMediaRapida &lt; fMediaIntermediaria)
    and (fMediaRapida &gt;= fMediaIntermediaria) 
    then bSinalLiquida := True;

    if  (fMediaRapida &lt;= fMediaIntermediaria)
    and (fMediaIntermediaria &lt; fMediaLenta)
    and (fMediaIntermediaria &gt;= fMediaLenta)  
    then bSinalVenda := True;

    if  isSold
    and (fMediaRapida &gt; fMediaIntermediaria)
    and (fMediaRapida &lt;= fMediaIntermediaria) 
    then bSinalLiquida := True;
  end;

  if Not hasPosition and bSinalCompra then BuyAtMarket;
  if Not hasPosition and bSinalVenda then SellShortAtMarket;
  if hasPosition and bSinalLiquida then ClosePosition;

end;</pre>]]></content:encoded>
						                            <category domain="https://neotraderbot.com/community/otimizacao-backtesting/">Dúvidas sobre Otimização e Backtesting</category>                        <dc:creator>Johnathas</dc:creator>
                        <guid isPermaLink="true">https://neotraderbot.com/community/otimizacao-backtesting/setup-cruzamento-de-3-medias/</guid>
                    </item>
				                    <item>
                        <title>Função DailyResult retornando valores estranhos</title>
                        <link>https://neotraderbot.com/community/otimizacao-backtesting/funcao-dailyresult-retornando-valores-estranhos/</link>
                        <pubDate>Fri, 24 Mar 2023 02:11:32 +0000</pubDate>
                        <description><![CDATA[Gostaria de usar a função DailyResult na minha estratégia para mini-índice. A ideia é utilizar o saldo do resultado diário positivo para operar mais contratos. Por exemplo, se a minha estrat...]]></description>
                        <content:encoded><![CDATA[<p>Gostaria de usar a função DailyResult na minha estratégia para mini-índice. A ideia é utilizar o saldo do resultado diário positivo para operar mais contratos. Por exemplo, se a minha estratégia gerar 200 reais positivos, eu poderia operar mais 2 contratos. O problema é que a função DailyResult retorna um valor que, para mim, não faz sentido. Gostaria de obter o valor em Reais, mas vem um número que inclusive não bate nem com os pontos obtidos. Alguém aí já notou isso?</p>]]></content:encoded>
						                            <category domain="https://neotraderbot.com/community/otimizacao-backtesting/">Dúvidas sobre Otimização e Backtesting</category>                        <dc:creator>Ladis</dc:creator>
                        <guid isPermaLink="true">https://neotraderbot.com/community/otimizacao-backtesting/funcao-dailyresult-retornando-valores-estranhos/</guid>
                    </item>
				                    <item>
                        <title>Backtesting em período maior (Dados Históricos)</title>
                        <link>https://neotraderbot.com/community/otimizacao-backtesting/backtesting-em-periodo-maior-dados-historicos/</link>
                        <pubDate>Tue, 21 Feb 2023 13:39:21 +0000</pubDate>
                        <description><![CDATA[Alguém sabe se é possível fazer um backtesting em gráficos de 5m,6m etc. em um período maior exp. dados de 01 ano. Parece que o Profit tem uma limitação de 60.000 mil candles, aqui quando us...]]></description>
                        <content:encoded><![CDATA[<p>Alguém sabe se é possível fazer um backtesting em gráficos de 5m,6m etc. em um período maior exp. dados de 01 ano. Parece que o Profit tem uma limitação de 60.000 mil candles, aqui quando uso 5min me da aproximadamente de 4 a 6 meses de dados. Mesmo alterando a data exp. 01.01.2022 até 30.05.2022 não aparece dos dados.</p>]]></content:encoded>
						                            <category domain="https://neotraderbot.com/community/otimizacao-backtesting/">Dúvidas sobre Otimização e Backtesting</category>                        <dc:creator>Credson</dc:creator>
                        <guid isPermaLink="true">https://neotraderbot.com/community/otimizacao-backtesting/backtesting-em-periodo-maior-dados-historicos/</guid>
                    </item>
				                    <item>
                        <title>Atualização do Profit,e falha no Robô.</title>
                        <link>https://neotraderbot.com/community/otimizacao-backtesting/atualizacao-do-profite-falha-no-robo/</link>
                        <pubDate>Thu, 26 Jan 2023 12:22:14 +0000</pubDate>
                        <description><![CDATA[Olá pessoal,
Tenho uma estrategia que no backtest, fazia 1 ou 2 operações por dia. Depois da atualização do profit, coloquei o robô para rodar,(não no automatizador de estrategia) e agora a...]]></description>
                        <content:encoded><![CDATA[<p>Olá pessoal,</p>
<p>Tenho uma estrategia que no backtest, fazia 1 ou 2 operações por dia. Depois da atualização do profit, coloquei o robô para rodar,(não no automatizador de estrategia) e agora aparece umas 3,4 ou 5, operações. quando eu volto a fazer o backtest do mesmo dia mostra somente 1 operação.</p>
<p>Se alguem puder me ajudar, estrategia de dolar 5 minutos.</p>
<p> </p>
<p>begin<br />If (BuyPosition = 0) and (SellPosition = 0) then<br />begin<br />Se (Fechamento &lt; Fechamento) e (lowest(Low,6) &lt; lowest(Low,13)) e (SlowStochastic(7) &gt; 35) e (MediaExp(13,close) &lt; (Media(20,close))) then<br />If (time &gt; 1045) and (time &lt; 1240) then<br />BuyAtMarket;<br />Se (Fechamento &gt; Fechamento) e (highest(high,6) &gt; highest(high,13)) e (SlowStochastic(7) &lt; 65) e (MediaExp(13,close) &gt; (Media(20,close))) then<br />If (time &gt; 1045) and (time &lt; 1240) then<br />SellShortAtMarket;<br />end;<br />If (BuyPosition = 1) then<br />begin<br />SellToCoverStop(BuyPrice + 11,BuyPrice + 11);<br />SellToCoverStop(BuyPrice - 7,BuyPrice - 7);<br />If (time &gt; 1300) then<br />SellToCoverAtMarket;<br />end;<br />If (SellPosition = 1) then<br />Begin<br />BuyToCoverStop(SellPrice - 11,SellPrice - 11);<br />BuyToCoverStop(SellPrice + 7,SellPrice + 7);<br />If (time &gt; 1300) then<br />BuyToCoverAtMarket;<br />end;<br />If time &gt; 1700 then ClosePosition;<br />end;</p>]]></content:encoded>
						                            <category domain="https://neotraderbot.com/community/otimizacao-backtesting/">Dúvidas sobre Otimização e Backtesting</category>                        <dc:creator>Marcos16</dc:creator>
                        <guid isPermaLink="true">https://neotraderbot.com/community/otimizacao-backtesting/atualizacao-do-profite-falha-no-robo/</guid>
                    </item>
				                    <item>
                        <title>Otimizar &quot;Como limitar a quantidade de trades por dia&quot;</title>
                        <link>https://neotraderbot.com/community/otimizacao-backtesting/otimizar-como-limitar-a-quantidade-de-trades-por-dia/</link>
                        <pubDate>Thu, 26 Jan 2023 02:49:14 +0000</pubDate>
                        <description><![CDATA[Tudo bem?
 
Assim como este código limita a quantidade de trades por dia, teria como contar a quantidade de &quot;loss&quot; por dia?
 
Como alternativa, eu estou tentando acumular o &quot;Saldo do los...]]></description>
                        <content:encoded><![CDATA[<p>Tudo bem?</p>
<p> </p>
<p>Assim como este código limita a quantidade de trades por dia, teria como contar a quantidade de "loss" por dia?</p>
<p> </p>
<p>Como alternativa, eu estou tentando acumular o "Saldo do loss/ Resultado do dia" com variável "vSaldo", calculando os trades com "Stop":</p>
<p>vSaldo := vSaldo - resultadoStop</p>
<p> </p>
<p>Como debug, estou utilizando PlotText, porém só aparece "0,00":</p>
<p>PlotText(vSaldo, clLime, 2, 8);</p>
<p> </p>
<p>Alguma sugestão?</p>
<p>Agradeço muito.</p>]]></content:encoded>
						                            <category domain="https://neotraderbot.com/community/otimizacao-backtesting/">Dúvidas sobre Otimização e Backtesting</category>                        <dc:creator>Reginaldo</dc:creator>
                        <guid isPermaLink="true">https://neotraderbot.com/community/otimizacao-backtesting/otimizar-como-limitar-a-quantidade-de-trades-por-dia/</guid>
                    </item>
							        </channel>
        </rss>
		