Duas posições abertas no mesmo ativo

 

Fala galera, blz...

Então, gostaria de saber se há alguma ferramenta nativa, ou alguma maneira mas simples de verificar se há mais de uma posição aberta no mesmo ativo, com robôs diferentes com M.N.(Magic Number) diferentes.

Estou com 2 robôs no mesmo ativo, quando eu abro uma posição, a posição fica com o M.N. do 1º robô, se eu abro uma posição com o 2º robô, a posição fica com o M.N do 2º robo.

O problema é que se usar o método tradicional de verificar posições abertas,(for, todas as posições, symbol==symbol, magic==magic, posAberta=True ) eu não vou saber qual posição de qual robô esta aberta.

A maneira que eu fiz é a seguinte, eu verifico o volume das ordens abertas de cada robô, se for executada total ou parcial, eu sei que tem posição aberta no robô especifico.

Eu faço essa verificação através das ordens, a dúvida é se tem alguma função para verificar a posição, através de PositionGet... 

Eu vou fazer alguns testes quando o mercado abrir, tentar POSITION_IDENTIFIER, utilizar o comentário das ordens, para verificar na posição, qual posição é de cada robô, porém é especulação minha, não sei o que dá certo.

Alguém tem alguma ideia?

Obgd.

 
orleizera:

Fala galera, blz...

Então, gostaria de saber se há alguma ferramenta nativa, ou alguma maneira mas simples de verificar se há mais de uma posição aberta no mesmo ativo, com robôs diferentes com M.N.(Magic Number) diferentes.

Estou com 2 robôs no mesmo ativo, quando eu abro uma posição, a posição fica com o M.N. do 1º robô, se eu abro uma posição com o 2º robô, a posição fica com o M.N do 2º robo.

O problema é que se usar o método tradicional de verificar posições abertas,(for, todas as posições, symbol==symbol, magic==magic, posAberta=True ) eu não vou saber qual posição de qual robô esta aberta.

A maneira que eu fiz é a seguinte, eu verifico o volume das ordens abertas de cada robô, se for executada total ou parcial, eu sei que tem posição aberta no robô especifico.

Eu faço essa verificação através das ordens, a dúvida é se tem alguma função para verificar a posição, através de PositionGet... 

Eu vou fazer alguns testes quando o mercado abrir, tentar POSITION_IDENTIFIER, utilizar o comentário das ordens, para verificar na posição, qual posição é de cada robô, porém é especulação minha, não sei o que dá certo.

Alguém tem alguma ideia?

Obgd.

Ou você melhora o comportamento dos robôs ou usa a Conta do Tipo Hedge...

 
Flavio Jarabeck:

Ou você melhora o comportamento dos robôs ou usa a Conta do Tipo Hedge...

Obgd pelo comentário.

Eu tinha pensando em conta Hedge, mas não daria pra utilizar pela maneira que eu fecho a posição, no caso, com ordens limit. Eu estava usando o volume executado das ordens para descobrir se havia posição aberta ou não.

Andei pesquisando, e estou usando HistoryDeals, parece resolver este problema, com uma lógica bem mais simples comparada a qual eu estava usando antes.

 
uma coisa que muita gente esquece é adicionar um comentário na hora do buy/sell ....dá para ajudar em muita coisa isso
 
Eduardo Oliveira:
uma coisa que muita gente esquece é adicionar um comentário na hora do buy/sell ....dá para ajudar em muita coisa isso

Mas vc não acha que criar logicas em cima de compo string acaba com a performance do seu algoritmo ?

 
Eduardo Oliveira:
uma coisa que muita gente esquece é adicionar um comentário na hora do buy/sell ....dá para ajudar em muita coisa isso

Cuidado que tem corretora que zera este campo...

;)

 
Jonathan Pereira:

Mas vc não acha que criar logicas em cima de compo string acaba com a performance do seu algoritmo ?

é eu sei que usando o Comment("...") acaba com a perfomance, dá até para ver na hora do backtest que o EA fica lento, mas escrever um comentario na ordem que envia não deixa lento (nunca fiz um teste para bater o martelo).

Na pergunta em questão do rapaz, eu não usaria o comentario, eu usaria o PositionsTotal, depois o simbolo e depois o magic number, porém como ele está verificando tamanho do lote para saber qual robo que é, acho que usar o comentario facilitaria ele a descobrir.

 
Flavio Jarabeck:

Cuidado que tem corretora que zera este campo...

;)

Essa eu não sabia!

Obrigado pela dica

 
Eduardo Oliveira:

é eu sei que usando o Comment("...") acaba com a perfomance, dá até para ver na hora do backtest que o EA fica lento, mas escrever um comentario na ordem que envia não deixa lento (nunca fiz um teste para bater o martelo).

Na pergunta em questão do rapaz, eu não usaria o comentario, eu usaria o PositionsTotal, depois o simbolo e depois o magic number, porém como ele está verificando tamanho do lote para saber qual robo que é, acho que usar o comentario facilitaria ele a descobrir.

Em qualquer linguagem usar string para comparação (if) se torna lento. Faça o teste e comprove, eu evito ao máximo tais situações.
E eu nem me referi a função comment que tem outra finalidade, enfim, na pergunta do rapaz é possível notar que ele está “comendo bola” com a utilização da função PositioTotal, e vc está correto quando diz que usaria ela, eu também usaria. Pelo trecho de código que ele postou é possível imaginar que “seus” robôs não colocam um MagicNumber diferente para cada o que acaba dificultando encontrar as posições de forma separada 
 
Jonathan Pereira:
Em qualquer linguagem usar string para comparação (if) se torna lento. Faça o teste e comprove, eu evito ao máximo tais situações.
E eu nem me referi a função comment que tem outra finalidade, enfim, na pergunta do rapaz é possível notar que ele está “comendo bola” com a utilização da função PositioTotal, e vc está correto quando diz que usaria ela, eu também usaria. Pelo trecho de código que ele postou é possível imaginar que “seus” robôs não colocam um MagicNumber diferente para cada o que acaba dificultando encontrar as posições de forma separada 
Você falou que estou comendo bola, mas acho que é ao contrário, você não entendeu o meu problema. Eu disse que estou usando Magic number diferente.Quando vc tem dois robôs com Magic number diferentes, e abre a posição no mesmo ativo, a posição ficará com o magic number do último robô que abriu a posição. E vc não terá acesso a posição aberta pelo robô anterior. Eu resolvi este problema com duas maneiras, usando o volume executado das ordens, pois cada ordem é de um magicnumber, e a melhor forma, foi com HistoryDeal, pois consigo verificar as posições abertas de cada magicnumber. Abraços.

 
orleizera:
Você falou que estou comendo bola, mas acho que é ao contrário, você não entendeu o meu problema. Eu disse que estou usando Magic number diferente.Quando vc tem dois robôs com Magic number diferentes, e abre a posição no mesmo ativo, a posição ficará com o magic number do último robô que abriu a posição. E vc não terá acesso a posição aberta pelo robô anterior. Eu resolvi este problema com duas maneiras, usando o volume executado das ordens, pois cada ordem é de um magicnumber, e a melhor forma, foi com HistoryDeal, pois consigo verificar as posições abertas de cada magicnumber. Abraços.

Se a conta é netting , mas se quer usar dois robos em um mesmo ativo, operando duas estratégias sua conta tem que ser hedge, ou seja, comida de bola sua sim!

Entenda sobre os nuances que não terá esse tipo de problema.

Razão: