
Abordamos o tema de automatização de estratégias em NTSL, MQL5 e NinjaScript!
Bom dia Pessoal,
Eu estou criando meu segundo Robô com base em uma estratégia altamente acertiva.
Ao verificar os erros de sintaxe na aba compliação o editor de estratégia está acusando um erro: "Parser[31,1]: O código deve começar com begin
Erro de Sintaxe"
Acontece que a linha "31" é o campo "Const" (Constante)
Antes disso a aba compilação estava acusando erro: Parser[28,1]: Depois do valor tem que haver um " ; "
e essa mensagem só foi desaparecer depois que eu coloquei a função "Input" antes da função "Const".
Segue abaixo meu código fonte. Se alguém conseguir me ajudar ficarei muito grato!:
// ----------------------------------------------------------------------- // ---------------------- DADOS DA ESTRATÉGIA ---------------------------- // ----------------------------------------------------------------------- // // NOME DA ESTRATÉGIA: _RSAvançado_Condicional // DESENVOLVIDA POR: Estevão Cruz da Motta // DATA DE CRIAÇÃO: 12/2022 // VERSÃO: 1.1 // ATUALIZADA EM: // TIPO DE ESTRATÉGIA: ( ) Indicador ( ) Coloração (X) Execução // ( ) Screening ( ) Texto ( ) Alarme // // DESCRIÇÃO DA ESTRATÉGIA: // // // // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- // // ######################### FIM DO CABEÇALHO ############################ Input {MEDIA MÓVEL EXPONENCIAL} pMediaCurta(9); pMediaMedia(20); pMediaLonga(50); Const cPlotarIndicadores = true Var {ESTRUTURA PADRÃO DO MODELO} bStarted : boolean bSinal_compra, bSinal_venda, bTrapeZonebuy1 : boolean; {Variáveis Personalizadas} fMediaCurta, fMediaMedia, fMediaLonga: Float; pMediaCurta, pMediaMedia, pMediaLonga: INTEGER; pTamanhoPosicao : integer; bComprado, bVendido : boolean; bTrapeZoneBuy1, bTrapeZoneBuy2, bTrapeZoneBuy3, bTrapeZoneSell, bTrapeZoneSell2, bTrapeZoneSell3 : boolean; {INICIALIZAÇÃO DA ESTRATÉGIA} begin bStarted := True; end; fMediaCurta := MediaExp(pMediaCurta, close); fMediaMedia := MediaExp(pMediaMedia, close); fMediaLonga := MediaExp(pMediaLonga, close); pTamanhoPosicao := 5; Se cPlotarIndicadores entao begin SetPlotColor(1,clYellow); SetPlotWidth(1,2); SetPlotStyle(1,psDash); SetPlotColor(2,clBlue); SetPlotWidth(2,2); SetPlotColor(3,clRed); SetPlotWidth(3,2); Plot (fMediaCurta); Plot2 (fMediaMedia); Plot3 (fMediaLonga); end; {ATRIBUIÇÕES DE VARIÁVEIS POR PROCESSAMENTO} {estrutura padrão do modelo} bComprado := isBought(); bVendido := isSold(); {ATRIBUIÇÕES DAS VARIÁVEIS} bSinal_compra := (Fechamento > Fechamento[1]) e (Minima < Minima[1]) e (Maxima < Maxima[1]); bSinal_venda := (Fechamento < Fechamento[1]) e (Minima > Minima[1]) e (Maxima > Maxima[1]); bTrapeZoneBuy1 := (fechamento[0] > fMediaCurta) e (fechamento[0] < fMediaMedia); bTrapeZoneBuy2 := (fechamento[0] > fMediaMedia) e (fechamento[0] < fMediaLonga); bTrapeZoneBuy3 := (fechamento[0] > fMediaLonga) e (fechamento[0] < fMediaCurta); bTrapeZoneSell := (fechamento[0] < fMediaCurta) e (fechamento[0] > fMediaMedia); bTrapeZoneSell2 := (fechamento[0] < fMediaMedia) e (fechamento[0] > fMediaLonga); bTrapeZoneSell3 := (fechamento[0] < fMediaLonga) e (fechamento[0] > fMediaCurta); {INICIALIZAÇÃO DA ESTRATÉGIA} Se (bSinal_compra) então BuyAtMarket(pTamanhoPosicao) Senão Se (bSinal_venda) então SellShortAtMarket(pTamanhoPosicao); Se (bSinal_Compra) e (bTrapeZoneBuy1) entao bComprado = Falso; Se (bSinal_Compra) e (bTrapeZoneBuy2) entao bComprado = Falso; Se (bSinal_Compra) e (bTrapeZoneBuy3) entao bComprado = Falso; Se (bSinal_Venda) e (bTrapeZonaSell) entao bVenda = Falso Se (bSinal_Venda) e (bTrapeZoneSell2) entao bVenda = Falso Se (bSinal_Venda) e (bTrapeZonesll3) entao bVenda = Falso end; {ENVIA ORDENS DE COMPRA OU VENDA}
Cara, as linguagens de programação são bastante rigorosas com sintaxe. Sempre que tiver dúvidas, sugiro olhar o manual da NTSL neste link.
Fiz alguns ajustes de sintaxe no seu código:
Com isso seu código compilou...agora você tem que ver se ele faz o que você programou! kkkkk
Faça os ajustes acima e sempre verifique os erros de compilação pelo botão "Verificar" (figura anexa). Em pouco tempo já não cometerá os mesmos erros (é questão de prática).
Abs!
Muito obrigado @Johnathas pelos esclarecimentos!!
vc é fera ! seu canal no youtube está de parabéns.