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()

ENUM_ORDER_PROPERTY_INTEGER

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

ENUM_ORDER_TYPE

ORDER_STATE

Estado de uma ordem

ENUM_ORDER_STATE

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

ENUM_ORDER_TYPE_FILLING

ORDER_TYPE_TIME

tempo de duração de uma ordem

ENUM_ORDER_TYPE_TIME

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

ENUM_ORDER_REASON

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()

ENUM_ORDER_PROPERTY_DOUBLE

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()

ENUM_ORDER_PROPERTY_STRING

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.

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.

ENUM_ORDER_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 solicitação de negociação usando a função OrderSend(), a política de preenchimento pode ser atribuída para uma ordem no campo type_filling da estrutura especial MqlTradeRequest. Valores da enumeração ENUM_ORDER_TYPE_FILLING são permitidos. Para obter o valor desta propriedade, usa a função OrderGetInteger() ou HistoryOrderGetInteger() com o modificador ORDER_TYPE_FILLING.

ENUM_ORDER_TYPE_FILLING

Identificador

Descrição

ORDER_FILLING_FOK

Esta política de preenchimento significa que uma ordem pode ser preenchida somente na quantidade especificada. Se a quantidade desejada do ativo não está disponível no mercado, a ordem não será executada. O volume requerido pode ser preenchido usando várias ofertas disponíveis no mercado no momento.

ORDER_FILLING_IOC

Este modo significa que um negociador concorda em executar uma operação com o volume máximo disponível no mercado conforme indicado na ordem. No caso do volume integral de uma ordem não puder ser preenchido, o volume disponível dele será preenchido, e o volume restante será cancelado.

ORDER_FILLING_RETURN

Esta política é usada somente para ordens a mercado (ORDER_TYPE_BUY e ORDER_TYPE_SELL), ordens limit e stop limit (ORDER_TYPE_BUY_LIMIT, ORDER_TYPE_SELL_LIMIT, ORDER_TYPE_BUY_STOP_LIMIT e ORDER_TYPE_SELL_STOP_LIMIT ) e somente para os ativos com execução a Mercado ou execução em um sistema de negociação externo (Exchange)***. No caso de um preenchimento parcial, uma ordem a mercado ou do tipo limit com volume remanescente não é cancelada, mas processada posteriormente.

Para a ativação das ordens ORDER_TYPE_BUY_STOP_LIMIT e ORDER_TYPE_SELL_STOP_LIMIT, uma ordem limit correspondente, ORDER_TYPE_BUY_LIMIT/ORDER_TYPE_SELL_LIMIT com o tipo de execução ORDER_FILLING_RETURN, é criada.

 

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.

ENUM_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.

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