As solicitações para executar operações de negociação são formalizadas como ordens. Cada ordem tem uma variedade de propriedades para leitura. As informações sobre elas podem ser obtidas usando as funções OrderGet...() e HistoryOrderGet...().
Para as funções OrderGetInteger() e HistoryOrderGetInteger()
Identificador |
Descrição |
Tipo |
---|---|---|
ORDER_TICKET |
Bilhete da ordem. Um número exclusivo atribuído a cada ordem |
long |
ORDER_TIME_SETUP |
Hora de configuração de uma ordem |
datetime |
ORDER_TYPE |
Tipo de ordem |
|
ORDER_STATE |
Estado de uma ordem |
|
ORDER_TIME_EXPIRATION |
Hora de expiração de uma ordem |
datetime |
ORDER_TIME_DONE |
Hora de execução ou cancelamento de uma ordem |
datetime |
ORDER_TIME_SETUP_MSC |
O tempo para colocar uma ordem de execução em milissegundos desde 01.01.1970 |
long |
ORDER_TIME_DONE_MSC |
Tempo de execução e cancelamento de ordens em milissegundos desde 01.01.1970 |
long |
ORDER_TYPE_FILLING |
Type de preenchimento de uma ordem |
|
ORDER_TYPE_TIME |
tempo de duração de uma ordem |
|
ORDER_MAGIC |
ID de um Expert Advisor que colocou a ordem (projetado para garantir que cada Expert Advisor coloque seu próprio número único) |
long |
ORDER_REASON |
Razão ou origem para a colocação da ordem |
|
ORDER_POSITION_ID |
Identificador de posição que é definido para uma ordem tão logo ela é executada. Cada ordem executada resulta em uma operação que abre ou modifica uma posição já existente. O identificador desta exata posição é atribuída à ordem executada neste momento. |
long |
ORDER_POSITION_BY_ID |
Identificador da posição oposta para as ordens do tipo |
long |
Para as funções OrderGetDouble() e HistoryOrderGetDouble()
Identificador |
Descrição |
Tipo |
---|---|---|
ORDER_VOLUME_INITIAL |
Volume inicial de uma ordem |
double |
ORDER_VOLUME_CURRENT |
Volume corrente de uma ordem |
double |
ORDER_PRICE_OPEN |
Preço especificado na ordem |
double |
ORDER_SL |
Valor de Stop Loss |
double |
ORDER_TP |
Valor de Take Profit |
double |
ORDER_PRICE_CURRENT |
O preço corrente do ativo de uma ordem |
double |
ORDER_PRICE_STOPLIMIT |
O preço de ordem Limit para uma ordem StopLimit |
double |
Para as funções OrderGetString() e HistoryOrderGetString()
Identificador |
Descrição |
Tipo |
---|---|---|
ORDER_SYMBOL |
Ativo (symbol) de uma ordem |
string |
ORDER_COMMENT |
Comentário sobre a ordem |
string |
Ao enviar uma solicitação de negociação usando a função OrderSend(), algumas operações requerem a indicação do tipo da ordem. O tipo de uma ordem é especificado no campo type da estrutura especial MqlTradeRequest, e pode aceitar valores da enumeração ENUM_ORDER_TYPE.
Identificador |
Descrição |
---|---|
ORDER_TYPE_BUY |
Ordem de Comprar a Mercado |
ORDER_TYPE_SELL |
Ordem de Vender a Mercado |
ORDER_TYPE_BUY_LIMIT |
Ordem pendente Buy Limit |
ORDER_TYPE_SELL_LIMIT |
Ordem pendente Sell Limit |
ORDER_TYPE_BUY_STOP |
Ordem pendente Buy Stop |
ORDER_TYPE_SELL_STOP |
Ordem pendente Sell Stop |
ORDER_TYPE_BUY_STOP_LIMIT |
Ao alcançar o preço da ordem, uma ordem pendente Buy Limit é colocada no preço StopLimit |
ORDER_TYPE_SELL_STOP_LIMIT |
Ao alcançar o preço da ordem, uma ordem pendente Sell Limit é colocada no preço StopLimit |
ORDER_TYPE_CLOSE_BY |
Ordem de fechamento da posição oposta |
Cada ordem tem um status que descreve o seu estado. Para obter informações, use OrderGetInteger() ou HistoryOrderGetInteger() com o modificador ORDER_STATE. Valores permitidos são armazenados na enumeração ENUM_ORDEM_STATE.
Identificador |
Descrição |
---|---|
ORDER_STATE_STARTED |
Ordem verificada, mas ainda não aceita pela corretora (broker) |
ORDER_STATE_PLACED |
Ordem aceita |
ORDER_STATE_CANCELED |
Ordem cancelada pelo cliente |
ORDER_STATE_PARTIAL |
Ordem executada parcialmente |
ORDER_STATE_FILLED |
Ordem executada completamente |
ORDER_STATE_REJECTED |
Ordem rejeitada |
ORDER_STATE_EXPIRED |
Ordem expirada |
ORDER_STATE_REQUEST_ADD |
Ordem está sendo registrada (aplicação para o sistema de negociação) |
ORDER_STATE_REQUEST_MODIFY |
Ordem está sendo modificada (alterando seus parâmetros) |
ORDER_STATE_REQUEST_CANCEL |
Ordem está sendo excluída (excluindo a partir do sistema de negociação) |
Ao enviar uma ordem de negociação para ser executada no momento atual (time in force) é necessário especificar o preço e o volume de compra/venda. Ao fazer isso, vale a pena recordar que nos mercados financeiros não existe garantia de que num dado momento para dado ativo financeiro todo o volume solicitado estará disponível ao preço pretendido. É por esse motivo que a realização de operações de negociação em tempo real é regulada pelos modos de execução com base no preço e no volume. Os modos, ou seja, as políticas de execução, definem as regras para os casos em que o preço mudou ou o volume solicitado não pode ser totalmente cumprido no momento.
Modo de execução do preço - pode ser obtido na propriedade do símbolo SYMBOL_TRADE_EXEMODE que contém uma combinação de flags a partir da enumeração ENUM_SYMBOL_TRADE_EXECUTION.
Modo de execução |
Descrição |
Valor em ENUM_SYMBOL_TRADE_EXECUTION |
---|---|---|
Modo de execução
(Request Execution) |
Execução da ordem de mercado ao preço previamente recebido da corretora.
Antes de uma ordem de mercado ser enviada, são solicitados à corretora os preços pelos qual ela será executada. Após serem recebidos, a execução da ordem a um determinado preço pode ser confirmada ou rejeitada. |
SYMBOL_TRADE_EXECUTION_REQUEST |
Execução imediata
(Instant Execution) |
Execução imediata de uma ordem de mercado ao preço especificado.
Ao enviar uma ordem de negociação para ser executada, a plataforma substitui automaticamente os preços atuais na ordem.
|
SYMBOL_TRADE_EXECUTION_INSTANT |
Execução a mercado
(Market Execution) |
A decisão sobre o preço de execução é feita pela corretora sem acordo adicional com o trader.
O envio de uma ordem a mercado nesta modalidade implica que se aceita antecipadamente o preço a que será executada. |
SYMBOL_TRADE_EXECUTION_MARKET |
Execução de bolsa
(Exchange Execution) |
As operações de negociação são realizadas aos preços das cotações atuais de mercado. |
SYMBOL_TRADE_EXECUTION_EXCHANGE |
Política de preenchimento de volume especificada na propriedade ORDER_TYPE_FILLING da ordem e só pode conter valores da enumeração ENUM_ORDER_TYPE_FILLING
Política de execução |
Descrição |
Valor em ENUM_ORDER_TYPE_FILLING |
---|---|---|
Tudo/Nada (Fill or Kill) |
A ordem pode ser executada apenas com o volume especificado.
Se não houver volume do ativo financeiro no mercado não for suficiente no momento, a ordem não será executada.
O volume necessário pode ser composto por diversas ofertas atualmente disponíveis no mercado.
A possibilidade de usar ordens FOK é determinada no servidor de negociação. |
ORDER_FILLING_FOK |
Tudo/Parcial (Immediate or Cancel) |
O trader aceita executar a transação com o volume máximo disponível no mercado, dentro dos limites especificados na ordem.
Se a execução completa não for possível, a ordem será executada com o volume disponível, e o volume não executado da ordem será cancelado.
A possibilidade de usar ordens IOC é determinada no servidor de negociação.
|
ORDER_FILLING_IOC |
Retornar (Return) |
Em caso de execução parcial, a ordem com o volume residual continua em vigor, em vez de ser removida.
Ordens Return não são permitidas no modo Market Execution (execução de ordens a mercado - SYMBOL_TRADE_EXECUTION_MARKET). |
ORDER_FILLING_RETURN |
Ao enviar a ordem de negociação usando a função OrderSend(), a devida política de execução quanto ao volume pode ser definida no campo type_filling na estrutura especial MqlTradeRequest, com valores válidos da enumeração ENUM_ORDER_TYPE_FILLING. Para obter o valor desta propriedade em uma ordem específica ativa/concluída, use a função OrderGetInteger() ou HistoryOrderGetInteger() com o modificador ORDER_TYPE_FILLING.
Antes de enviar uma ordem para ser executada no momento atual, para a correta configuração do valor ORDER_TYPE_FILLING (tipo de execução por volume), para cada ativo financeiro por meio da função SymbolInfoInteger() você pode obter o valor da propriedade SYMBOL_FILLING_MODE que mostra os tipos de preenchimento por volume (permitidos para este símbolo) como uma combinação de flags. Deve-se observar que o tipo de preenchimento ORDER_FILLING_RETURN é sempre permitido, exceto para o modo "Execução da mercado" (SYMBOL_TRADE_EXECUTION_MARKET).
O uso de tipos de preenchimento dependendo do modo de execução pode ser representado na forma de uma tabela:
Modo de execução\Política de preenchimento |
Tudo/Nada (FOK ORDER_FILLING_FOK) |
Tudo/Parcial (IOC ORDER_FILLING_IOC) |
Retornar (Return ORDER_FILLING_RETURN) |
---|---|---|---|
Execução imediata
(SYMBOL_TRADE_EXECUTION_INSTANT) |
+ (independentemente da configuração do ativo) |
+ (independentemente da configuração do ativo) |
+ (sempre) |
Execuções a pedido
SYMBOL_TRADE_EXECUTION_REQUEST |
+ (independentemente da configuração do ativo)
|
+ (independentemente da configuração do ativo) |
+ (sempre) |
Execução a mercado
SYMBOL_TRADE_EXECUTION_MARKET |
+ (definido nas configurações do ativo) |
+ (definido nas configurações do ativo) |
- (proibido independentemente da configuração do ativo) |
Execução de bolsa
SYMBOL_TRADE_EXECUTION_EXCHANGE |
+ (definido nas configurações do ativo) |
+ (definido nas configurações do ativo) |
+ (sempre) |
Para ordens pendentes, independentemente do modo de execução (SYMBOL_TRADE_EXEMODE) é necessário utilizar o tipo de preenchimento ORDER_FILLING_RETURN, uma vez que essas ordens são executadas no momento do envio. Ao usar ordens pendentes, o trader aceita com antecedência que quando as condições para realização da transação nesta ordem forem atendidas, a corretora usará o tipo de preenchimento que é suportado por dada plataforma de negociação.
O período de validade de uma ordem pode ser definida no campo type_time da estrutura especial MqlTradeRequest ao enviar uma solicitação de negociação usando a função OrderSend(). Valores da enumeração ENUM_ORDER_TYPE_TIME enumeration são permitidos. Para obter o valor desta propriedade use a função OrderGetInteger() ou HistoryOrderGetInteger() com o modificador ORDER_TYPE_TIME.
Identificador |
Descrição |
---|---|
ORDER_TIME_GTC |
Ordem válida até cancelamento |
ORDER_TIME_DAY |
Ordem válida até o final do dia corrente de negociação |
ORDER_TIME_SPECIFIED |
Ordem válida até expiração |
ORDER_TIME_SPECIFIED_DAY |
A ordem permanecerá efetiva até 23:59:59 do dia especificado. Se esta hora está fora de uma sessão de negociação, a ordem expira na hora de negociação mais próxima. |
A propriedade ORDER_REASON contém a razão para a colocação da ordem. A ordem pode ser colocada usando um programa MQL5, a partir de um aplicativo móvel ou como resultado de um evento StopOut, etc. Os valores possíveis ORDER_REASON são descritos na enumeração ENUM_ORDER_REASON.
Identificador |
Descrição |
---|---|
ORDER_REASON_CLIENT |
Ordem colocada a partir de um terminal desktop |
ORDER_REASON_MOBILE |
Ordem colocada a partir de um aplicativo móvel |
ORDER_REASON_WEB |
Ordem colocada a partir da plataforma web |
ORDER_REASON_EXPERT |
Ordem colocada a partir de um programa MQL5, Expert Advisor ou script |
ORDER_REASON_SL |
Ordem colocada como resultado da ativação do Stop Loss |
ORDER_REASON_TP |
Ordem colocada como resultado da ativação do Take Profit |
ORDER_REASON_SO |
Ordem colocada como resultado do evento Stop Out |