Agora a plataforma MetaTrader 5 possui um sistema de cobertura de registro de posições

MetaQuotes | 22 março, 2016

A plataforma MetaTrader 5 foi inicialmente criada para trading de bolsa com registro de posições baseado na compensação. Ao fazer um registro baseado na compensação segundo um instrumento financeiro, você pode ter apenas uma posição, por isso, todas as subseqüentes operações do instrumento levarão à alteração do volume, ao fechamento ou à reversão da posição existente. Para ampliar as possibilidades dos traders de retail-Forex, foi adicionado à plataforma a cobertura (segundo sistema de registro). Agora, segundo o instrumento, você pode ter várias posições, incluindo posições opostas. Isto permite implementar estratégias de negociação com o assim chamado bloqueio, por outras palavras, se o preço estiver contra o trader, ele terá a possibilidade de abrir uma posição na direção oposta.

O novo sistema de registro é análogo ao utilizado na MetaTrader 4, o que faz com que seja familiar para os traders. Além disso, eles poderão utilizar todas as vantagens da quinta versão da plataforma: execução de ordens usando várias transações (incluindo a parcial), o testador multimonetário e multi-fio (multithread) com o apoio da rede de computação em nuvem MQL5 Cloud Network e muitas outras.

Agora, você pode em uma conta negociar na bolsa, onde se utiliza a compensação, e pode ter apenas um instrumento segundo uma posição. Além disso, na mesma plataforma, mas em outra conta, você pode negociar no Forex e utilizar a cobertura.

Mais à frente no artigo será falado detalhadamente acerca da compensação e da cobertura, bem como sobre alterações ligadas com a implementação de um segundo sistema de registro.


O registro de posições depende da conta de negociação

O tipo de registro de posições é definido no nível da conta, ele é exibido no cabeçalho da janela do terminal e, também, no diário:

Sistema de registro de posições na conta atual

Para abrir uma conta demo com cobertura, habilite a opção correspondente:

Abertura de uma conta demo com cobertura

Para abrir uma conta real com cobertura, entre em contato com o seu corretor.


Sistema de compensação

Este sistema de registro implica que num dado momento, possa haver apenas uma posição aberta, segundo o mesmo símbolo, na conta:

Neste caso, não importa a ação pela qual é realizada a transação na direção oposta, por outras palavras, é indiferente se foi resultado da execução de uma ordem de mercado ou devido à ativação de uma ordem pendente.

Abaixo mostramos um exemplo da execução de duas transações de compra de EURUSD com um volume de 0,5 lotes cada:

Sistema de compensação de registro de posições

Como resultado da execução destas transações, temos uma posição geral com um volume de 1 lote.


Sistema de cobertura

Este sistema de registro permite que você tenha múltiplas posições do mesmo instrumento, incluindo em direções opostas.

Se, segundo um instrumento de negociação, existir uma posição aberta e o trader executar uma nova transação (ou se estiver ativa uma ordem pendente), ocorrerá a abertura de uma nova posição. A posição atual não será alterada.

Abaixo mostramos um exemplo da execução de duas transações de compra de EURUSD com um volume de 0,5 lotes cada:

Sistema de compensação de registro de posições

Como resultado da execução destas transações, temos a abertura de duas posições distintas.


Alcance dos sistemas de registro

Dependendo do sistema de registro de posições na conta, algumas funções da plataforma de negociação se comportam de forma diferente:


Novo tipo de operação de negociação Close By

Para contas com cobertura de registro de posições, foi adicionado um novo tipo de operações de negociação que consiste no fechamento da posição usando a posição contrária. Esta operação permite fechar simultaneamente duas posições opostas de um mesmo instrumento. Se as posições opostas tiverem diferentes números de lotes, então, permanecerá aberta apenas uma das duas. O seu volume será igual à diferença dos lotes de duas posições fechadas, e a direção da posição e o preço de abertura será igual à maior (em volume) das posições fechadas.

Em comparação com o fechamento individual de duas posições, o fechamento da oposta permite ao trader poupar um spread:

Fechamento de uma posição com outra oposta

Ao fechar a posição usando outra oposta, estabelece-se uma ordem do tipo "close by". No seu comentário são indicados os bilhetes das posições fechadas. O fechamento de duas posições opostas ocorre usando duas transações do tipo "out by". O tamanho do lucro/perda total, obtido como resultado do fechamento de ambas as posições, é indicado apenas em uma transação.

Operação de fechamento da posição usando outra oposta no histórico da conta


Particularidades do cálculo de margem no sistema de cobertura de registro de posições

Ao usar o sistema de cobertura de registro de posições, o cálculo da margem é realizado de acordo com as mesmas fórmulas e princípios que usa o sistema de compensação. No entanto, há certas peculiaridades, se você tiver várias posições do mesmo instrumento.

Posições/ordens abertas em uma direção

Para posições, soma-se o volume e calcula-se o preço médio ponderado de abertura. Os valores obtidos são utilizados para calcular a margem segundo a fórmula correspondente ao tipo de instrumento.

Para ordens pendentes (com um coeficiente de margem nulo), a margem será calculada individualmente.

Posições/ordens em distintas direções

São consideradas como posições cobertas ou tapadas, aquelas posições abertas em um mesmo instrumento, mas em direções distintas. Há duas maneiras de calcular a margem dessas posições. O método de cálculo é determinado pela corretora.

Configurações do cálculo de margem de cobertura na especificação do contrato


Cálculo básico
Cálculo em conformidade com o maior lado
Usa-se, se no campo "Margem de cobertura" nas especificações do contratonão tiver sido indicado o valor "cálculo em conformidade com a parte maior".

O cálculo consiste em várias etapas:
  • Para volume não coberto
  • Para o volume volume coberto (se estiver indicado o tamanho da margem de cobertura)
  • Para ordens pendentes
  • O tamanho final da margem calcula-se como a soma da margem calculada em cada etapa.

Cálculo para o volume não coberto
  • Calcula-se o volume total de todas as posições e ordens pendentes para cada uma das partes, buy e sell.
  • Calcula-se o preço médio ponderado de abertura de posições e ordens de mercado: (preço de abertura da posição ou ordem 1 * volume da posição ou ordem 1 + ... + preço de abertura da posição ou ordem N * volume da posição ou ordem N) / (volume da posição ou ordem 1 + ... + volume da posição ou ordem N).
  • Calcula-se o volume não coberto (do volume da parte maior subtrai-se a parte menor).
  • Usando o volume calculado e o preço médio ponderado, realiza-se o cálculo da margem segundo a fórmula correspondente ao  tipo de instrumento.
  • Ao calcular o coeficiente da margem e a conversão da moeda da margem para a moeda do depósito usam-se o valor médio ponderado do coeficiente e da taxa de câmbio.

Cálculo para o volume coberto

Usa-se, se nas especificações do contrato tiver sido indicado o valor "Margem de cobertura". Neste caso, a margem é cobrada tanto para o volume coberto, como para o volume não coberto.

Se, para o instrumento, tiver sido estabelecida uma margem inicial, então, a margem de cobertura é indicada como valor absoluto (em dinhero).

Se não se tiver estabelecido uma margem inicial (igual a 0), no campo "Coberto" indica-se o tamanho do contrato. O cálculo da margem realiza-se segundo a fórmula que corresponde ao tipo de instrumento, usando o tamanho do contrato indicado. Por exemplo, temos duas posições Buy EURUSD 1 lot e Sell EURUSD 1 lot, o tamanho do contrato será igual a 100 000. Se no campo "Coberto" se indicar o valor 100 000, então, para ambas as posições a margem será tomada como para 1 lote. Se for indicado 0, não será cobrada a margem pelo volume coberto.

Por cada lote coberto de posições, a margem é cobrada de acordo com o valor indicado no campo "Margem de cobertura" nas especificações do contrato:
  • Calcula-se o volume coberto de todas as posições tanto abertas como de mercado (do volume da parte maior subtrai-se o volume não coberto).
  • Calcula-se o preço médio ponderado de abertura de posições e ordens: (preço de abertura da posição ou ordem 1 * volume da posição ou ordem 1 + ... + preço de abertura da posição ou ordem N * volume da posição ou ordem N) / (volume da posição ou ordem 1 + ... + volume da posição ou ordem N).
  • Usando o volume calculado, o preço médio ponderado e o tamanho da margem de cobertura, realiza-se o cálculo da margem conforme a fórmula correspondente ao tipo de instrumento.
  • Ao calcular o coeficiente da margem e a conversão da moeda da margem para a moeda do depósito usam-se o valor médio ponderado do coeficiente e da taxa de câmbio.

Cálculo para ordens pendentes
  • Calcula-se a margem de cada tipo de ordens pendentes (separadamente para Buy Limit, separadamente para Sell Limit, etc.)
  • Ao calcular o coeficiente da margem e a conversão da moeda da margem para a moeda do depósito usam-se o valor médio ponderado do coeficiente e da taxa de câmbio para cada tipo de ordens pendentes.
Usa-se, se no campo "Margem de cobertura" nas especificações do contrato tiver sido indicado o valor "cálculo em conformidade com a parte maior".
  • Calcua-se a margem para a parte maior e menor de todas as posições abertas e ordens de mercado.
  • Calcula-se a margem de cada tipo de ordens pendentes (separadamente para Buy Limit, separadamente para Sell Limit, etc.)
  • Soma-se a margem da parte maior: posições longas e ordens de mercado + ordens longas pendentes.
  • Soma-se a margem da parte menor: posições curtas e ordens de mercado + ordens curtas pendentes.
  • Como tamanho total da margem usa-se o maior dos valores calculados.


Alterações na MQL5

Agora todas as posições têm o seu próprio bilhete. Normalmente, coincide com o bilhete da ordem com a qual a posição foi aberta. O bilhete será atribuído automaticamente a todas as posições anteriormente abertas, após a atualização para uma nova versão do terminal.

Para modificar ou fechar posições no sistema de cobertura, você deve especificar o seu bilhete (MqlTradeRequest::ticket). 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.


MqlTradeRequest

À estrutura da solicitação de negociação MqlTradeRequest foram adicionados dois novos campos:

struct MqlTradeRequest
  {
   ENUM_TRADE_REQUEST_ACTIONS    action;           // Tipo de ação executada
   ulong                         magic;            // Carimbo do expert (identificador magic number)
   ulong                         order;            // Bilhete da ordem
   string                        symbol;           // Nome do instrumento financeiro
   double                        volume;           // Volume solicitado da negociação em lotes
   double                        price;            // Preço 
   double                        stoplimit;        // Nível da ordem Stop Limit
   double                        sl;               // Nível da ordem Stop Loss
   double                        tp;               // Nível da ordem Take Profit
   ulong                         deviation;        // Desvio máximo admissível no que respeita ao preço solicitado
   ENUM_ORDER_TYPE               type;             // Tipo de ordem
   ENUM_ORDER_TYPE_FILLING       type_filling;     // Tipo de ordem segundo a execução
   ENUM_ORDER_TYPE_TIME          type_time;        // Tipo de ordem segundo o tempo da ação
   datetime                      expiration;       // Prazo de validade da ordem (para ordens do tipo ORDER_TIME_SPECIFIED)
   string                        comment;          // Comentários anexados à ordem
   ulong                         position;         // Bilhete da posição
   ulong                         position_by;      // Bilhete da posição oposta
  };

MqlTradeTransaction

À estrutura da transação financeira MqlTradeTransaction foram adicionados dois campos análogos:

struct MqlTradeTransaction
  {
   ulong                         deal;             // Bilhete da operação
   ulong                         order;            // Bilhete da ordem
   string                        symbol;           // Nome do instrumento financeiro
   ENUM_TRADE_TRANSACTION_TYPE   type;             // Tipo de transação financeira
   ENUM_ORDER_TYPE               order_type;       // Tipo de ordem
   ENUM_ORDER_STATE              order_state;      // Estado da ordem
   ENUM_DEAL_TYPE                deal_type;        // Tipo de transação
   ENUM_ORDER_TYPE_TIME          time_type;        // Tipo de ordem segundo o tempo da ação
   datetime                      time_expiration;  // Prazo de validade da ordem
   double                        price;            // Preço 
   double                        price_trigger;    // Preço da ativação da ordem stop-limit
   double                        price_sl;         // Nível Stop Loss
   double                        price_tp;         // Nível Take Profit
   double                        volume;           // Volume em lotes
   ulong                         position;         // Bilhete da posição
   ulong                         position_by;      // Bilhete da posição oposta
  };


PositionGetTicket

A nova função PositionGetTicket devolve o bilhete da posição segundo o índice na lista de posições abertas e seleciona automaticamente esta posição para trabalhar com ela no futuro usando as funções PositionGetDouble, PositionGetInteger, PositionGetString.

ulong  PositionGetTicket(
   int  index      // número na lista de posições
   );


PositionSelectByTicket

A nova posição PositionSelectByTicket seleciona uma posição aberta para trabalhar com ela no futuro segundo o bilhete indicado.

bool  PositionSelectByTicket(
   ulong   ticket     // bilhete da posição
   );


PositionSelect

A PositionSelect seleciona uma posição segundo o nome do símbolo para trabalhar com ela no futuro usando as funções PositionGetDouble, PositionGetInteger, PositionGetString. No sistema de cobertura de registro de posições, onde podem existir várias posições segundo um símbolo, a função selecionará a posição com o menor bilhete.


ACCOUNT_MARGIN_MODE

A nova propriedade ACCOUNT_MARGIN_MODE permite obter o modo de cálculo da margem e do registro das posições na conta:

Identificador
Descrição
ACCOUNT_MARGIN_MODE_RETAIL_NETTING
Usa-se para o mercado de balcão ao registrar as posições no modo "compensação" (segundo um símbolo pode existir apenas uma posição). O cálculo da margem é realizado com base no tipo de instrumento (SYMBOL_TRADE_CALC_MODE).
ACCOUNT_MARGIN_MODE_EXCHANGE
Usa-se para o mercado de bolsa. O cálculo da margem é realizado com base nos descontos indicados nas configuraçãoes dos instrumentos. Os descontos são estabelecidos pela corretora, no entanto não podem ser inferiores aos valores determinados pela bolsa.
ACCOUNT_MARGIN_MODE_RETAIL_HEDGING
Usa-se para o mercado de balcão ao ser realizado o registro independente de posições ("cobertura", segundo um símbolo, podem existir várias posições). O cálculo da margem realiza-se com base no tipo de instrumento (SYMBOL_TRADE_CALC_MODE) e tendo em conta a existência de várias posições dum mesmo símbolo.


SYMBOL_MARGIN_HEDGED

A nova propriedade SYMBOL_MARGIN_HEDGED permite obter o tamanho da margem de cobertura de um instrumento de negociação. As particularidades do cálculo da margem com o sistema de cobertura de registro de posições são exibidas acima.


Novas constantes de negociação

Por causa da adição do novo tipo de operação de negociação "Close by", apareceram novas propriedades de negociação:


A cobertura e a MQL5 Cloud Network são um bónus adicional

Agora, usando a MetaTrader 5, você pode negociar tanto nos mercados de bolsa, como no popular retail-Forex com cobertura. E os desenvolvedores de sistemas automáticos, que usam cobertura, obtiveram mais uma vantagem importante: agora não só têm à sua disposição o testador multi-fio (multithread), mas também a poderosa rede de computação em nuvem distribuída MQL5 Cloud Network.

Atualize e use as novas possibilidades!