Olá, eu estou desenvolvendo um EA teste que faz GRID e gostaria que ele fechasse todas as ordens abertas quando atingisse determinado lucro. Porém, da forma que eu estou fazendo o meu EA só identifica o lucro corrente da primeira ordem aberta e ignora as outras que foram abertas posteriormente. Como eu resolvo esse problema?
Eu usei a função:
Provavelmente você está usando uma conta do tipo Hedge.
Você precisa varrer as posições com PositionsTotal() e PositionSelect().
![Documentation on MQL5: Trade Functions / PositionsTotal Documentation on MQL5: Trade Functions / PositionsTotal](https://c.mql5.com/36/53/documentation-on-mql5-trade-functions__1.png)
- www.mql5.com
Olá, eu estou desenvolvendo um EA teste que faz GRID e gostaria que ele fechasse todas as ordens abertas quando atingisse determinado lucro. Porém, da forma que eu estou fazendo o meu EA só identifica o lucro corrente da primeira ordem aberta e ignora as outras que foram abertas posteriormente. Como eu resolvo esse problema?
Eu usei a função:
tente isso..
double saldo=0; for(int i=0; i<PositionsTotal(); i++) { PositionGetSymbol(i); saldo += (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)?PositionGetDouble(POSITION_PRICE_CURRENT)-PositionGetDouble(POSITION_PRICE_OPEN):PositionGetDouble(POSITION_PRICE_OPEN)-PositionGetDouble(POSITION_PRICE_CURRENT); }
Perfeita a solução do amigo Jonathan, mas acho que o codigo deveria ficar dessa forma:
double saldo=0; for(int i=0; i<PositionsTotal(); i++) { PositionGetSymbol(i); saldo += PositionGetDouble(POSITION_PROFIT)+PositionGetDouble(POSITION_SWAP); }
Assim são somados o ganho (ou prejuízo) tanto do profit quanto do swap.
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- 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
Olá, eu estou desenvolvendo um EA teste que faz GRID e gostaria que ele fechasse todas as ordens abertas quando atingisse determinado lucro. Porém, da forma que eu estou fazendo o meu EA só identifica o lucro corrente da primeira ordem aberta e ignora as outras que foram abertas posteriormente. Como eu resolvo esse problema?
Eu usei a função: