Olá, gostaria de saber de alguem pode me ajudar.
Meu EA aloca algumas ordens pendentes em alguns pontos do gráfico, porém no momento que a ordem é acionada e logo menos fechado nou no take ou stop loss, eu precisaria verificar se ela esta aberta pra eu abrir uma novamente no mesmo lugar.
Resumindo, como faço para verificar se uma certa ordem se encontra aberta ?
Agradeço
bool SemOrdem() { if(OrdersTotal()>0) return false; else return true; }
Boa tarde Eduardo,
Emitir uma ORDEM significa incluir uma ordem na LISTA DE ORDENS e se a ordem for a preço limite ela permanece na LISTA DE ORDENS até o gatilho ser acionado. No acionamento do gatilho ela começa a ser preenchida e permanece na LISTA DE ORDENS até zerar o saldo. Estou falando isso para você sair da caixa do lote mínimo e fazer corretamente seu programa, pois para ordens com qtd >300 de (WIN) ou >15000 (BOBR4) a preço limite é comum a ORDEM ficar na lista de ordens com um saldo não executado ( ou como se diz, ficar na pedra ).
Quando uma ORDEM começa a ser preenchida, o MT5 inclui uma(*) POSIÇÃO na lista de posições e inclui a ORDEM na lista de histórico de ordens, essas duas listas vão sendo atualizadas até a ordem ser totalmente preenchida... Acabou o preenchimento a então ORDEM é excluída da lista de ordens.
Continuando, agora temos uma POSIÇÃO aberta e esta fica aberta até que um gatilho de STOP LOSS/GAIN seja acionado , nesse momento uma ordem a mercado é incluída na lista ordens e começa a ser preenchida imediatamente a qualquer preço, ao termino da execução a POSIÇÃO vai para histórico e a ORDEM vai para lista de histórico de ordens.
Resumidamente é esse o fluxo que seu EA tem que enxergar para fazer o procedimento correto.
Agora é ler a documentação para saber como: LER A LISTA DE ORDENS, LER AS POSIÇÕES E LER OS HISTÓRICOS (ordens e posições).
(*) Modo Netting
Ok. Mas como meu ea abre varias ordens pendentes. Queria saber de uma ordem em especifico. De repente pelo tickt. E nao de um modo geral
Eduardo, tem uns exemplos aqui no fórum use o localizar, como eu não controlo Ordens individualmente, então não tenho aqui pronto para te enviar.
Mas é fácil também, você só vai ter que paginar cada ordem e verificar uma-a-uma através de um For, por exemplo.
Boa tarde...
Tenho que saber alem de se tem ordem aberta.. tenho que saber se a ordem aberta é de Buy ou Sell...
Alguem consegue me ajudar ??
Obrigado.
Boa tarde...
Tenho que saber alem de se tem ordem aberta.. tenho que saber se a ordem aberta é de Buy ou Sell...
Alguem consegue me ajudar ??
Obrigado.
Boa noite!
int MAGICNUM = 1112; //--- Checks positions and orders for(int Cnt = OrdersTotal() - 1; Cnt >= 0; Cnt--) { if(OrderSelect(Cnt, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol() == _Symbol && OrderMagicNumber() == MAGICNUM) { if(OrderType() == OP_BUY) { . . . } else if(OrderType() == OP_SELL) { . . . } else if(OrderType() == OP_BUYSTOP) { . . . } else if(OrderType() == OP_SELLSTOP) { . . . } else if(OrderType() == OP_BUYLIMIT) { . . . } else if(OrderType() == OP_SELLLIMIT) { . . . } } } }
- 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á, gostaria de saber de alguem pode me ajudar.
Meu EA aloca algumas ordens pendentes em alguns pontos do gráfico, porém no momento que a ordem é acionada e logo menos fechado nou no take ou stop loss, eu precisaria verificar se ela esta aberta pra eu abrir uma novamente no mesmo lugar.
Resumindo, como faço para verificar se uma certa ordem se encontra aberta ?
Agradeço