Bom dia.
Estou escrevendo uma EA e nela estou verificando a todo momento a quantidade total de posições pela função PositionsTotal(). Os testes estão todos sendo executados pelo ativo do mini-índice do BR (WINV-24), que tem como padrão o tick de 5 pontos. Acontece que enquanto o EA está rodando e a tem apenas 1 posição o PositionsTotal() está fazendo a verificação correta, mas quando o número de posições aumenta, por exemplo passa para 3, o PositionsTotal() continua retornando o valor como se fosse 1 posição.
Percebi que quando se aumenta a posição da conta (por ser uma conta netting) faz preço médio, e esse preço médio fica em um valor "quebrado", que seria fora do tick do ativo, poderia ser isso que está ocasionando esse erro na função PositionsTotal() ? E se for isso, alguém teria uma ideia para solucionar a questão?
Muito obrigado, amigos!!
Não tem problema, positionsTotal() está retornando as posições abertas conforme se espera. Acontece que quando voce abriu posição no ativo, ele criou a posição no Win, quando voce pediu pra comprar mais e a "nova" posição foi feita. A posição existente teve a quantidade e preço medio atualizado conforme voce relatou. Se voce quer ficar com posições separadas, voce tem que mudar para conta hedging e fazer esse preço medio na mão.
EDIT: e sobre a parte do preço medio estar fora do tick size do ativo, não tem problema porque é mais uma informação pro usuário.
Não tem problema, positionsTotal() está retornando as posições abertas conforme se espera. Acontece que quando voce abriu posição no ativo, ele criou a posição no Win, quando voce pediu pra comprar mais e a "nova" posição foi feita. A posição existente teve a quantidade e preço medio atualizado conforme voce relatou. Se voce quer ficar com posições separadas, voce tem que mudar para conta hedging e fazer esse preço medio na mão.
EDIT: e sobre a parte do preço medio estar fora do tick size do ativo, não tem problema porque é mais uma informação pro usuário.
Acho que agora eu estou entendendo... Quando coloco para retornar o PositionsTotal ele só me retorna se existe uma posição aberta ou não, mas sem considerar o valor total dela de acordo com o número de contratos? É isso mesmo?
No meu exemplo, assim que compra 1 contrato o PositionsTotal fica = 1. E então independente da quantidade de contratos que eu tiver (mesmo se eu comprar mais 2 contratos do mesmo ativo e ficar com um total de 3 contratos) ele vai continuar me retornando 1. Seria isso?
E ai para verificar a quantidade de contratos em questão vou precisar usar o Position_Volume?
Muito obrigado! Foi muito esclarecedor!!
Acho que agora eu estou entendendo... Quando coloco para retornar o PositionsTotal ele só me retorna se existe uma posição aberta ou não, mas sem considerar o valor total dela de acordo com o número de contratos? É isso mesmo?
No meu exemplo, assim que compra 1 contrato o PositionsTotal fica = 1. E então independente da quantidade de contratos que eu tiver (mesmo se eu comprar mais 2 contratos do mesmo ativo e ficar com um total de 3 contratos) ele vai continuar me retornando 1. Seria isso?
E ai para verificar a quantidade de contratos em questão vou precisar usar o Position_Volume?
Muito obrigado! Foi muito esclarecedor!!
Não, em conta netting é permitido somente uma posição por ativo por isso que tem esse comportamento. Em conta hedging, o positionTtotal retorna quantas posições voce tem que podem ser varias no mesmo ativo, já que ele mantem elas separadas. Mas em nenhum momento o PositionsTotal vai devolver numero de contratos ou volume, voce tem que selecionar a posição e recuperar, como disse o POSITION_VOLUME .
Veja o exemplo, compro 1 contrato, vendo 2 e compro mais 1. Tudo no mesmo ativo:
(i) Conta netting. PositionsTotal()=1 (é por ativo a consolidação). Total de contratos na posicao 1 do lado da venda;
(ii) Conta hedging. PositionsTotal()=3. Total de contratos: 1 comprado, 2 vendido e 1 comprado;
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Bom dia.
Estou escrevendo uma EA e nela estou verificando a todo momento a quantidade total de posições pela função PositionsTotal(). Os testes estão todos sendo executados pelo ativo do mini-índice do BR (WINV-24), que tem como padrão o tick de 5 pontos. Acontece que enquanto o EA está rodando e a tem apenas 1 posição o PositionsTotal() está fazendo a verificação correta, mas quando o número de posições aumenta, por exemplo passa para 3, o PositionsTotal() continua retornando o valor como se fosse 1 posição.
Percebi que quando se aumenta a posição da conta (por ser uma conta netting) faz preço médio, e esse preço médio fica em um valor "quebrado", que seria fora do tick do ativo, poderia ser isso que está ocasionando esse erro na função PositionsTotal() ? E se for isso, alguém teria uma ideia para solucionar a questão?
Muito obrigado, amigos!!