- Propriedades de uma Base Histórica de Dados
- Propriedades de uma Ordem
- Propriedades de uma Posição
- Propriedades de uma Operação
- Tipos de Operações de Negociação
- Tipos de Transação de Negociação
- Ordens de Negociação em DOM (Profundidade de Mercado)
- Propriedades de Sinal
Propriedades de uma Ordem
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 |
Passiva (Book or Cancel) |
Uma ordem BoC implica que o pedido só pode ser colocado no livro de ofertas e não pode ser executado imediatamente. Se a ordem pode ser executada imediatamente quando colocada, ela é retirada.
Na verdade, a política do COB garante que o preço da ordem colocada será pior do que o mercado atual. As ordens BOC são utilizadas para negociação passiva, garantindo que a ordem não seja executada imediatamente após a colocação, e que não afete a liquidez atual.
Ela é suportada somente para ordens limite e stop-limit (ORDER_TYPE_BUY_LIMIT, ORDER_TYPE_SELL_LIMIT, ORDER_TYPE_BUY_STOP_LIMIT, ORDER_TYPE_SELL_STOP_LIMIT). |
ORDER_FILLING_BOC |
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 |