<?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 Programação - Neo TraderBot Forum				            </title>
            <link>https://neotraderbot.com/community/programacao-ninjascript/</link>
            <description>Neo TraderBot Discussion Board</description>
            <language>pt-PT</language>
            <lastBuildDate>Fri, 24 Apr 2026 03:22:17 +0000</lastBuildDate>
            <generator>wpForo</generator>
            <ttl>60</ttl>
							                    <item>
                        <title>Pegar Preço Teórico (antes da abertura oficial do mercado)</title>
                        <link>https://neotraderbot.com/community/programacao-ninjascript/pegar-preco-teorico-antes-da-abertura-oficial-do-mercado/</link>
                        <pubDate>Fri, 22 Aug 2025 11:39:06 +0000</pubDate>
                        <description><![CDATA[Bom dia Fórum ...
 
Hoje eu executo uma estratégia de forma manual que estou estudando um forma de &quot;robotizar&quot; ela.
 
Durante o leilão de abertura, eu preciso ficar monitorando o preço o...]]></description>
                        <content:encoded><![CDATA[<p>Bom dia Fórum ...</p>
<p> </p>
<p>Hoje eu executo uma estratégia de forma manual que estou estudando um forma de "robotizar" ela.</p>
<p> </p>
<p>Durante o leilão de abertura, eu preciso ficar monitorando o preço onde o ativo, no caso o dolar, vai abrir. Dessa forma eu sei qual estratégia eu deverei usar no momento em que ele abrir.</p>
<p> </p>
<p>Gostaria de saber se existe alguma forma de pegar esse "preço teórico" (antes da abertura oficial do mercado) através de algumação função da NTSL ?</p>
<p> </p>
<p>Utilizando o OPEN eu pego somente no momento em que o mercado abre o primeiro candle e eu gostaria de pegar um pouco antes da abertura para já mostrar qual a estratégia deverá ser utilizada.</p>
<p> </p>
<p>Obrigado</p>]]></content:encoded>
						                            <category domain="https://neotraderbot.com/community/programacao-ninjascript/">Dúvidas sobre Programação</category>                        <dc:creator>Ronaldo Araujo</dc:creator>
                        <guid isPermaLink="true">https://neotraderbot.com/community/programacao-ninjascript/pegar-preco-teorico-antes-da-abertura-oficial-do-mercado/</guid>
                    </item>
				                    <item>
                        <title>Ordens stop sendo canceladas em novo candle</title>
                        <link>https://neotraderbot.com/community/programacao-ninjascript/ordens-stop-sendo-canceladas-em-novo-candle/</link>
                        <pubDate>Mon, 26 May 2025 11:38:53 +0000</pubDate>
                        <description><![CDATA[Pessoal, desculpe a pergunta básica porém nunca havia passado por isso antes, tô programando uma estratégia onde coloco uma ordem stop de compra/venda na máxima e mínima de um determinado ca...]]></description>
                        <content:encoded><![CDATA[<p>Pessoal, desculpe a pergunta básica porém nunca havia passado por isso antes, tô programando uma estratégia onde coloco uma ordem stop de compra/venda na máxima e mínima de um determinado candle e o que pegar primeiro cancelo a outra ordem, porém o que está acontecendo é que se nenhuma das ordens é acionada, quando inicia o próximo candle o Profit cancela as duas ordens ! Alguém já viu isso ? Terei que criar as ordens a cada novo candle até pegar ? Testei no módulo de automação usando replay de mercado.</p>]]></content:encoded>
						                            <category domain="https://neotraderbot.com/community/programacao-ninjascript/">Dúvidas sobre Programação</category>                        <dc:creator>danielmoura</dc:creator>
                        <guid isPermaLink="true">https://neotraderbot.com/community/programacao-ninjascript/ordens-stop-sendo-canceladas-em-novo-candle/</guid>
                    </item>
				                    <item>
                        <title>Erro: Compilando ... Parser: O código deve começar com begin Erro de Sintaxe</title>
                        <link>https://neotraderbot.com/community/programacao-ninjascript/erro-compilando-parser51-o-codigo-deve-comecar-com-begin-erro-de-sintaxe/</link>
                        <pubDate>Sun, 25 May 2025 11:33:01 +0000</pubDate>
                        <description><![CDATA[// Robô de tendência com stop móvel, alvo e auto reverse// Evita operar em mercado lateral usando ADX// Definição de parâmetros de entradaInputs:PeriodoMME(20),PeriodoADX(14),LimiteADX(20),A...]]></description>
                        <content:encoded><![CDATA[<p>// Robô de tendência com stop móvel, alvo e auto reverse<br />// Evita operar em mercado lateral usando ADX<br /><br />// Definição de parâmetros de entrada<br />Inputs:<br />PeriodoMME(20),<br />PeriodoADX(14),<br />LimiteADX(20),<br />AlvoTicks(38),<br />StopTicks(20);<br /><br />// Declaração de variáveis<br />Vars:<br />MediaMME(0.0),<br />ValorADX(0.0),<br />TendenciaAlta(false),<br />TendenciaBaixa(false);<br /><br />begin<br />// Cálculo da MME e do ADX<br />MediaMME = XAverage(Close, PeriodoMME);<br />ValorADX = ADX(PeriodoADX);<br /><br />// Verifica se mercado está com tendência<br />if ValorADX &gt; LimiteADX then<br />begin<br />TendenciaAlta = Close &gt; MediaMME;<br />TendenciaBaixa = Close &lt; MediaMME;<br /><br />// Se não estiver posicionado<br />if MarketPosition = 0 then<br />begin<br />if TendenciaAlta then<br />Buy ("Compra") next bar at market<br />else if TendenciaBaixa then<br />SellShort ("Venda") next bar at market;<br />end;<br />end;<br /><br />// Se estiver comprado, aplica alvo, stop móvel e auto reverse<br />if MarketPosition = 1 then<br />begin<br />Sell ("StopMovel") next bar at EntryPrice - StopTicks * MinMove / PriceScale stop;<br />Sell ("Alvo") next bar at EntryPrice + AlvoTicks * MinMove / PriceScale limit;<br /><br />// Auto reverse<br />if Close &lt;= EntryPrice - StopTicks * MinMove / PriceScale then<br />SellShort ("AutoReverseV") next bar at market<br />else if Close &gt;= EntryPrice + AlvoTicks * MinMove / PriceScale then<br />SellShort ("AutoReverseV") next bar at market;<br />end;<br /><br />// Se estiver vendido, aplica alvo, stop móvel e auto reverse<br />if MarketPosition = -1 then<br />begin<br />BuyToCover ("StopMovel") next bar at EntryPrice + StopTicks * MinMove / PriceScale stop;<br />BuyToCover ("Alvo") next bar at EntryPrice - AlvoTicks * MinMove / PriceScale limit;<br /><br />// Auto reverse<br />if Close &gt;= EntryPrice + StopTicks * MinMove / PriceScale then<br />Buy ("AutoReverseC") next bar at market<br />else if Close &lt;= EntryPrice - AlvoTicks * MinMove / PriceScale then<br />Buy ("AutoReverseC") next bar at market;<br />end;<br />end;</p>]]></content:encoded>
						                            <category domain="https://neotraderbot.com/community/programacao-ninjascript/">Dúvidas sobre Programação</category>                        <dc:creator>Florisvaldo Rios</dc:creator>
                        <guid isPermaLink="true">https://neotraderbot.com/community/programacao-ninjascript/erro-compilando-parser51-o-codigo-deve-comecar-com-begin-erro-de-sintaxe/</guid>
                    </item>
				                    <item>
                        <title>Plotar Media movel do 15m no 5m</title>
                        <link>https://neotraderbot.com/community/programacao-ninjascript/plotar-media-movel-do-15m-no-5m/</link>
                        <pubDate>Wed, 23 Apr 2025 17:00:34 +0000</pubDate>
                        <description><![CDATA[Tarde, moçada!
Estou tentando criar um indicador de tendência e preciso plotar a média móvel exponencial de 8 períodos do 15 minutos no gráfico de 5 minutos.
Óbvio que o próprio Profit já ...]]></description>
                        <content:encoded><![CDATA[<p>Tarde, moçada!</p>
<p>Estou tentando criar um indicador de tendência e preciso plotar a média móvel exponencial de 8 períodos do 15 minutos no gráfico de 5 minutos.</p>
<p>Óbvio que o próprio Profit já tem a ferramenta para fazer isso, mas como preciso utilizar um conjunto de médias móveis para serem utilizadas em vários tempos graficos (sem alterar as medias base do 15m), então preciso plotar com código.</p>
<p> </p>
<p>Alguma ideia de como fazer isso?</p>
<p> </p>
<p>Abs</p>]]></content:encoded>
						                            <category domain="https://neotraderbot.com/community/programacao-ninjascript/">Dúvidas sobre Programação</category>                        <dc:creator>patrickjota</dc:creator>
                        <guid isPermaLink="true">https://neotraderbot.com/community/programacao-ninjascript/plotar-media-movel-do-15m-no-5m/</guid>
                    </item>
				                    <item>
                        <title>Erro de Compilação - &quot;Código deve começar com begin&quot;</title>
                        <link>https://neotraderbot.com/community/programacao-ninjascript/erro-de-compilacao-codigo-deve-comecar-com-begin/</link>
                        <pubDate>Tue, 15 Apr 2025 11:15:46 +0000</pubDate>
                        <description><![CDATA[Tinha um indicador (coloração) e decidi transformar em automação, com auxilio dos seus posts.
Mas depois de atualizar, colocar a programação para ordens, e até funcionar, começou a dar erro...]]></description>
                        <content:encoded><![CDATA[<p>Tinha um indicador (coloração) e decidi transformar em automação, com auxilio dos seus posts.</p>
<p>Mas depois de atualizar, colocar a programação para ordens, e até funcionar, começou a dar erro de compilação de sintaxe.</p>
<p>Parser: O código deve começar com begin<br />Erro de Sintaxe</p>
<p>Segue o código: </p>
<p><span style="font-size: 8pt">input</span><br /><span style="font-size: 8pt">TakeProfitPontos(400); // Valor padrão de 400 pontos para o Take Profit</span><br /><span style="font-size: 8pt">  StopLossPontos(200); // Valor padrão de 200 pontos para o Stop Loss</span><br /><span style="font-size: 8pt">  cStopOffsetEmpontos(10);</span><br /><span style="font-size: 8pt">bGestaoDeRiscoPelaEstrategia(true);</span><br /><span style="font-size: 8pt">iHorarioInicioAberturaPosicao(0905);</span><br /><span style="font-size: 8pt">iHorarioFimAberturaPosicao(1630);</span><br /><span style="font-size: 8pt">iHorarioEncerramentoDaytrade(1645);</span><br /><br /><span style="font-size: 8pt">VAR</span><br /><span style="font-size: 8pt">  xEma52,</span><br /><span style="font-size: 8pt">  xVWAP,</span><br /><span style="font-size: 8pt">  xOBV,</span><br /><span style="font-size: 8pt">  xEma52OBV,</span><br /><span style="font-size: 8pt">  xEma200OBV : float;</span><br /><span style="font-size: 8pt">  xSelect     : integer;</span><br /><span style="font-size: 8pt">  nStopPoints : float;</span><br /><span style="font-size: 8pt">  nTargetPoints : float;</span><br /><span style="font-size: 8pt">  nContracts : integer;</span><br /><span style="font-size: 8pt">  bPosicionado: boolean;</span><br /><span style="font-size: 8pt">  fPrecoStop, fPrecoAlvo, fPrecoStopOffset: float;</span><br /><span style="font-size: 8pt">  bConfigurouRisco: boolean;</span><br /><br /><span style="font-size: 8pt">BEGIN</span><br /><span style="font-size: 8pt">  nStopPoints := StopLossPontos;</span><br /><span style="font-size: 8pt">  nTargetPoints := TakeProfitPontos;</span><br /><br /><span style="font-size: 8pt">  begin</span><br /><span style="font-size: 8pt">    // Cálculo do OBV</span><br /><span style="font-size: 8pt">    if Close &gt; Close then</span><br /><span style="font-size: 8pt">      xOBV := xOBV + QuantityVol(false)</span><br /><span style="font-size: 8pt">    else if Close &lt; Close then</span><br /><span style="font-size: 8pt">      xOBV := xOBV - QuantityVol(false)</span><br /><span style="font-size: 8pt">    else</span><br /><span style="font-size: 8pt">      xOBV := xOBV;</span><br /><span style="font-size: 8pt">  end;</span><br /><br /><span style="font-size: 8pt">  // Cálculo dos indicadores</span><br /><span style="font-size: 8pt">  xEma52    := MediaExp(52, Close);</span><br /><span style="font-size: 8pt">  xVWAP     := VWAP(1);</span><br /><span style="font-size: 8pt">  xEma52OBV := MediaExp(52, xOBV);</span><br /><span style="font-size: 8pt">  xEma200OBV := MediaExp(200, xOBV);</span><br /><br /><span style="font-size: 8pt">  // Reset da variável de seleção</span><br /><span style="font-size: 8pt">  xSelect := 0;</span><br /><br /><span style="font-size: 8pt">  // Condição de Compra (Long)</span><br /><span style="font-size: 8pt">  if ((Close &lt; xEma52) or (Close &lt; xVWAP) or (xOBV &lt; xEma200OBV))</span><br /><span style="font-size: 8pt">     and (Close &gt; xEma52)</span><br /><span style="font-size: 8pt">     and (Close &gt; xVWAP)</span><br /><span style="font-size: 8pt">     and (Close - xEma52 &lt; 450)</span><br /><span style="font-size: 8pt">     and (xOBV &gt; xEma52OBV)</span><br /><span style="font-size: 8pt">     and (xOBV &gt; xEma200OBV) then</span><br /><span style="font-size: 8pt">  begin</span><br /><span style="font-size: 8pt">    xSelect := 1;</span><br /><span style="font-size: 8pt">  end;</span><br /><br /><span style="font-size: 8pt">  // Condição de Venda (Short)</span><br /><span style="font-size: 8pt">  if ((Close &gt; xEma52) or (Close &gt; xVWAP) or (xOBV &gt; xEma200OBV))</span><br /><span style="font-size: 8pt">     and (Close &lt; xEma52)</span><br /><span style="font-size: 8pt">     and (xEma52 - Close &lt; 450)</span><br /><span style="font-size: 8pt">     and (Close &lt; xVWAP)</span><br /><span style="font-size: 8pt">     and (xOBV &lt; xEma52OBV)</span><br /><span style="font-size: 8pt">     and (xOBV &lt; xEma200OBV) then</span><br /><span style="font-size: 8pt">  begin</span><br /><span style="font-size: 8pt">    xSelect := -1;</span><br /><span style="font-size: 8pt">  end;</span><br /><br /><span style="font-size: 8pt">// Lógica de Execução de Ordens</span><br /><span style="font-size: 8pt"> begin</span><br /><span style="font-size: 8pt">  if xSelect = 1 then</span><br /><span style="font-size: 8pt">  begin</span><br /><span style="font-size: 8pt">   BuyAtMarket;</span><br /><br /><span style="font-size: 8pt">   if bGestaoDeRiscoPelaEstrategia then</span><br /><span style="font-size: 8pt">  begin</span><br /><span style="font-size: 8pt">    //POSIÇÃO COMPRADA</span><br /><span style="font-size: 8pt">    //Código responsável pela configuração das ordens de stoploss e take profit NA ENTRADA</span><br /><span style="font-size: 8pt">    fPrecoStop := BuyPrice - StopLossPontos * MinPriceIncrement;</span><br /><span style="font-size: 8pt">    fPrecoAlvo := BuyPrice + TakeProfitPontos * MinPriceIncrement;</span><br /><span style="font-size: 8pt">    fPrecoStopOffset := fPrecoStop - cStopOffsetEmpontos * MinPriceIncrement;</span><br /><br /><span style="font-size: 8pt">    SetStopLoss(fPrecoStop, fPrecoStopOffset);</span><br /><span style="font-size: 8pt">    SetProfitTarget(fPrecoAlvo);</span><br /><span style="font-size: 8pt">  end;</span><br /><span style="font-size: 8pt">  end</span><br /><span style="font-size: 8pt">  else if xSelect = -1 then</span><br /><span style="font-size: 8pt">  begin</span><br /><span style="font-size: 8pt">   SellShortAtMarket;</span><br /><span style="font-size: 8pt">   if bGestaoDeRiscoPelaEstrategia then</span><br /><span style="font-size: 8pt">  begin</span><br /><span style="font-size: 8pt">   //POSIÇÃO VENDIDA</span><br /><span style="font-size: 8pt">    //Código responsável pela configuração das ordens de stoploss e take profit NA ENTRADA</span><br /><span style="font-size: 8pt">    fPrecoStop := SellPrice + StopLossPontos * MinPriceIncrement;</span><br /><span style="font-size: 8pt">    fPrecoAlvo := SellPrice - TakeProfitPontos * MinPriceIncrement;</span><br /><span style="font-size: 8pt">    fPrecoStopOffset := fPrecoStop + cStopOffsetEmpontos * MinPriceIncrement;</span><br /><br /><span style="font-size: 8pt">    SetStopLoss(fPrecoStop, fPrecoStopOffset);</span><br /><span style="font-size: 8pt">    SetProfitTarget(fPrecoAlvo);</span><br /><span style="font-size: 8pt">  end;</span><br /><span style="font-size: 8pt">  end;</span><br /><br /><span style="font-size: 8pt">  // Encerramento Daytrade</span><br /><span style="font-size: 8pt">  if Time &gt;= iHorarioEncerramentoDaytrade and isPositionOpen then</span><br /><span style="font-size: 8pt">  begin</span><br /><span style="font-size: 8pt">    ClosePosition;</span><br /><span style="font-size: 8pt">  end;</span><br /><span style="font-size: 8pt">END;</span><br /><span style="font-size: 8pt">END;</span></p>
<p> </p>
<p>Como corrigir? Já procurei tudo. Em outro código semelhante, inclusive onde esse identifica erro de sintaxe, os erros são outros:</p>
<p>Parser: Tem que ser identificador na declaração de variável<br />Parser: O código deve começar com begin<br />Erro de Sintaxe</p>
<p>Segue o codigo (é uma variação para DOL).</p>
<p><span style="font-size: 8pt">INPUT</span><br /><span style="font-size: 8pt">StopLossPontos(7); // Valor padrão de 7 pontos para o Stop Loss</span><br /><span style="font-size: 8pt">TakeProfitPontos(21); // Valor padrão de 21 pontos para o Take Profit</span><br /><span style="font-size: 8pt">cStopOffsetEmpontos(2);</span><br /><span style="font-size: 8pt">bGestaoDeRiscoPelaEstrategia(true);</span><br /><span style="font-size: 8pt">iHorarioInicioAberturaPosicao(0905);</span><br /><span style="font-size: 8pt">iHorarioFimAberturaPosicao(1630);</span><br /><span style="font-size: 8pt">iHorarioEncerramentoDaytrade(1645);</span><br /><br /><br /><span style="font-size: 8pt">VAR</span><br /><span style="font-size: 8pt">  xEma52,</span><br /><span style="font-size: 8pt">  xVWAP,</span><br /><span style="font-size: 8pt">  xOBV,</span><br /><span style="font-size: 8pt">  xEma52OBV,</span><br /><span style="font-size: 8pt">  xEma200OBV : float;</span><br /><span style="font-size: 8pt">  xSelect     : integer;</span><br /><span style="font-size: 8pt">  nStopPoints : float;</span><br /><span style="font-size: 8pt">  nTargetPoints : float;</span><br /><span style="font-size: 8pt">  nContracts : integer;</span><br /><span style="font-size: 8pt">  bPosicionado: boolean;</span><br /><span style="font-size: 8pt">  fPrecoStop, fPrecoAlvo, fPrecoStopOffset: float;</span><br /><span style="font-size: 8pt">  bConfigurouRisco: boolean;</span><br /><br /><span style="font-size: 8pt">BEGIN</span><br /><span style="font-size: 8pt">  nStopPoints := StopLossPontos;</span><br /><span style="font-size: 8pt">  nTargetPoints := TakeProfitPontos;</span><br /><span style="font-size: 8pt">  nContracts := NumContratos;</span><br /><br /><span style="font-size: 8pt">  begin</span><br /><span style="font-size: 8pt">    // Cálculo do OBV</span><br /><span style="font-size: 8pt">    if Close &gt; Close then</span><br /><span style="font-size: 8pt">      xOBV := xOBV + QuantityVol(false)</span><br /><span style="font-size: 8pt">    else if Close &lt; Close then</span><br /><span style="font-size: 8pt">      xOBV := xOBV - QuantityVol(false)</span><br /><span style="font-size: 8pt">    else</span><br /><span style="font-size: 8pt">      xOBV := xOBV;</span><br /><span style="font-size: 8pt">  end;</span><br /><br /><span style="font-size: 8pt">  // Cálculo dos indicadores</span><br /><span style="font-size: 8pt">  xEma52   := MediaExp(52, Close);</span><br /><span style="font-size: 8pt">  xVWAP    := VWAP(1);</span><br /><span style="font-size: 8pt">  xEma52OBV := MediaExp(52, xOBV);</span><br /><span style="font-size: 8pt">  xEma200OBV := MediaExp(200, xOBV);</span><br /><br /><span style="font-size: 8pt">  // Reset da variável de seleção</span><br /><span style="font-size: 8pt">  xSelect := 0;</span><br /><br /><span style="font-size: 8pt">  // Condição de Compra (Long)</span><br /><span style="font-size: 8pt">  if ((Close &lt; xEma52) or (Close &lt; xVWAP) or (xOBV &lt; xEma200OBV))</span><br /><span style="font-size: 8pt">     and (Close &gt; xEma52)</span><br /><span style="font-size: 8pt">     and (Close &gt; xVWAP)</span><br /><span style="font-size: 8pt">     and (Close - xEma52 &lt; 450)</span><br /><span style="font-size: 8pt">     and (xOBV &gt; xEma52OBV)</span><br /><span style="font-size: 8pt">     and (xOBV &gt; xEma200OBV) then</span><br /><span style="font-size: 8pt">  begin</span><br /><span style="font-size: 8pt">    xSelect := 1;</span><br /><span style="font-size: 8pt">  end;</span><br /><br /><span style="font-size: 8pt">  // Condição de Venda (Short)</span><br /><span style="font-size: 8pt">  if ((Close &gt; xEma52) or (Close &gt; xVWAP) or (xOBV &gt; xEma200OBV))</span><br /><span style="font-size: 8pt">     and (Close &lt; xEma52)</span><br /><span style="font-size: 8pt">     and (xEma52 - Close &lt; 450)</span><br /><span style="font-size: 8pt">     and (Close &lt; xVWAP)</span><br /><span style="font-size: 8pt">     and (xOBV &lt; xEma52OBV)</span><br /><span style="font-size: 8pt">     and (xOBV &lt; xEma200OBV) then</span><br /><span style="font-size: 8pt">  begin</span><br /><span style="font-size: 8pt">    xSelect := -1;</span><br /><span style="font-size: 8pt">  end;</span><br /><br /><span style="font-size: 8pt">  // Lógica de Execução de Ordens</span><br /><span style="font-size: 8pt">  begin</span><br /><span style="font-size: 8pt">    if xSelect = 1 then</span><br /><span style="font-size: 8pt">    begin</span><br /><span style="font-size: 8pt">      BuyAtMarket(nContracts);</span><br /><span style="font-size: 8pt">      PrecoCompra := LastTrade; // Armazena o preço de execução da compra</span><br /><span style="font-size: 8pt">    end</span><br /><span style="font-size: 8pt">    else if xSelect = -1 then</span><br /><span style="font-size: 8pt">    begin</span><br /><span style="font-size: 8pt">      SellShortAtMarket(nContracts);</span><br /><span style="font-size: 8pt">      PrecoVenda := LastTrade; // Armazena o preço de execução da venda</span><br /><span style="font-size: 8pt">    end;</span><br /><span style="font-size: 8pt">  end;</span><br /><br /><span style="font-size: 8pt">  // Lógica para envio de Stop Loss e Take Profit APÓS a ordem principal ser executada</span><br /><span style="font-size: 8pt">  if PrecoCompra &gt; 0 then</span><br /><span style="font-size: 8pt">  begin</span><br /><span style="font-size: 8pt">    SetStopLoss(nStopPoints);</span><br /><span style="font-size: 8pt">    SetProfitTarget(nTargetPoints);</span><br /><span style="font-size: 8pt">    PrecoCompra := 0; // Reseta a variável para não enviar ordens novamente no mesmo candle</span><br /><span style="font-size: 8pt">  end;</span><br /><br /><span style="font-size: 8pt">  if PrecoVenda &gt; 0 then</span><br /><span style="font-size: 8pt">  begin</span><br /><span style="font-size: 8pt">    SetStopLoss(nStopPoints);</span><br /><span style="font-size: 8pt">    SetProfitTarget(nTargetPoints);</span><br /><span style="font-size: 8pt">    PrecoVenda := 0; // Reseta a variável para não enviar ordens novamente no mesmo candle</span><br /><span style="font-size: 8pt">  end;</span><br /><span style="font-size: 8pt">end</span></p>
<p>Agradeço se der uma luz. Já procurei em todo lugar aqui, IA, etc.</p>
<p> </p>
<p>Não consigo nem testar a teoria. </p>
<p> </p>
<p>Obrigado.</p>
<p> </p>]]></content:encoded>
						                            <category domain="https://neotraderbot.com/community/programacao-ninjascript/">Dúvidas sobre Programação</category>                        <dc:creator>Pulgasp</dc:creator>
                        <guid isPermaLink="true">https://neotraderbot.com/community/programacao-ninjascript/erro-de-compilacao-codigo-deve-comecar-com-begin/</guid>
                    </item>
				                    <item>
                        <title>Codigo de estrategia dando erro na comp</title>
                        <link>https://neotraderbot.com/community/programacao-ninjascript/codigo-de-estrategia-dando-erro-na-comp/</link>
                        <pubDate>Wed, 11 Sep 2024 14:22:11 +0000</pubDate>
                        <description><![CDATA[Bom dia!!
estou tentando adicionar essa estrategia no Ninja trader e na hora que compila da os seguintes erros conforme a imagem anexada!
estrategia de fechar operação quando chegar um val...]]></description>
                        <content:encoded><![CDATA[<p>Bom dia!!<br /><br /><br /></p>
<p>estou tentando adicionar essa estrategia no Ninja trader e na hora que compila da os seguintes erros conforme a imagem anexada!</p>
<p>estrategia de fechar operação quando chegar um valor X.</p>
<p>Poderiam me ajudar, não sei nada de programação, codigo gerado na IA</p>
<p> </p>
<p>using NinjaTrader.Gui.Tools;<br />using NinjaTrader.NinjaScript;<br />using NinjaTrader.NinjaScript.Strategy;<br />using NinjaTrader.Gui.Tools;<br />using NinjaTrader.NinjaScript.StrategyGenerator;<br />using NinjaTrader.Gui.Tools;<br />using NinjaTrader.Cbi;<br />using NinjaTrader.Cbi;<br />using NinjaTrader.NinjaScript.Strategy;<br /><br />namespace NinjaTrader.NinjaScript.Strategy<br />{<br />public class CloseOnTargetProfit : Strategy<br />{<br />// Defina o valor do lucro alvo aqui (em dólares)<br />private double targetProfit = 100.0;<br /><br />// Variável para armazenar o preço de entrada<br />private double entryPrice = 0.0;<br /><br />protected override void OnStartUp()<br />{<br />base.OnStartUp();<br />}<br /><br />protected override void OnBarUpdate()<br />{<br />// Verifica se há uma posição aberta<br />if (Position.MarketPosition != MarketPosition.Flat)<br />{<br />// Calcula o lucro atual<br />double currentProfit = Position.GetProfitLoss(Close, PerformanceUnit.Currency);<br /><br />// Verifica se o lucro atual alcançou o alvo<br />if (currentProfit &gt;= targetProfit)<br />{<br />// Fecha a posição com base no tipo de posição (Long ou Short)<br />if (Position.MarketPosition == MarketPosition.Long)<br />{<br />ExitLong("TargetProfitExit");<br />}<br />else if (Position.MarketPosition == MarketPosition.Short)<br />{<br />ExitShort("TargetProfitExit");<br />}<br />}<br />}<br />}<br /><br />// Esta função é chamada quando uma nova posição é aberta<br />protected override void OnExecution(IExecution execution)<br />{<br />base.OnExecution(execution);<br />// Armazena o preço de entrada ao abrir uma posição<br />if (execution.Order.OrderState == OrderState.Filled)<br />{<br />entryPrice = execution.Order.AvgFillPrice;<br />}<br />}<br />}<br />}</p>
<p> </p>
<p>Desde já agradeço!</p>
<div id="wpfa-16964" class="wpforo-attached-file"><a class="wpforo-default-attachment" href="//neotraderbot.com/wp-content/uploads/wpforo/default_attachments/1726064531-tela.jpg" target="_blank" title="tela.jpg"><i class="fas fa-paperclip"></i>&nbsp;tela.jpg</a></div>]]></content:encoded>
						                            <category domain="https://neotraderbot.com/community/programacao-ninjascript/">Dúvidas sobre Programação</category>                        <dc:creator>Julianosalima</dc:creator>
                        <guid isPermaLink="true">https://neotraderbot.com/community/programacao-ninjascript/codigo-de-estrategia-dando-erro-na-comp/</guid>
                    </item>
				                    <item>
                        <title>Acessar propriedades de um &quot;Desenho&quot;</title>
                        <link>https://neotraderbot.com/community/programacao-ninjascript/acessar-propriedades-de-um-desenho/</link>
                        <pubDate>Mon, 22 Jul 2024 12:57:23 +0000</pubDate>
                        <description><![CDATA[Tenho diversas linhas horizontais plotadas no grafico, preciso percorrelas e printar a cor de cada uma.
Cheguei até esse ponto:
foreach (DrawingTool draw in DrawObjects.ToList()) {
 
 if...]]></description>
                        <content:encoded><![CDATA[<p>Tenho diversas linhas horizontais plotadas no grafico, preciso percorrelas e printar a cor de cada uma.</p>
<p>Cheguei até esse ponto:</p>
<div>foreach (DrawingTool draw in DrawObjects.ToList()) {</div>
<div> </div>
<div><span> if (draw.Name == "Horizontal Line") { </span></div>
<div> </div>
<div><span> print(draw);</span></div>
<div> </div>
<div><span> }</span></div>
<div><span> }</span></div>
<p> </p>
<p>Obrigado.</p>
<p> </p>
<p> </p>]]></content:encoded>
						                            <category domain="https://neotraderbot.com/community/programacao-ninjascript/">Dúvidas sobre Programação</category>                        <dc:creator>vpereira</dc:creator>
                        <guid isPermaLink="true">https://neotraderbot.com/community/programacao-ninjascript/acessar-propriedades-de-um-desenho/</guid>
                    </item>
				                    <item>
                        <title>Armazenar preço ou Candle</title>
                        <link>https://neotraderbot.com/community/programacao-ninjascript/armazenar-preco-ou-candle/</link>
                        <pubDate>Thu, 23 May 2024 03:42:58 +0000</pubDate>
                        <description><![CDATA[Como eu consigo armazenar o preço de uma Candle pra usar em um segundo momento… 
 
exemplo: estou no Candle X ele está 1 real 
eu armazeno q ele está 1 real, quando quando acontecer um co...]]></description>
                        <content:encoded><![CDATA[<p>Como eu consigo armazenar o preço de uma Candle pra usar em um segundo momento… </p>
<p> </p>
<p>exemplo: estou no Candle X ele está 1 real </p>
<p>eu armazeno q ele está 1 real, quando quando acontecer um condição e também o preço passar o preço do Candle x sinalizado lá atrás aí sim faz a entrada..</p>]]></content:encoded>
						                            <category domain="https://neotraderbot.com/community/programacao-ninjascript/">Dúvidas sobre Programação</category>                        <dc:creator>caioandre</dc:creator>
                        <guid isPermaLink="true">https://neotraderbot.com/community/programacao-ninjascript/armazenar-preco-ou-candle/</guid>
                    </item>
				                    <item>
                        <title>alvos de saida ( HELP )</title>
                        <link>https://neotraderbot.com/community/programacao-ninjascript/alvos-de-saida-help/</link>
                        <pubDate>Wed, 20 Mar 2024 22:35:49 +0000</pubDate>
                        <description><![CDATA[No meu codigo eu fiz uma condição que apos realizar uma compra, obrigatoriamente a proxima tem que ser uma venda, mas de fato isso afeta minhas saidas, quando estou comprado nao consigo colo...]]></description>
                        <content:encoded><![CDATA[<p>No meu codigo eu fiz uma condição que apos realizar uma compra, obrigatoriamente a proxima tem que ser uma venda, mas de fato isso afeta minhas saidas, quando estou comprado nao consigo colocar meus stop pois sao ordens de venda para cobrir a posição, entao fiz o seguinte no codigo abaixo, mas nao tenho um bom resultado nas saidas, alguem consegue me ajudar administrar a saida ?</p>
<pre contenteditable="false">input
  FastAverage(21);
  SlowAverage(8);
 
var  
  sAvgFast     : Float;
  sAvgSlow     : Float;
  sPrevAvgFast : Float;
  sPrevAvgSlow : Float;
  valorA       :real;
  ValorB       :real;
  amplitude    :real;
  p0, p1, p2, p3, p4, p5,p6,p7,p10, p11, p12, p13, p14, p15,p16,p17   : real;
  contador, contador2      :integer;
  sinal,venda,compra,stopcompra,stopvenda,gaincompra,gainvenda, Cliga, Vliga : integer;
  passe1,passe2 : boolean; 
  
begin
  // Armazena os valores das médias em variáveis de apoio
  sAvgFast     := MediaExp(FastAverage, Close);
  sAvgSlow     := MediaExp(SlowAverage, Close);
  sPrevAvgFast := sAvgFast;
  sPrevAvgSlow := sAvgSlow;
  stopcompra := (p5 - 8 * MinPriceIncrement);
  stopvenda :=  (p10 + 8 * MinPriceIncrement);
  gaincompra := (p2);
  gainvenda := (p13);
  passe1 :=  (sinal=0) or (sinal=2); //testado ok
  passe2 := (sinal=1); //testado ok
   
  if  passe1 and (BuyPosition = 0) and (SellPosition = 0) and (sPrevAvgFast &lt; sPrevAvgSlow) and (sAvgFast &gt; sAvgSlow) then
  BEGIN
    

      ValorA   :=  abs (Lowest(Open, 21));
      ValorB   :=  abs(Highest(close, 8));
      amplitude := abs(ValorB-ValorA) ;
      p0 := valorA + (amplitude * 0);
      p1 := valorA + (amplitude * 0.382);
      p2 := valorA + (amplitude * 0.5);
      p3 := valorA + (amplitude * 0.618);
      p4 := valorA + (amplitude * 1);     //abertura do candle
      p5 := valorB - (amplitude * 1.61);  //stop
      p6 := valorB - (amplitude * 1.69);
      
      cliga:=1;
   
      PaintBar(clVerde);           
    
End;
if passe1 then
begin              
Buystop(p1);

end;
if isBought then
 begin
sinal:=1; 

end;
// Verifica se está comprado
if (IsBought) then
begin
 if  (BuyPrice &gt; gaincompra)or (buyprice &gt; p3 ) or ( buyprice &gt; p4) then
  ClosePosition;
 if HasPendingOrders then
  CancelPendingOrders;
end; 
 
//If (BuyPosition = 1) or isBought and ((BuyPrice &gt; gaincompra)or (buyprice &gt; p3 ) or ( buyprice &gt; p4))then
//begin
// ClosePosition;

        //  If hasPendingOrders then
           // CancelPendingOrders;
       // end;
If (BuyPosition = 1) or isBought and  (BuyPrice &gt; stopcompra)then
begin
ClosePosition;
          If hasPendingOrders then
            CancelPendingOrders;
end;



      
      if passe1 then
      begin
    HorizontalLine(p0, clVermelho);
    HorizontalLine(p1, clBLACK); // 1 SEQUENCIA  DE COMPRA
    HorizontalLine(p2, clBLACK); // 2 SEQUENCIA DE COMPRA
    HorizontalLine(p3, clBLACK);//  3 SEQUENCIA DE COMPRA
    HorizontalLine(p4, clVerde);
    HorizontalLine(p5, clVermelho);
    HorizontalLine(p6, clred);
    contador := contador+ 2;
   
end;
      


   if passe2 and (BuyPosition = 0) and (SellPosition = 0)and (sPrevAvgFast &gt; sPrevAvgSlow) and (sAvgFast &lt; sAvgSlow)  then
 begin
   

      ValorA   :=  abs (Lowest(Open, 8));
      ValorB   :=  abs(Highest(close, 21));
      amplitude := abs(ValorB-ValorA) ;
      p15 := valorA + (amplitude * 0);
      p14 := valorA + (amplitude * 0.382);
      p13 := valorA + (amplitude * 0.50);
      p12 := valorA + (amplitude * 0.618);
      p11 := valorA + (amplitude * 1); //abetura do candle
      p10 := valorA + (amplitude * 1.61);                 //stop
      p16 := valorB + (amplitude * 1.69);
      PaintBar(ClRed);    

  
 
End;
if passe2 then
begin              
SellShortStop(p12);

end;
if isSold then
 begin
sinal:=2; 
Venda:=0;
end;

// Verifica se está vendido
if (IsSold) then
begin
 if  (SellPrice &lt; gainVenda) or (sellprice&lt;p14) or (buyprice&lt;p15) then
  ClosePosition;
 if HasPendingOrders then
  CancelPendingOrders;
end;   
//If (SellPosition = 1)or isSold and ((SellPrice &lt; gainVenda) or (sellprice&lt;p14) or (buyprice&lt;p15))  then
//begin
//ClosePosition;

          //If hasPendingOrders then
           // CancelPendingOrders;
       // end;
If (SellPosition = 1)or isSold and (SellPrice &lt; stopvenda) then
begin
 ClosePosition;
          If hasPendingOrders then
            CancelPendingOrders;
end;     
 
  

if passe2 then
 begin
      HorizontalLine(p10, clVermelho);
      HorizontalLine(p11, clVerde);
      HorizontalLine(p12, clBLACK);   // 1 DE VENDA
      HorizontalLine(p13, clBLACK);  // 2 DE VENDA
      HorizontalLine(p14, clBLACK);  // 3 DE VENDA
      HorizontalLine(p15, clVermelho);
      HorizontalLine(p16, clred);
     contador := contador - 2;      
  

end;
end;


     
      

</pre>]]></content:encoded>
						                            <category domain="https://neotraderbot.com/community/programacao-ninjascript/">Dúvidas sobre Programação</category>                        <dc:creator>RODRIGOSCHMOELLER</dc:creator>
                        <guid isPermaLink="true">https://neotraderbot.com/community/programacao-ninjascript/alvos-de-saida-help/</guid>
                    </item>
				                    <item>
                        <title>BuyStop e SellShortStop</title>
                        <link>https://neotraderbot.com/community/programacao-ninjascript/buystop-e-sellshortstop/</link>
                        <pubDate>Mon, 18 Mar 2024 15:53:35 +0000</pubDate>
                        <description><![CDATA[Quero saber como faço no meu codigo para minhas ordens nao sairem no proximo candle, elas só ficam na tela enquando o candle da condição valida esta aberta, quando o candle fecha as ordens s...]]></description>
                        <content:encoded><![CDATA[<p>Quero saber como faço no meu codigo para minhas ordens nao sairem no proximo candle, elas só ficam na tela enquando o candle da condição valida esta aberta, quando o candle fecha as ordens some da tela, quero que elas permanecam até a proxima condição,, Codigo abaixo:</p>
<p> </p>
<pre contenteditable="false">input
  FastAverage(21);
  SlowAverage(8);
  pQtdePeriodosAnaliseVolat(100);
var  
  sAvgFast     : Float;
  sAvgSlow     : Float;
  sPrevAvgFast : Float;
  sPrevAvgSlow : Float;
  valorA    :real;
  ValorB    :real;
  amplitude :real;
   p0, p1, p2, p3, p4, p5,var2,var1 : real;
   contador, contador2 :integer;

begin
  // Armazena os valores das médias em variáveis de apoio
  sAvgFast     := MediaExp(FastAverage, Close);
  sAvgSlow     := MediaExp(SlowAverage, Close);
  sPrevAvgFast := sAvgFast;
  sPrevAvgSlow := sAvgSlow;
  var2 := p3-4 * MinPriceIncrement;
  var1 := p3+4 * MinPriceIncrement;
  if  (BuyPosition = 0) and (SellPosition = 0) and (sPrevAvgFast &lt; sPrevAvgSlow) and (sAvgFast &gt; sAvgSlow) and (contador=0) then
  BEGIN
       
      ValorA   :=  abs(LOW);
      ValorB   :=  abs(HIGH);
      amplitude := abs(ValorB-ValorA) ;
      p0 := valorA + (amplitude * 0);
      p1 := valorA + (amplitude * 0.382);
      p2 := valorA + (amplitude * 0.5);
      p3 := valorA + (amplitude * 0.618);
      p4 := valorA + (amplitude * 1);     //abertura do candle
      p5 := valorB - (amplitude * 1.61);                      //stop
               
 /////////////////////////////              
BuyStop(p2);
PaintBar(clVerde);
 end;
if isBought then
 begin
   
SellToCoverLimit(p3); 
SellToCoverStop(p5 - 8 * MinPriceIncrement,buyposition);

end;
//FECHAMENTO
//FIM ORDEM DE COMPRA ACIMA E CODIÇÃO DE FECHAMENTO ABAIXO SE CRUZAR MEDIAS.


         if (BuyPosition=1)and(SellPosition=0) and (sPrevAvgFast &gt; sPrevAvgSlow) and (sAvgFast &lt; sAvgSlow) then
              BEGIN
      ClosePosition;
      PaintBar(clblue);
       If (hasPendingOrders) then
          CancelPendingOrders;
              end;
 ////////////////////////////////////
      
      if contador=0 then
      begin
      HorizontalLine(p0, clVermelho);
      HorizontalLine(p1, clVerdeClaro);
      HorizontalLine(p2, clVerdeClaro);
      HorizontalLine(p3, clVerdeClaro);
      HorizontalLine(p4, clVerde);
      HorizontalLine(p5, clVermelho);

      contador := contador+ 2;
   
end;
      


   if  (BuyPosition = 0) and (SellPosition = 0)and (sPrevAvgFast &gt; sPrevAvgSlow) and (sAvgFast &lt; sAvgSlow) and (contador=2)  then
 begin
      
      ValorA   :=  abs(LOW);
      ValorB   :=  abs(HIGH);
      amplitude := abs(ValorB-ValorA) ;
      p5 := valorA + (amplitude * 0);
      p4 := valorA + (amplitude * 0.382);
      p3 := valorA + (amplitude * 0.5);
      p2 := valorA + (amplitude * 0.618);
      p1 := valorA + (amplitude * 1); //abetura do candle
      p0 := valorA + (amplitude * 1.61);                 //stop

   //////////////////////////////////////// 

  SellShortStop(p2);
      PaintBar(ClRed);
    end;
      if IsSold then
  begin
   BuyToCoverLimit(p3); 
   BuyToCoverStop(p0 + 8 * MinPriceIncrement,sellposition);
  
   end;
   //FIM DA ORDE DE VENDA
   //FIM ORDEM DE VENDA ACIMA E CODIÇÃO DE FECHAMENTO ABAIXO SE CRUZAR MEDIAS.
          if (BuyPosition=0)and(SellPosition=1) AND (sPrevAvgFast &lt; sPrevAvgSlow) and (sAvgFast &gt; sAvgSlow) then
   BEGIN

      ClosePosition;
      PaintBar(clblue);
      If (hasPendingOrders) then
          CancelPendingOrders;
             end;  
 ////////////////////////////////////////////////
 if (contador=2)  then
 begin
       HorizontalLine(p0, clVermelho);
       HorizontalLine(p1, clVerde);
       HorizontalLine(p2, clVerdeClaro);
       HorizontalLine(p3, clVerdeClaro);
       HorizontalLine(p4, clVerdeClaro);
       HorizontalLine(p5, clVermelho);
     
      contador := contador - 2;      


end;
end;
end;

     
      

</pre>]]></content:encoded>
						                            <category domain="https://neotraderbot.com/community/programacao-ninjascript/">Dúvidas sobre Programação</category>                        <dc:creator>RODRIGOSCHMOELLER</dc:creator>
                        <guid isPermaLink="true">https://neotraderbot.com/community/programacao-ninjascript/buystop-e-sellshortstop/</guid>
                    </item>
							        </channel>
        </rss>
		