Verificar Posição

 
Valberg Moura de Oliveira:

Bom dia Amigos,

 

Sou iniciante em MQL5, e estou tentando verificar se tem uma posição em aberto com a seguinte condição if(posicao_info.PositionType()==POSITION_TYPE_BUY)

porem essa condição sempre me retorna verdadeiro mesmo não tendo posição em aberto.

Boa tarde!

Tente utilizar:

if (PositionSelect(_Symbol) = true)

{

if (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)

{

...

}

}

 
Valberg,
Como dito acima, você precisa selecionar primeiro a posição.
Se existir, ai sim você pode verificar o tipo dela.
if(m_position.Select(m_symbol.Name())) {
    if(m_position.PositionType() == POSITION_TYPE_BUY) {
Até,
 
Warlley Sales:

Boa tarde!

Tente utilizar:

if (PositionSelect(_Symbol) = true)

{

if (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)

{

...

}

}

No testador de estrategia, essa condição funciona?
 
Valberg Moura de Oliveira:
No testador de estrategia, essa condição funciona?

Olá Valberg, funciona, mas se utilizar _Symbol como parâmetro, como no exemplo, será selecionado o instrumento financeiro que você está configurando para simulação no testador de estratégia.

Em operação, outro cuidado é que se está com uma conta do tipo hedging e com várias posições abertas para o mesmo instrumento, a PositionSelect irá selecionar a posição com o menor ticket. Nesse caso, para selecionar com precisão, é melhor utilizar a função PositionSelectByTicket().

Sds.,

Rogério Figurelli