- Estrutura do Tipo Data
- Estrutura de Parâmetros de Entrada
- Estrutura de Dados Históricos
- Estrutura DOM
- Estrutura de Solicitação de Negociação (Trade)
- Estrutura de Resultados de Verificação de Solicitação
- Estrutura de Resultado de Solicitação de uma Negociação (Trade)
- Estrutura de uma Transação de Negociação
- Estrutura para Preços Correntes
- Estruturas do calendário econômico
Estrutura de um Transação de Negociação (MqlTradeTransaction)
Ao realizar algumas ações específicas em uma conta de negociação, seu estado muda. Tais ações includem:
- Envio de uma solicitação de negociação a partir de algum aplicativo MQL5 no terminal usando as funções OrderSend e OrderSendAsync e sua posterior execução.
- Envio de uma solicitação de negociação por meio da interface gráfica do terminal e sua posterior execução.
- Ativação de ordens pendentes e ordens de stop no servidor.
- Realização de operações no lado de um servidor de negociação.
As seguintes transações de negociação são realizadas como resultado destas ações:
- tratamento de uma solicitação de negociação
- mudança de ordens de abertura
- mudança de histórico de ordens
- mudança de histórico de operações (deals)
- mudança de posições
Por exemplo, ao enviar uma ordem de mercado para compra, ele é processado, para a conta cria-se a respetiva ordem para compra, a ordem é executada, excluída da lista de ordens abertas, adicionada ao histórico de ordens, a seguir, a transação respetiva é adicionada ao histórico e, finalmente, é criada uma nova posição. Todas estas ações são transações financeiras.
Para obter transações financeiras, aplicadas à conta, a MQL5 dispõe de um processador especial chamado de OnTradeTransaction (). Ao primeiro parâmetro deste processador é transferida a estrutura MqlTradeTransaction, que descreve a transação financeira.
struct MqlTradeTransaction
|
Descrição dos Campos
Campo |
Descrição |
---|---|
deal |
Bilhetagem (ticket) da operação. |
order |
Bilhetagem (ticket) da ordem. |
symbol |
O nome do ativo da negociação, para o qual a transação é realizada. |
type |
Tipo de transação de negociação. O valor pode ser um dos valores da enumeração ENUM_TRADE_TRANSACTION_TYPE. |
order_type |
Tipo de ordem de negociação. O valor pode ser um dos valores da enumeração ENUM_ORDER_TYPE. |
order_state |
Estado da ordem de negociação. O valor pode ser um dos valores da enumeração ENUM_ORDER_STATE. |
deal_type |
Tipo de operação. O valor pode ser um dos valores da enumeração ENUM_DEAL_TYPE. |
time_type |
Tipo de ordem quanto a expiração. O valor pode ser um dos valores da enumeração ENUM_ORDER_TYPE_TIME. |
time_expiration |
Período de expiração de uma ordem pendente (para ordens dos tipos ORDER_TIME_SPECIFIED e ORDER_TIME_SPECIFIED_DAY). |
price |
Preço. Dependendo do tipo de transação de negociação, ele pode ser um preço de uma ordem, de uma operação (deal), ou de uma posição. |
price_trigger |
Preço stop (de ativação) de uma ordem Stop Limit (ORDER_TYPE_BUY_STOP_LIMIT e ORDER_TYPE_SELL_STOP_LIMIT). |
price_sl |
Preço Stop Loss. Dependendo do tipo de transação de negociação, ele pode estar relacionado a uma ordem, a uma operação (deal) ou a uma posição. |
price_tp |
Preço Take Profit. Dependendo do tipo de transação de negociação, ele pode estar relacionado a uma ordem, a uma operação (deal) ou a uma posição. |
volume |
Volume em lotes. Dependendo do tipo de transação de negociação, ele pode indicar o valor corrente de uma ordem, de uma operação (deal), ou de uma posição. |
position |
Bilhete da posição que foi afetado pela transação. |
position_by |
Bilhete da posição oposta. Utiliza-se ao fechar uma posição usando outra oposta, se estiver aberta no mesmo instrumento, mas na direção oposta. |
O parâmetro essencial para análise de uma transação recebida é o seu tipo, especificado no campo type. Por exemplo, se uma transação é do tipo TRADE_TRANSACTION_REQUEST (um resultado de operar uma negociação requisitada pelo servidor foi recebido), a estrutura possui apenas um campo único que é completamente preenchido - type. Outros campos não são analisados. Neste caso, nós podemos analisar dois parâmetros adicionais, request e result, submetidos ao handler OnTradeTransaction(), como mostrado abaixo.
Tendo dados sobre um tipo de operação de negociação, você pode decidir sobre a análise do estado corrente de ordens, posições e operações (deals) em um conta de negociação. Lembre-se que uma solicitação de negociação enviada ao servidor a partir do terminal pode gerar várias novas transações. A prioridade de chegada delas no terminal não é garantida.
A estrutura MqlTradeTransaction é preenchida de diferentes maneiras dependendo do tipo de transação de negociação (ENUM_TRADE_TRANSACTION_TYPE):
TRADE_TRANSACTION_ORDER_* e TRADE_TRANSACTION_HISTORY_*
Os seguintes campos na estrutura MqlTradeTransaction são preenchidos para transações de negociação relacionados a manipulação de abertura de ordens (TRADE_TRANSACTION_ORDER_ADD, TRADE_TRANSACTION_ORDER_UPDATE e TRADE_TRANSACTION_ORDER_DELETE) e histórico de ordens (TRADE_TRANSACTION_HISTORY_ADD, TRADE_TRANSACTION_HISTORY_UPDATE, TRADE_TRANSACTION_HISTORY_DELETE):
- order - bilhetagem da ordem;
- symbol - nome do ativo da ordem;
- type - tipo de transação de negociação;
- order_type - tipo de ordem;
- orders_state - estado corrente da ordem;
- time_type - tipo de expiração da ordem;
- time_expiration - hora de expiração da ordem (para ordens tendo tipos de expiração ORDER_TIME_SPECIFIED e ORDER_TIME_SPECIFIED_DAY);
- price - preço da ordem especificado por um cliente;
- price_trigger - preço de stop de ordem stop limit (somente para ORDER_TYPE_BUY_STOP_LIMIT e ORDER_TYPE_SELL_STOP_LIMIT);
- price_sl - Preço de ordem Stop Loss (preenchido, se especificado na ordem);
- price_tp - Preço de ordem Take Profit (preenchido, se especificado na ordem);
- volume - volume corrente da ordem (não preenchida). Volume inicial da ordem pode ser encontra no histórico de ordens usando a função HistoryOrders*.
- position - bilhete da posição, aberta, fechada ou modificada como resultado da execução da ordem. A preenchido apenas para ordens de mercado. Não é preenchido para TRADE_TRANSACTION_ORDER_ADD.
- position_by - bilhete da posição oposta. Preenche-se apenas para ordens de fechamento da posição oposta (close by).
TRADE_TRANSACTION_DEAL_*
Os seguintes campos na estrutura MqlTradeTransaction são preenchidos para transações de negociação relacionados a manipulação de operações (TRADE_TRANSACTION_DEAL_ADD, TRADE_TRANSACTION_DEAL_UPDATE e TRADE_TRANSACTION_DEAL_DELETE):
- deal - bilhetagem da operação (deal);
- order - bilhetagem da ordem, baseado na qual uma operação (deal) foi realizada;
- symbol - nome de ativo da operação (deal);
- type - tipo de transação de negociação;
- deal_type - tipo de operação (deal);
- price - preço de operação (deal);
- price_sl - preço de Stop Loss (preenchido, se especificado na ordem, baseado na qual uma operação foi realizada);
- price_tp - preço de Take Profit (preenchido, se especificado na ordem, baseado na qual uma operação foi realizada);
- volume - volume de operação em lotes.
- position - bilhete da posição, aberta, fechada ou modificada como resultado da execução da transação.
- position_by - bilhete da posição oposta. Preenche-se apenas para transações de fechamento da posição oposta (out by).
TRADE_TRANSACTION_POSITION
Os seguintes campos na estrutura MqlTradeTransaction são preenchidos para transações de negociação relacionado a mudança de posições não conectados com execução de operações (deals) (TRADE_TRANSACTION_POSITION):
- symbol - nome de ativo da posição;
- type - tipo de transação de negociação;
- deal_type - tipo de posição (DEAL_TYPE_BUY ou DEAL_TYPE_SELL);
- price - preço médio ponderado de abertura de posição;
- price_sl - preço de Stop Loss;
- price_tp - preço de Take Profit;
- volume - volume de posição em lotes, se ele foi alterado.
- position - bilhete de posição.
Alteração de Posição (adição, alteração, encerramento), como resultado de uma execução de operação (deal), não leva a ocorrência de transação de TRADE_TRANSACTION_POSITION. |
TRADE_TRANSACTION_REQUEST
Somente um campo na estrutura MqlTradeTransaction é preenchido para transações de negociação descrevendo o fato de que uma solicitação de negociação foi processada por um servidor e que o resultado do processamento foi recebido (TRADE_TRANSACTION_REQUEST):
- type - tipo de transação de negociação;
Somente o campo type (tipo de transação de negociação) de ser analisado para tais transações. O segundo e terceiro parâmetros (request e result) da função OnTradeTransaction deve ser analisado para dados adicionais. |
Exemplo:
input int MagicNumber=1234567; |
Também Veja