Listar preços de posições

 

Olá,

Sou novo aqui no fórum e comecei a programar EAs há pouco tempo. Estou tentando obter e armazenar os níveis de preços que realizei minhas operações. Exemplo: Realizei 3 compras no ativo “EURUSD”, sendo elas nos níveis de preços “1.21270”; “1.21273” e “1.21275”. Busco de obter a seguinte resposta do EA:

preco1 = 1.21270

preco2 = 1.21273

preco3 = 1.21275

Tentei utilizar o código abaixo, porém ele só me retorna o primeiro preço, “1.21270”.


if(PositionSelect(_Symbol))

Print(PositionGetDouble(POSITION_PRICE_OPEN));


Agradeço se puderem me ajudar.

Abraços,

Henrique

 
     for (int i = PositionsTotal()-1; i>=0; i--)
         {string symbol = PositionGetSymbol(i);
          ulong magic = PositionGetInteger(POSITION_MAGIC);
          if (symbol == _Symbol && magic == magicnum)
             {Print(PositionGetDouble(POSITION_PRICE_OPEN))}};
 
ArmandoJunior70:

Olá ArmandoJunior70!

Obrigado pela ajuda, agora o EA identifica o preço em que cada posição foi aberta! Porém, o que ainda não consegui fazer é atribuir os valores encontrados a uma variável, ou seja, gostaria de atribuir um nome para cada preço que encontrei. Tomando o exemplo que utilizei anteriormente, gostaria de que o EA identificasse o nível de preço em que cada posição foi aberta (isso o EA está fazendo) e atribuísse “preco1” ao nível de preço em que a primeira posição foi aberta, “preco2” ao nível de preço em que a segunda posição foi aberta, e assim sucessivamente. Se puder me ajudar com mais esse detalhe, ficarei muito grato.

Abraços,

Henrique

 

Olá Henrique,

a melhor maneira para fazer isso seria trabalhar com uma Array (tabela) onde o preço 1 seria a primeira posição da tabela, o preço 2 seria a segunda e assim por diante. Não se esqueça que a numeração de uma Array começa com zero, então o preço 1 seria a posição 0, o preço 2 seria a posição 1 e assim por diante...

double tab_precos[];
int qt_precos = 0;

// a cada posição aberta
qt_precos = qt_precos + 1;
ArrayResize(tab_precos,qt_precos);
tab_precos[qt_precos - 1] = PositionGetDouble(POSITION_PRICE_OPEN);

// depois
tab_precos[0] = preço 1
tab_precos[1] = preco 2 etc...

 
henriquenogueira:

Olá,

Sou novo aqui no fórum e comecei a programar EAs há pouco tempo. Estou tentando obter e armazenar os níveis de preços que realizei minhas operações. Exemplo: Realizei 3 compras no ativo “EURUSD”, sendo elas nos níveis de preços “1.21270”; “1.21273” e “1.21275”. Busco de obter a seguinte resposta do EA:

preco1 = 1.21270

preco2 = 1.21273

preco3 = 1.21275

Tentei utilizar o código abaixo, porém ele só me retorna o primeiro preço, “1.21270”.


if(PositionSelect(_Symbol))

Print(PositionGetDouble(POSITION_PRICE_OPEN));


Agradeço se puderem me ajudar.

Abraços,

Henrique

Voce precisa ler o manual basico da ferramenta sobre as diferencas entre os tipos de conta: https://www.mql5.com/pt/articles/2299 . Se nao tu vai precisar fazer isso de uma forma muito mais complexa.

Agora a plataforma MetaTrader 5 possui um sistema de cobertura de registro de posições
Agora a plataforma MetaTrader 5 possui um sistema de cobertura de registro de posições
  • www.mql5.com
Para ampliar as possibilidades dos traders de retail-Forex, foi adicionado à plataforma a cobertura (segundo sistema de registro). Agora, segundo o instrumento, você pode ter várias posições, incluindo posições opostas. Isto permite implementar estratégias de negociação com o assim chamado bloqueio, por outras palavras, se o preço estiver contra o trader, ele terá a possibilidade de abrir uma posição na direção oposta.
 
ArmandoJunior70:

Olá Henrique,

a melhor maneira para fazer isso seria trabalhar com uma Array (tabela) onde o preço 1 seria a primeira posição da tabela, o preço 2 seria a segunda e assim por diante. Não se esqueça que a numeração de uma Array começa com zero, então o preço 1 seria a posição 0, o preço 2 seria a posição 1 e assim por diante...

Olá ArmandoJunior70!

Novamente muito obrigado pela sua ajuda, deu certo aqui!

Abraços,

Henrique

 
Ricardo Rodrigues Lucca:

Voce precisa ler o manual basico da ferramenta sobre as diferencas entre os tipos de conta: https://www.mql5.com/pt/articles/2299 . Se nao tu vai precisar fazer isso de uma forma muito mais complexa.

Olá Ricardo Rodrigues Lucca!

Agradeço a dica, vou ler este manual.

Abraços,

Henrique

 

ArmandoJunior70 #:
tab_precos[0] = preço 1 tab_precos[1] = preco 2 etc..

no meu não esta funcionando aguem pode me ajudar ?

 
cota037 #:

no meu não esta funcionando aguem pode me ajudar ?

Não temos bola de cristal, tu vai ter que falar o que não esta funcionando. Preferencialmente, de exemplos do que tentou e qual resultado teve que "não funcionou". Além disso, se voce abrir um topico voce pode ser notificado de alguem respondendo-lhe.
Razão: