Como checar se uma posição especifica existe?

 
Boa tarde carissimos!

Sou novo em programação, estou quebrando a cabeça...

Preciso buscar de todas as posições abertas, por exemplo:

Posições de compra, e listar destas posições todos Position_Price_Open.

Para que eu consiga manipular essa informação, pro robo realizar as compras com um criterio que eu definir...

Position Select e Position GetDouble, eu consigo mas ele busca somente uma, precisava que ele tivesse todas informações e consultasse se existe uma certa condição...

Alguma idéia para ajudar o novato?

Valew!
 
Coladel:
Boa tarde carissimos!

Sou novo em programação, estou quebrando a cabeça...

Preciso buscar de todas as posições abertas, por exemplo:

Posições de compra, e listar destas posições todos Position_Price_Open.

Para que eu consiga manipular essa informação, pro robo realizar as compras com um criterio que eu definir...

Position Select e Position GetDouble, eu consigo mas ele busca somente uma, precisava que ele tivesse todas informações e consultasse se existe uma certa condição...

Alguma idéia para ajudar o novato?

Valew!

Acho que é mais ou menos isso que você está querendo.

int total = PositionsTotal();

for(int i=total-1; i>=0;i--)

if(PositionGetTicket(i)>0 && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)

double preco = PositionGetDouble(POSITION_PRICE_OPEN);

 
Silvio Vaiano:

Acho que é mais ou menos isso que você está querendo.

int total = PositionsTotal();

for(int i=total-1; i>=0;i--)

if(PositionGetTicket(i)>0 && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)

double preco = PositionGetDouble(POSITION_PRICE_OPEN);

Silvio, Gratidão Amigo! Passei o dia todo tentando simplificar isso....

Essa parte me ajudou muito, o que ainda ocorre que ele me devolve 1 resposta de um preço, estou procurando:

Fazer um array, CopyBuffer, não sei o melhor caminho....

Preciso que ele liste o preço de abertura de todas as operação que estão abertas compradas, e então eu coloco um if condição para nova entrada ou não...

int total = PositionsTotal();

for(int i=total-1; i>=0;i--)

if(PositionGetTicket(i)>0 && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)

double preco = PositionGetDouble(POSITION_PRICE_OPEN);

Aqui tenho a listagem de todos o sprecos de todas operacoes abertas =  LIST_BUY_OPEN_PRICES

If (algum dos LIST_BUY_OPEN_PRICES < VARIAVEL X)


 Executo a compra (essa linha da compra para baixo esta ok pra mim, mas esse if buscando uma lista...ta #$%....

Não sei como construir a lista nem como consulta-la.....

Mais uma vez obrigado pela ajuda...

o que estou tendo e não esta funcionando....

                                       int total = PositionsTotal();
                                       
                                       double list_price_open_buy[1000];
                                       
                                       for(int i=total-1; i>=0;i--)
                                             {
                                       if(PositionGetTicket(i)>0
                                       && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
                                                   {
                                       double preco_compradas = PositionGetDouble(POSITION_PRICE_OPEN);
                                       
                                       list_price_open_buy[i] = preco_compradas;
                                       
                                       Print("esse preco" , preco_compradas);
                                       
                                       int MinIndex=ArrayMinimum(list_price_open_buy);
                                        double MinValue=list_price_open_buy[MinIndex]; 
                                       
                                       Print("O menor preco comprado foi", MinValue);
O Preco no array aparece um valor completamente absurdo...mas o preco_compradas individual é consultado e retorna o valor correto
 

Se você quer saber o menor de todos os preços de posições em aberto compradas você nem precisa de um array

Crie uma variável double menorPreco e inicialize com valor 1000000000000.00

E a cada passada do laço for você compara num if(preco_compradas<menorPreco) {menorPreco=preco_compradas};

 
Silvio Vaiano:

Se você quer saber o menor de todos os preços de posições em aberto compradas você nem precisa de um array

Crie uma variável double menorPreco e inicialize com valor 1000000000000.00

E a cada passada do laço for você compara num if(preco_compradas<menorPreco) {menorPreco=preco_compradas};

Obrigado Silvio! acabei mudando um pouco a lógica do EA, mas esse loop foi a solução....Grato!
Razão: