A NeoTraderBot é a primeira comunidade aberta no Brasil com foco em compartilhar informações sobre automatização de estratégias
boa noite!!! se alguém souber e puder ajudar, gostaria de saber se é possível limitar o gain e loss diário na automação através do código?
Oi @leandro-silva!
De forma consistente que funcione em todas as situações não é possível atualmente controlar isso via código.
Os problemas que impactam uma possível solução é execução de mais de uma ordem no mesmo candle e aumento/redução de posição ou saídas parciais. Com o atual funcionamento da NTSL (e funções disponíveis) é difícil calcular com precisão (digo, corretamente) o preço médio nessas situações.
A maneira mais simples mesmo é configurar pela interface gráfica esses limites no Módulo de Automação.
Abs!
Opa valeu pela resposa mestre, eu ia usar para fazer os backtest o jeito e continuar manualmene.
Obrigado !!!
Olá!
Como o Johnathas falou, realmente hoje não tem como de forma exata e correta determinar o Gain ou o Loss, principalmente quando se faz uso de ordens "ToCover" do tipo "limit" e "stop".
Eu tentei criar algo pra tentar chegar perto do resultado esperado, vou deixar aqui apenas como ideia, talvez para o seu objetivo te atenda de alguma forma.
Basicamente, eu entro no trecho abaixo se eu estiver posicionado, validando com HasPosition, depois se estiver posicionado em compra, calculo as variáveis, e depois de entrar nesse trecho, no final, novamente valido se existe posição aberta, caso não exista, é porque fechou em algum dos meus alvos (STOP ou GAIN).
Com isso eu calculo a diferença (variáveis nDifLOSS, nDifGAIN) do preço atual em prelação as variáveis nLOSS e nGAIN, se o preço estiver mais perto do nGAIN eu conto um gain, se estiver mais perto da nLOSS, eu conto loss.
Fiz dessa forma pois notei que em Backtest, em modo debug, notei que ele analisa o candle atual e fecha com a ordem ToCover no Candle seguinte, sendo assim, nunca bateria em cima do preço determinado, já que o preço quando executado em tempo real, ainda não foi atingido.
Em Backtest, funcionou muito bem esse código, porém em tempo real não funciona corretamente, pois ele conta Loss e Gain por proximidade, ou seja, o preço chega perto, ele já conta apenas de ter a validação do "Not HasPosition".
O Código em si é mais complexo, estou enviando um exemplo apenas, aqui eu uso Breakeven, e com isso tenho que checar se pegou no Loss com lucro, rsrs.
Quem sabe com essa ideia, alguém consiga desenvolver uma solução melhor. Mas realmente falta recursos do Profit para isso.
(Desculpem o código, ainda estou aprendendo).
if (HasPosition) then begin if (Position > 0) then begin nPrecoAtual := CLOSE; nPrecoEntrada := BuyPrice; //CALCULO DO GAIN E LOSS QUANDO NAO ATINGIU O GATILHO nGAIN := (nPrecoEntrada + ALVO_GAIN); nLOSS := (nPrecoEntrada - ALVO_LOSS); //GAIN SellToCoverLimit(nGAIN); //STOP SellToCoverStop(nLOSS,nLOSS); //CHECANDO SE DEU GAIN OU LOSS if ( not (HasPosition)) then begin nDifGAIN := (CLOSE - nGAIN); nDifLOSS := (CLOSE - nLOSS); if (nDifGAIN < 0) then nDifGAIN := (nDifGAIN * ( - 1)); if (nDifLOSS < 0) then nDifLOSS := (nDifLOSS * ( - 1)); if (nDifGAIN < nDifLOSS) then iContaGain := (iContaGain + 1) else if (nDifLOSS < nDifGAIN) then iContaLoss := (iContaLoss + 1); if (LastBarOnChart) then plottext("T: " + iContaOperacoesTotal + "| G: " + iContaGain + " | L: " + iContaLoss,clAmarelo,2,7); bContouOperacao := false; end; end; end