- 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
A Estrutura de Solicitação de Negociação (MqlTradeRequest)
A interação entre o terminal do cliente e o servidor de negociação para colocar ordens realiza-se usando solicitações de negociação (pedidos de negociação). A solicitação de negociação é apresentada por uma estrutura predefinida especial chamada de MqlTradeRequest, ela contém todos os campos necessários para realizar operações (deals) de negociação. O resultado do processamento da solicitação é apresentado pela mesma estrutura MqlTradeResult.
struct MqlTradeRequest
|
Descrição dos Campos
Campo |
Descrição |
---|---|
action |
Tipo de operação de negociação. Pode ser um dos valores da enumeração ENUM_TRADE_REQUEST_ACTIONS. |
magic |
Expert Advisor ID. Permite organizar um processamento analítico de ordens de negociação. Cada Expert Advisor pode definir seu próprio ID (identificador) único ao enviar uma solicitação de negociação. |
order |
Bilhetagem (ticket) da ordem. É usado para modificar ordens pendentes. |
symbol |
Ativo da ordem. Não é necessário para modificação de ordens e operações de encerramento de posição. |
volume |
Volume da ordem solicitada em lotes. Note que o volume real de uma operação (deal) dependerá do tipo de execução da ordem. |
price |
Preço no qual a ordem deve ser executada. Ordens a mercado de ativos, cujo tipo de execução é "Market Execution" (SYMBOL_TRADE_EXECUTION_MARKET), de tipo TRADE_ACTION_DEAL, não necessitam que se especifique o preço. |
stoplimit |
O valor do preço, no qual a ordem pendente Limit será colocada, quando o preço corrente alcança o valor deste preço(esta condição é obrigatória). Até lá, a ordem pendente não é colocada. |
sl |
Preço de Stop Loss no caso de um movimento desfavorável de preço |
tp |
Preço de Take Profit no caso de um movimento favorável de preço |
deviation |
O máximo desvio de preço, especificado em pontos |
type |
Tipo de ordem. Pode ser um dos valores da enumeração ENUM_ORDER_TYPE. |
type_filling |
Tipo de execução da ordem. Pode ser um dos valores da enumeração ENUM_ORDER_TYPE_FILLING. |
type_time |
Tipo de expiração da ordem. Pode ser um dos valores da enumeração ENUM_ORDER_TYPE_TIME. |
expiration |
Hora de expiração da ordem (para ordens do tipo ORDER_TIME_SPECIFIED) |
comment |
Comentário sobre a ordem |
position |
Bilhete da posição. Deve ser preenchido ao alterar e fechar a posição para a sua identificação inequívoca. Normalmente, corresponde ao bilhete de ordem, do qual, como resultado, a posição foi aberta. |
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. |
Para modificar ou fechar posições no sistema de cobertura, você deve especificar o seu bilhete (MqlTradeRequest::position). No sistema de compensação o bilhete também pode ser especificado, mas a identificação da posição é realizada segundo o nome do símbolo. |
Para enviar ordens para realizaroperações de negociação (trade)é necessário usar a função OrderSend(). Para cada operação de negociação é necessário especificar campos obrigatórios; campos opcionais também podem ser preenchidos. Existem sete possíveis casos para enviar uma ordem de negociação:
Execução a Pedido
Esta é uma ordem de negociação para abrir uma posição no modo Request Execution (negociação sobre preços solicitados). Ela requer que se especifique os seguintes 9 campos:
- action
- symbol
- volume
- price
- sl
- tp
- deviation
- type
- type_filling
Também é possível especificar valores dos campos "magic" e "comment".
Execução Instantânea
Esta é uma ordem de negociação para abrir uma posição no modo Instant Execution (negociação pelos preços correntes). Ela requer que se especifique os seguintes 9 campos:
- action
- symbol
- volume
- price
- sl
- tp
- deviation
- type
- type_filling
Também é possível especificar valores dos campos "magic" e "comment".
Execução de Mercado
Esta é uma ordem de negociação para abrir uma posição no modo Market Execution (execução a mercado). Ela requer que se especifique os seguintes 5 campos:
- action
- symbol
- volume
- type
- type_filling
Também é possível especificar valores dos campos "magic" e "comment".
Execução Exchange
Esta é uma ordem de negociação para abrir uma posição no modo Exchange Execution (execução em um sistema de negociação externo). Ela requer que se especifique os seguintes 5 campos:
- action
- symbol
- volume
- type
- type_filling
Também é possível especificar valores dos campos "magic" e "comment".
Exemplo de operação de negociação TRADE_ACTION_DEAL para abrir uma posição Buy:
#define EXPERT_MAGIC 123456 // MagicNumber do conselheiro |
Exemplo de operação de negociaçãoTRADE_ACTION_DEAL para abertura da posição Sell:
#define EXPERT_MAGIC 123456 // MagicNumber do conselheiro |
Exemplo de ordem de negociação TRADE_ACTION_DEAL para fechadura de posições:
#define EXPERT_MAGIC 123456 // MagicNumber do conselheiro |
SL & TP Modificação
Ordem de negociação para modificar os níveis de preço StopLoss e/ou TakeProfit Ela requer que se especifique os seguintes 4 campos:
- action
- symbol
- sl
- tp
- position
Exemplo da operação de negociação TRADE_ACTION_SLTP para alterar o valor Stop-Loss e Take-Profit na posição aberta:
#define EXPERT_MAGIC 123456 // MagicNumber do conselheiro |
Ordem Pendente
Ordem de negociação para colocar uma ordem pendente. Ela requer que se especifiquem os seguintes 11 campos:
- action
- symbol
- volume
- price
- stoplimit
- sl
- tp
- type
- type_filling
- type_time
- expiration
Também é possível especificar valores dos campos "magic" e "comment".
Exemplo de operação de negociação TRADE_ACTION_PENDING para colocação de ordens pendentes:
#property description "Exemplo de colocação de ordens pendentes" |
Modificar Ordem Pendente
Ordem de negociação para modificar os preços de uma ordem pendente. Ela requer que se especifiquem os seguintes 7 campos:
- action
- order
- price
- sl
- tp
- type_time
- expiration
Exemplo de operação de negociação TRADE_ACTION_MODIFY para modificação dos níveis de preços da ordem pendente:
#define EXPERT_MAGIC 123456 // MagicNumber do conselheiro |
Excluir Ordem Pendente
Ordem de negociação para excluir uma ordem pendente. Ela requer que se especifiquem os seguintes 2 campos:
- action
- order
Exemplo de operação de negociação TRADE_ACTION_REMOVE para excluir ordens pendentes:
#define EXPERT_MAGIC 123456 // MagicNumber do conselheiro
|
Também Veja
Estruturas e Classes, Funções de Negociação (Trade), Propriedades de Ordem