MetaTrader 5 build 1325: negociação com cobertura e teste de ticks reais

O que há de novo na MetaTrader 5?

22 abril 2016

Terminal

  1. Para ampliar as possibilidades dos retail traders que negociam no mercado Forex, à plataforma foi adicionada a cobertura, isto é, um segundo sistema de registro. Agora, segundo um 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”, dito de outro modo, 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 multi-moeda 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 mercado Forex e utilizar a cobertura.

    Como abrir uma conta com cobertura e onde procurar o tipo registro de posições
    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:



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




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

    • Se existir uma posição segundo um instrumento, ao realizar uma transação na mesma direção ocorrerá o aumento do volume dessa posição.
    • Ao realizar uma transação na direção oposta, ocorrerá a diminuição do volume da posição existente, quer o seu fechamento (ao realizar uma transação de volume idêntico ao da posição atual), quer a reversão (se o volume da transação oposta for superior ao da posição atual).

    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:


    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:


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

    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ção de negociação, isto é, o fechamento de uma posição usando uma oposta. 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 ordens. 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ão iguais à 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:

    • Com o fechamento individual, o trader paga duas vezes pelo spread: fecha a compra ao menor preço (Bid), e a venda, ao maior (Ask).
    • Ao fechar a primeira posição utilizando uma oposta, usa-se o preço de abertura da segunda posição, e para fechar a segunda posição é utilizado o preço de abertura da primeira.


    Ao fechar uma posição usando uma oposta, você estará colocando uma ordem do tipo "close by". Nos comentários estão indicados os bilhetes das posições fechadas. Ao executar duas transações do tipo "out by", estará sendo fechado um par de posições opostas. O tamanho do lucro/perda brutos, resultante do fechamento de duas posições, é indicado apenas numa única transação.


  2. Para complementar a cobertura, na plataforma foi acrescentada a possibilidade de transferir contas a partir da MetaTrader 4. Agora as corretoras podem, no modo automático, migrar as contas para a MetaTrader 5, juntamente com todas as operações, nomeadamente, ordens abertas e pendentes, bem como todo o histórico de negociação.

    Ao conectar pela primeira vez a conta, transferida a partir da MetaTrader 4, aparecerá uma janela de boas-vindas. A transferência é realizada de forma segura. Para começar a trabalhar, indique a senha da conta usada anteriormente na MetaTrader 4 e, em seguida, defina uma nova senha.



    Uma vez conectado, você poderá trabalhar normalmente como se a conta tivesse sido originalmente aberta na MetaTrader 5, além disso, todo o histórico das transações da MetaTrader 4 será salvo automaticamente na nova conta.

    Quando fizer a importação, os bilhetes de ordens e posições (incluindo as ordens do histórico) não serão salvos, uma vez que uma entrada no histórico de negociação MetaTrader 4 pode corresponder até a 4 entradas no histórico da MetaTrader 5. São colocados novos bilhetes para todas as entradas de negociação.

    Os números das contas podem ser salvos ou substituídos por novos, dependendo de como a corretora faça a importação.

  3. Foi adicionado um bate-papo. Agora, diretamente na plataforma, você pode conversar com amigos e colegas na MQL5.community. No bate-papo são exibidas todas as mensagens pessoais da conta MQL5. Para começar a conversar, acesse a sua conta diretamente da caixa de bate-papo ou a partir das configurações da plataforma: Ferramentas -> Opções -> Comunidade.




  4. Foi simplificada a janela de abertura da conta demo e adicionada a possibilidade de abrir contas com cobertura. Agora você não precisa de preencher um formulário extenso, basta indicar as informações básicas e selecionar as opções de negociação: o tipo de conta, depósito, alavancagem e possibilidade de cobertura.



  5. Para começar a trabalhar rapidamente com a plataforma, foi adicionada a seleção automática da conta demo. Se, na plataforma, ainda não houver uma conta, então, ao iniciar o trabalho, será selecionada a conta demo. Após abrir a conta com sucesso, ela será imediatamente conectada.

  6. Agora todas as posições têm o seu próprio bilhete ou número único. Geralmente, ele corresponde ao bilhete da ordem, segundo o qual a posição foi aberta, exceto nos casos em que as operações de serviço no servidor tenham alterado o bilhete da ordem. Por exemplo, quando os swaps se acumulam com a reabertura de uma posição. 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.



  7. Foi corrigida a colocação de posições Stop Loss e Take Profit, ao estabelecer uma ordem de mercado que provoque a alteração da direção da posição. Os anteriores níveis correspondentes não foram colocados na nova posição.
  8. Foi corrigida a exibição dos preços com quatro ou mais dígitos após o ponto decimal nos controles do painel de negociação em um clique.
  9. Foi corrigido o erro de exibição de notícias na janela de visualização de impressão.
  10. Foram corrigidos os bugs de exibição do gráfico de ticks.
  11. Foi corrigida a abertura do livro de ofertas após um desligamento de emergência do terminal.
  12. Foi adicionada a possibilidade de verificar as ordens de mercado, ao exibir os elementos de gerenciamento do painel de negociação em um clique.
  13. Foi otimizado o cálculo de lucro e margem, quando existe um grande número de ordens e posições abertas.
  14. Foi adicionada a tradução da interface do usuário para malaio.
  15. Foi completamente atualizado o guia de usuário. Novo design, capturas de tela interativas e vídeos embutidos, tudo para fazer com que a aprendizagem, utilizando o MetaTrader 5, seja simples e cômoda.



  16. Foi corrigida a exibição de objetos gráficos no modo "Gráfico acima".

Tester

  1. Foi adicionada a possibilidade de testar robôs de negociação e indicadores técnicos de acordo com o histórico de ticks reais.

    O teste e a otimização de acordo com ticks reais são os que mais se aproximam das condições reais. Em vez de ticks gerados com base em dados de minutos, são usados ticks reais (segundo instrumentos financeiros) acumulados pela corretora. Esses são ticks provindos da bolsa e dos provedores de liquidez.

    Para começar a testar ou a otimizar, segundo ticks reais, selecione o respectivo modo de teste de estratégias:



    Os dados de ticks são significativamente maiores do que os dados de minutos. Ao executar pela primerira vez o teste, o seu download pode levar muito tempo. Os downloads dos dados de ticks são armazenados por meses em arquivos TKC no catálogo \bases\[nome do servidor de negociação]\ticks\[nome do símbolo]\.

    Particularidades ao testar ticks reais
    Ao testar com ticks reais, o spread nos limites da barra de minutos pode ser alterado, enquanto ao gerar ticks dentro nessa barra, é utilizado o spread fixado na barra correspondente.

    Se, segundo um instrumento, for transmitido o livro de ofertas, as barras serão construídas a partir dos preços de execução da última transação Last. Caso contrário, o testador tentará construir barras a partir dos preços Last. Caso esses preços não existam, então, serão feitas a partir dos preços Bid. O OnTick ativa-se em todos os ticks, independentemente de neles existir, ou não, preço Last.

    Por favor, note que as transações são sempre executadas segundo os preços Bid e Ask, mesmo se o gráfico for construído a partir dos preços Last. Por exemplo, se, para a negociação, o expert usar apenas o preço de abertura da barra (particularmente, o Moving Average embutido), então, você receberá um sinal de acordo com um preço (Last), mas a transação será executada de acordo com outro preço (Bid ou Ask, dependendo da direção). Ao usar o modo de geração "Todos os ticks", as barras serão construídas de acordo com os preços Bid, mas as transações serão executadas segundo os preços Bid e Ask. Com isso, o Ask é calculado como o Bid + o spread fixo correspondente à barra de minutos.

    Se no histórico do símbolo existir uma barra de minutos, mas, se, nesse minuto, não houver dados de ticks, o testador irá gerar ticks no modo "Todos os ticks". Isso permite que você teste o expert de acordo com o período previsto, no caso de os dados de ticks estarem incompletos na corretora. Se, no histórico do símbolo, não existir uma barra de minutos, mas, se, nesse minuto, houver dados de ticks, então, esses ticks serão ignorados. Os dados de minutos são considerados mais confiáveis.

    Teste usando ticks reais na rede de cálculo em nuvem MQL5 Cloud Network
    O teste, a partir dos ticks reais, está disponível não só em agentes locais e remotos, mas também na MQL5 Cloud Network. A otimização de estratégias, que poderia levar meses, é agora feita em poucas horas graças ao poder de processamento de milhares de computadores.

    Para testar usando a rede ative o uso de agentes de nuvem:



    O teste com ticks reais usando a MQL5 Cloud Network pode consumir uma grande quantidade de tráfego de Internet. Isto pode afectar significativamente o custo final pago pelo serviço de rede em nuvem. 
  2. Foi corrigido o erro onde a comissão não era calculada para alguns tipos de instrumentos de negociação.
  3. Foi corrigido o preenchimento do campo Expert nas ordens de negociação que apareciam como resultado da SL/TP, em conformidade com o valor do campo Expert na posição respectiva. Anteriormente não era preenchido.
  4. Foi corrigida a alternância para a guia de resultados da optimização normal e em tempo real.
  5. Foi corrigido o cálculo e exibição do indicador "Envelopes".
  6. Foi otimizada a execução do teste visual.
  7. Foi otimizado o cálculo de lucro e de margem quando haver um grande número de ordens e posições abertas.
  8. Foi otimizada a execução de operações ao negociar em alta-frequência.
  9. Agora a sincronização do histórico não ocorre devido às configurações de um símbolo fora de funcionamento e não requerido pelas cotações atuais. Por exemplo,  SYMBOL_SELECT, SYMBOL_DIGITS, SYMBOL_SPREAD_FLOAT, SYMBOL_TRADE_CALC_MODE, SYMBOL_TRADE_MODE, SYMBOL_TRADE_STOPS_LEVEL, SYMBOL_TRADE_FREEZE_LEVEL, SYMBOL_TRADE_EXEMODE и т.п. Anteriormente, a configuração de um símbolo fora de funcionamento fazia com que o histórico deste símbolo se começasse a sincronizar.
  10. Foi corrigido o cálculo fixo em porcentagens anuais.

MQL5

  1. MQL5: Foi alterado o formato dos arquivos executáveis EX5, devido à adição de novos recursos na linguagem MQL5 e ao surgimento da cobertura na plataforma MetaTrader 5. Todos os antigos programas EX5, compilados no MetaEditor de builds anteriores, irão funcionar corretamente após a atualização, de modo que a compatibilidade de baixo para cima é totalmente mantida.

    Ao mesmo tempo, os programas EX5 compilados nos builds 1325 e superiores não irão funcionar nos terminais de builds antigos, devido à ausência de compatibilidade.

  2. Foi adicionado o suporte para classes abstratas e funções virtuais puras.

    As classes abstratas são projetadas para criar entidades generalizadas, em cujas bases se supõe que serão criadas classes derivadas mais específicas. Uma classe abstrata é uma classe que pode ser usada apenas como uma classe base para outra classe, por isso é impossível criar um objeto do tipo de classe abstrata.

    Uma classe, que contenha pelo menos uma função meramente virtual, é abstrata. Portanto, as classes derivadas a partir da classe abstrata devem implementar todas suas funções virtuais puras, caso contrário também serão classes abstratas.

    Uma função virtual é considerada "pura" usando a sintaxe de um especificador de pureza. Por exemplo, consideremos a classe CAnimal que é criada apenas para fornecer funções comuns, dito de outro modo, os próprios objetos do tipo CAnimal têm um caráter demasiado amplo para uma aplicação prática. Assim, a classe CAnimal é uma boa candidata para uma classe abstrata:
    class CAnimal
      {
    public:
                          CAnimal();     // construtor
       virtual void       Sound() = 0;   // função virtual pura
    private:
       double             m_legs_count;  // número de patas do animal
      };
    Aqui a função Sound() é virtual pura, porque está declarada pelo especificador da função virtual PURE (=0).

    São funções virtuais puras apenas as funções virtuais para as quais é indicado o especificador de pureza PURE, e precisamente: (=NULL) ou (=0). Exemplo de declaração e uso de uma classe abstrata:
    class CAnimal
      {
    public:
       virtual void       Sound()=NULL;   // PURE method, deve ser redefinido no descendente, a mesma classe tornou-se abstrata e não pode ser criada
      };
    //--- descendente da classe abstrata
    class CCat : public CAnimal
     {
    public:
      virtual void        Sound() { Print("Myau"); } // PURE redefinido, a classe CCat não é abstrata e pode ser criada
     };
    
    //--- examples of wrong use
    new CAnimal;         // erro 'CAnimal' - o compilador emitirá o erro "cannot instantiate abstract class"
    CAnimal some_animal; // erro 'CAnimal' - o compilador emitirá o erro "cannot instantiate abstract class"
    
    //--- exemplos de uso correto
    new CCat;  // não há erro - a classe CCat não é abstrata
    CCat cat;  // não há erro - a classe CCat não é abstrata
    Restrições sobre o uso de classes abstratas
    Quando o construtor chamar uma classe abstrata da função virtual pura (direta ou indiretamente) o resultado será indefinido.
    //+------------------------------------------------------------------+
    //| Classe básica abstrata                                           |
    //+------------------------------------------------------------------+
    class CAnimal
      {
    public:
       //--- função virtual pura
       virtual void      Sound(void)=NULL;
       //--- função
       void              CallSound(void) { Sound(); }
       //--- construtor
       CAnimal()
        {
         //--- chamada direta do método virtual
         Sound();
         //--- chamada indireta (através de una terceira função)
         CallSound();
         //--- no construtor e/ou destrutor sempre são chamadas suas funções,
         //--- apesar do caráter virtual e da redefinição da função da chamada no descendente
         //--- se a função chamada for virtual pura, então,
         //--- a chamada provocará um erro crítico de execução: "pure virtual function call"
        }
      };
    No entanto, os construtores e destruidores de classes abstratas podem chamar outras funções membro.

  3. Para facilitar a organização de modelos de eventos, foi adicionado o suporte de indicadores para funções.

    Para declarar um indicador para uma função, defina o tipo "indicador para função", por exemplo:
    typedef int (*TFunc)(int,int);
    Agora TFunc é um tipo e é possível declarar o indicador mutável para a função:
    TFunc func_ptr;
    Na mutável func_ptr é possível armazenar o endereço da função para, no futuro, chamá-la:
    int sub(int x,int y) { return(x-y); }
    int add(int x,int y) { return(x+y); }
    int neg(int x)       { return(~x);  }
    
    func_ptr=sub;
    Print(func_ptr(10,5));
    
    func_ptr=add;
    Print(func_ptr(10,5));
    
    func_ptr=neg;           // error: neg is not of  int (int,int) type
    Print(func_ptr(10));    // error: there should be two parameters
    Indicadores para funções podem ser armazenados e transferidos como um parâmetro. É impossível obter um indicador para um método não estático de uma classe.

  4. Na estrutura da solicitação de negociação MqlTradeRequest foram adicionados dois novos tipos de campos:

    • position — bilhete de posição. Deve ser preenchido, ao negociar com cobertura ao alterar e fechar a posição para a sua identificação inequívoca. Ao negociar com sistema de cobertura de registro, o preenchimento deste campo não tem efeito, porque a identificação de posições ocorre segundo o nome do instrumento de negociaçã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. É utilizado apenas na cobertura do registro de posições.

  5. Na enumeração dos tipos de operações ENUM_TRADE_REQUEST_ACTIONS foi adicionado o valor TRADE_ACTION_CLOSE_BY — fechamento da posição oposta. É utilizado apenas na cobertura do registro de posições.

  6. Na enumeração das propriedades das ordens, transações e posições, foram adicionados os bilhetes correspondentes às operações de negociação:

    • No ENUM_ORDER_PROPERTY_INTEGER foi adicionada a propriedade ORDER_TICKET — bilhete da ordem. Um número exclusivo atribuído a cada ordem.
    • No ENUM_DEAL_PROPERTY_INTEGER foi adicionada a propriedade DEAL_TICKET — bilhete da transação. Um número exclusivo atribuído a cada transação.
    • No ENUM_POSITION_PROPERTY_INTEGER foi adicionada a propriedade POSITION_TICKET — bilhete da posição. Um número exclusivo atribuído a cada posição. Geralmente, ele corresponde ao bilhete da ordem, segundo o qual a posição foi aberta, exceto nos casos em que as operações de serviço no servidor tenham alterado o bilhete da ordem. Por exemplo, quando os swaps se acumulam com a reabertura de uma posição. Para localizar a ordem, segundo a qual foi aberta a posição, você deve utilizar a propriedade POSITION_IDENTIFIER. Valor POSITION_TICKET corresponde a MqlTradeRequest::position.

  7. Na enumeração dos tipos de ordens ENUM_ORDER_TYPE foi adicionado o valor ORDER_TYPE_CLOSE_BY — ordem para fechamento da posição oposta.
  8. Na enumeração das propriedades das ordens ENUM_ORDER_PROPERTY_INTEGER foi adicionado o valor ORDER_POSITION_BY_ID — identificador da posição oposta para ordens do tipo ORDER_TYPE_CLOSE_BY.
  9. Na enumeração das direções da transação ENUM_DEAL_ENTRY foi adicionado o valor DEAL_ENTRY_OUT_BY — a transação foi efetuada como resultado do fechamento da posição oposta .
  10. À estrutura da transação financeira MqlTradeTransaction foram adicionados dois campos análogos:

    • position — bilhete da posição que foi afetado pela transação. Preenche-se para transações relacionadas com o processamentos das ordens de mercado (TRADE_TRANSACTION_ORDER_* exceto TRADE_TRANSACTION_ORDER_ADD, onde o bilhete da posição ainda não foi atribuído) e o histórico de ordens (TRADE_TRANSACTION_HISTORY_*).
    • 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. Preenche-se apenas para ordens de fechamento da posição oposta (close by) e transações de fechamento da oposta (out by).

  11. Adicionada a função PositionGetTicket — retorna o bilhete da posição segundo o índice na lista de posições abertas e seleciona automaticamente essa posição para trabalhar no futuro com ela usando a função PositionGetDouble, PositionGetInteger, PositionGetString.
    ulong  PositionGetTicket(
       int  index      // número na lista de posições
       );

  12. Adicionada a função PositionSelectByTicket — seleciona uma posição aberta para trabalhar no futuro com ela segundo o bilhete indicado.
    bool  PositionSelectByTicket(
       ulong   ticket     // bilhete da posição
       );

  13. Na numeração das propriedades de instrumentos financeiros ENUM_SYMBOL_INFO_DOUBLE foi adicionado o valor SYMBOL_MARGIN_HEDGED — tamanho do contrato ou margem para um lote de posições sobrepostas (posições com várias direções segundo um mesmo símbolo).

    • Se, para o instrumento, tiver sido estabelecida uma margem inicial (SYMBOL_MARGIN_INITIAL), então, a margem de cobertura é indicada como valor absoluto (em dinheiro).
    • Se não se tiver estabelecido uma margem inicial (igual a 0), então, no campo SYMBOL_MARGIN_HEDGED indica-se o tamanho do contrato que será usado no cálculo da margem segundo a fórmula correspondente ao tipo de instrumento de negociação (SYMBOL_TRADE_CALC_MODE).

    As particularidades do cálculo de margem no sistema de cobertura de registro de posições está descrito no guia do usuário da plataforma de negociação MetaTrader 5.

  14. Na enumeração das propriedades da conta ENUM_ACCOUNT_INFO_INTEGER foi adicionado o valor ACCOUNT_MARGIN_MODE — modo de cálculo de margem para a conta de negociação atual:

    • 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ções dos instrumentos. Os descontos são determinados pelo corretor, no entanto, não podem ser inferiores aos valores definidos pela bolsa de valores.
    • 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 o tamanho da margem de cobertura (SYMBOL_MARGIN_HEDGED).

  15. Na numeração das propriedades do terminal de cliente ENUM_TERMINAL_INFO_INTEGER foi adicionado o valor TERMINAL_SCREEN_DPI — resolução da informação na tela que está definida pelo número de pontos por polegada linear na superfície (DPI). Ao conhecer esse parâmetro, você pode especificar as dimensões dos objetos gráficos para que eles que sejam iguais em monitores com resolução diferente.

  16. Na enumeração das propriedades ENUM_TERMINAL_INFO_INTEGER foi adicionado o valor TERMINAL_PING_LAST — último valor conhecido de um ping até ao servidor em microssegundos. Em um segundo há um milhão de microssegundos.

  17. Corrigido o retorno do resultado da chamada da função SendFTP. Anteriormente, após o envio bem-sucedido, retornava o valor FALSE em vez de TRUE.
  18. Corrigido o erro na função StringConcatenate, que, em alguns casos, causava o erro de execução "Access violation".
  19. Corrigidos vários bugs ao trabalhar com funções-modelos.
  20. Agora as funções Print, Alert e Comment podem exibir seqüências maiores que 4.000 caracteres.
  21. Corrigido o erro na função ArrayCompare que aparecia quando a matriz era comparada consigo mesma.
  22. À biblioteca padrão foi adicionado o suporte de negociação com cobertura:

    CPosition
    Foram adicionados os métodos:

    • SelectByMagic — seleciona a posição segundo um número mágico e um símbolo para trabalhos futuros.
    • SelectByTicket —seleciona a posição segundo um bilhete para trabalhos futuros.

    CTrade
    Foram adicionados os métodos:

    • RequestPosition — obtém os bilhetes de posição.
    • RequestPositionBy — obtém os bilhetes da posição oposta.
    • PositionCloseBy — fecha a posição com o bilhete indicado da posição com direção oposta.
    • SetMarginMode — define o modo de cálculo da margem de acordo com as configurações da conta atual.

    Foi adicionada a sobrecarga de métodos:

    • PositionClose — fecha a posição segundo o bilhete.
    • PositionModify — modifica a posição segundo o bilhete.

    CAccountInfo
    Foram alterados os métodos:

    • MarginMode — agora obtém o modo para o cálculo da margem. Anteriormente, trabalhava analogamente ao novo método StopoutMode.
    • MarginDescription — agora obtém o modo de cálculo para a margem como para a linha. Anteriormente, trabalhava analogamente ao novo método StopoutModeDescription.

    Foram adicionados os métodos:

    • StopoutMode — obtém o modo para definir o nível mínimo de garantia.
    • StopoutModeDescription — obtém o modo para definir o nível mínimo de garantia como para a linha.

    CExpert
    Foram adicionados os métodos:

    • SelectPosition — seleciona uma posição para o subseqüente trabalho com ela.

  23. Foram adicionadas várias correções à biblioteca padrão.
  24. Foi corrigido o erro de download das bibliotecas DLL.
  25. Foi adicionado o suporte para construtores de escalas de classes.

Sinais

  1. Foram corrigidos vários erros de exibição no mostruário de sinais de negociação.

MetaEditor

  1. Foi corrigida a pesquisa de palavra por arquivo no modo "Apenas palavra inteira".
  2. Foi adicionada a possibilidade de ir até ao arquivo através de um duplo clique nos resultados da compilação do arquivo respectivo.
  3. Foi corrigida a exibição de alguns elementos de gerenciamento no Windows XP.
Documentação atualizada.