A NeoTraderBot é a primeira comunidade aberta no Brasil com foco em compartilhar informações sobre automatização de estratégias
Olá pessoal. Gostaria do auxílio de vocês para entender um problema que me vem ocorrendo. O problema é simples. Criei duas estratégias, porém uma é o inverso da outra. Ou seja, quando uma deveria comprar a outra no mesmo ponto deveria vender. Acontece que o profit não executa dessa forma, sempre tem uma diferença. Por exemplo, se o critério ocorre num dado ponto (110000), a estratégia A deveria comprar, a estratégia B deveria vender, mas acontece que a A compra no 110000 mas a B vende no 110020 por exemplo. Na saída da operação ocorre o mesmo problema. Faço o teste com apenas 1 contrato durante o pregão, rodando no modo simulação. Reforço que o argumento da operação é o mesmo para as duas, só muda a ordem de entrada e saída.
Oi @alexandre-magno! Tudo bem!?
Bem estranho o seu relato...mas já presenciei situações também estranhas e que não conseguimos depurar muito bem devido ao fato de não saber o que acontece internamente na NTSL.
Por exemplo, rodando replay no modulo de automação de estratégias, você terá compras e vendas em pontos diferentes dependendo da velocidade de reprodução do replay. O que pra mim, em replay não faz sentido.
Acho que vale a pena você abrir um chamado para a Nelogica investigar e ajustar caso seja necessário.
Grande abs!
Olá Johnathas.
Pois é, vi uma sérias de vídeos seus sobre a interpretação de ordem no backtest e na automação. Ficou claro a bagunça que a nelógica está fazendo. Já analisei o código e não era para acontecer isso. Acaba limitando muito a automação, pois não sabemos o que esperar. Mas coloquei o exemplo de código bem simples que usei para fazer esse teste. Poderia verificar, por favor, se de fato a estratégia está invertida? Talvez eu que estou interpretando errado.
//NORMAL
input periodo(1); periodo2(1); Inicio Se (IsSold) então Inicio Se ((TILSON(0.70,periodo2)[1] < (TILSON(0.70,periodo2)))) então Closeposition; Fim; Se (IsBought) então Inicio Se ((TILSON(0.70,periodo2)[1]) > (TILSON(0.70,periodo2))) então Closeposition; Fim; //abrir posição Inicio Se (TILSON(0.70,periodo)[1] < (TILSON(0.70,periodo))) então BuyAtMarket Senão Se (TILSON(0.70,periodo)[1] > (TILSON(0.70,periodo))) então SellShortAtMarket; Fim; Fim;
_______________________________________________________________________
//INVERTIDO
input periodo(1); periodo2(1); Inicio Se (IsSold) então Inicio Se ((TILSON(0.70,periodo2)[1] > (TILSON(0.70,periodo2)))) então Closeposition; Fim; Se (IsBought) então Inicio Se ((TILSON(0.70,periodo2)[1]) < (TILSON(0.70,periodo2))) então Closeposition; Fim; //abrir posição Inicio Se (TILSON(0.70,periodo)[1] < (TILSON(0.70,periodo))) então SellShortAtMarket Senão Se (TILSON(0.70,periodo)[1] > (TILSON(0.70,periodo))) então BuyAtMarket; Fim;
Para inverter a posição das entradas no código acima, basta trocar o BuyAtMarket
por SellShortAtMarket
e vice-versa.