MetaTrader 5 build 2340: gerenciamento de configurações da conta no testador e expansão da integração com o Python

Adicionada a possibilidade de trabalhar convenientemente com bancos de dados SQLite. Na atualização anterior da plataforma adicionamos suporte para trabalhar com bancos de dados SQLite diretamente da MQL5. Agora na interface do usuário do MetaEditor estão disponíveis as principais funções

21 fevereiro 2020

MetaEditor

  1. Adicionada a possibilidade de trabalhar convenientemente com bancos de dados SQLite.

    Na atualização anterior da plataforma adicionamos suporte para trabalhar com bancos de dados SQLite diretamente da MQL5. Agora na interface do usuário do MetaEditor estão disponíveis as principais funções:

    • Criação e conexão a bancos de dados
    • Visualização de tabelas e consulta de dados rápida
    • Compilação e execução de consultas SQL, reversão de alterações

    Como funciona isso?
    Para criar bancos de dados rapidamente, use o "Assistente MQL5". Aqui você pode criar imediatamente a primeira tabela e definir sua lista de campos.



    Após criar o banco de dados, você irá para a nova seção do "Navegador". Daí vem todo o trabalho com dados.

    O lado esquerdo exibe as tabelas do banco de dados. Para consultar rapidamente os primeiros 1 000 registros, clique duas vezes no nome da tabela. Aqui você pode criar e abrir outros bancos de dados, além de trabalhar com tabelas.

    Na parte principal do editor, ocorre o trabalho com o banco de dados: preencha a tabela com dados, faça pesquisas e seleções, insira consultas SQL, etc.


    Leia mais sobre como trabalhar com bancos de dados no MetaTrader 5 no artigo "SQLite: trabalho nativo com bancos de dados SQL em MQL5"

  2.  Continua o trabalho no que diz respeito à adição de suporte para projetos multilíngues. Nesta versão, expandimos as funções para trabalhar com scripts em Python:

    • Agora eles podem ser criados convenientemente através do "Assistente MQL5", incluindo imediatamente dependências nas bibliotecas necessárias no código.
    • Ao navegador para eles foram adicionados ícones especiais, já no editor foi acrescentado o destaque de sintaxe.
    • Quando um script é executado no MetaEditor, as mensagens do console do Python (stdout, stderr) são exibidas na seção Erros.


    Para executar o script no editor, clique em "Compilar":



    Para trabalhar com Python, não esqueça de especificar o caminho para ele na seção "Configurações \ Compiladores" no MetaEditor. E para trabalhar com a biblioteca MetaTrader 5, instale-a com o comando:
    pip install MetaTrader5
    Leia mais sobre a integração com o Python na documentação.
  3. Adicionada exibição de arquivos de bancos de dados SQLite (*.db;*.sdb;*.sqlite;*.db3;*.s3db;*.sqlite3) no "Navegador".
  4. Corrigidos erros ao salvar as propriedades do projeto.

MQL5

  1. Completamente redesenhada integração como Python. Adicionados muitos novos recursos e alterados nomes de comandos .

    Novos nomes de comandos
    Comandos existentes foram renomeados:
    MT5Initialize       -> initialize
    MT5Shutdown         -> shutdown
    MT5TerminalInfo     -> terminal_info
    MT5Version          -> version
    MT5CopyRatesFrom    -> copy_rates_from
    MT5CopyRatesFromPos -> copy_rates_from_pos
    MT5CopyRatesRange   -> copy_rates_range
    MT5CopyTicksFrom    -> copy_ticks_from
    MT5CopyTicksRange   -> copy_tick_range

    Novos comandos
    A lista de comandos suportados foi bastante expandida. Adicionadas funções de negociação e trabalho com o histórico de negociação, obtendo informações sobre instrumentos financeiros e conta atual.

    • account_info() — recebe informações sobre a conta atual. Análogo de AccountInfoInteger , AcountIndoDouble e AccountInfoString.
    • positions_total() — recebe o número de posições abertas. Análogo de PositionsTotal.
    • positions_get(symbol, ticket) — recebe posições abertas por símbolo ou ticket.
    • orders_total() — recebe o número de ordens. Análogo de OrdersTotal.
    • orders_get(symbol, ticket) — recebe ordens abertas por símbolo ou ticket.
    • history_orders_total(from, to) — recebe o número de ordens no histórico em um determinado período.
    • history_orders_get(from, to, position, ticket) — recebe ordens do histórico em um determinado intervalo por ticket ou com filtragem por posição.
    • history_deals_total() — recebe o número de transações no histórico. Análogo de HistoryDealsTotal.
    • history_deals_get(from, to, position, ticket) — — recebe o número de transações no histórico em um determinado intervalo por ticket ou com filtragem por posição.
    • symbol_info(symbol) — recebe informações sobre um instrumento financeiro. Análogo de SymbolInfoInteger, SymbolInfoDouble, SymbolInfoString.
    • symbol_info_tick(symbol) — получение последнего тика по символу. Análogo de SymbolInfoTick.
    • symbol_select(symbol, enable) — ativa/desativa símbolos na "Observação do Mercado". Análogo de SymbolSelect.
    • order_check(request) — verifica a margem de uma ordem. Análogo de OrderCheck.
    • order_send(request) — envia uma ordem ao servidor. Análogo de OrderSend.
    • order_calc_margin(action, symbol, volume, price) — cálculo da margem para a ordem. Análogo de OrderCalcMargin.
    • order_calc_profit(action, symbol, volume, price_open, price_close) — cálculo do lucro. Análogo de OrderCalcProfit.

    Inicialização de scripts Python em gráficos
    Agora, os scripts Python podem ser executados diretamente nos gráficos da plataforma, semelhante aos programas regulares do MQL5. No "Navegador", eles serão exibidos com ícones especiais.



    As mensagens de script serão exibidas na seção "Ferramentas \ Experts". Se no script for usada a Biblioteca MetaTrader 5, ele poderá receber informações sobre o instrumento, a conta, e negociar.

    Os scripts Python podem ser executados no mesmo gráfico em paralelo com outros scripts e EAs MQL5. Para parar o script, se sua execução estiver em loop, basta removê-lo do gráfico.

    Proteção adicional
    Para proteger ainda mais suas contas ao usar bibliotecas Python de terceiros, a opção "Desativar negociação automática por meio de uma API Python externa" foi adicionada às configurações do terminal.



    Os scripts Python permitem operações de negociação se esta opção estiver desabilitada explicitamente.

  2. Significativamente acelerada reinicialização de programas MQL5 e recriação de indicadores personalizados a partir de programas MQL5. Em alguns casos, a velocidade aumenta centenas de vezes.
  3. Adicionadas funções para trabalhar com bancos de dados:

    DatabaseImport
    Importa dados de um arquivo para uma tabela.
    long  DatabaseImport(
       int           database,          // identificador de banco de dados recebido em DatabaseOpen
       const string  table,             // nome da tabela para inserir dados
       const string  filename,          // nome do arquivo para importar dados
       uint          flags,             // combinação de sinalizadores
       const string  separator,         // separador de dados 
       ulong         skip_rows,         // quantas primeiras linhas a pular 
       const string  skip_comments      // linhas de caracteres que definem comentários
       );

    DatabaseExport
    Exporta uma tabela ou um resultado da consulta SQL para um arquivo CSV. O arquivo é criado como UTF-8.
    long  DatabaseExport( 
       int           database,           // identificador de banco de dados recebido em DatabaseOpen 
       const string  table_or_sql,       // nome da tabela ou consulta SQL
       const string  filename,           // nome do arquivo CSV para exportação de dados 
       uint          flags,              // combinação de sinalizadores 
       const string  separator           // separador de dados no arquivo CSV 
       );

    DatabasePrint
    Imprime uma tabela ou um resultado da consulta SQL no log do EA.
    long  DatabasePrint(
       int           database,          // identificador de banco de dados recebido em DatabaseOpen
       const string  table_or_sql,      // tabela ou consulta SQL
       uint          flags              // combinação de sinalizadores
       );

  4. MQL5: adicionada a função FileSelectDialog, que chama a caixa de diálogo do sistema para criar/abrir um arquivo ou pasta.
    int  FileSelectDialog(
       string   caption,              // título da janela
       string   initial_dir,          // pasta inicial
       string   filter,               // filtro de extensão
       uint     flags,                // combinação de sinalizadores
       string&  filenames[],          // matriz com nomes de arquivos
       string   default_filename      // nome do arquivo por padrão
       );
    A nova função permite o usuário interagir convenientemente com o programa MQL5.

  5. À enumeração ENUM_DEAL_PROPERTY_DOUBLE adicionado o valor DEAL_FEE — pagamento pela transação. De fato, esse é um tipo separado de comissão que pode ser cobrada pela corretora.

Tester

  1. Adicionada a possibilidade de definir suas próprias configurações de conta de negociação ao testar estratégias — restrições de negociação, configurações de margem e comissões. Assim, você obtém ainda mais oportunidades para modelar diferentes condições de negociação com as corretoras.



    Configurações gerais
    Nesta seção, você pode definir o número máximo de ordens e posições abertas que podem ser mantidas simultaneamente na conta. Também aqui você pode configurar sessões em que o programa testado não poderá negociar.


    Margem
    Aqui você pode controlar totalmente como a margem será reservada e qual sistema de registro de posição será usado durante o teste:

    • Gerenciamento de riscos — modelo de gerenciamento de riscos: balcão e baseado em bolsa, com compensação e cobertura. Informações detalhadas sobre eles estão disponíveis na documentação.
    • Nível "Margin call" — nível de fundos na conta, que ao serem atingidos muda para o estado Margin call.
    • Nível "Stop out" — nível de fundos que quando atingido faz com que o pedido seja retirado à força da conta e as posições de negociação sejam fechadas. Ambos os níveis podem ser indicados em porcentagem e em dinheiro. No primeiro caso, os níveis são definidos como o valor do indicador "Fundos" na conta. Quando você seleciona a opção "Em porcentagem", os níveis são determinados como o valor do indicador "Nível de margem" na conta (Fundos/Margem*100).
    • Não realizado — este campo indica como será levado em consideração o lucro/perda atual não registrado na margem livre:
      • Não usar lucros/perdas não realizados — não levar em consideração as posições abertas ao calcular.
      • Usar lucros/perdas não realizados — usar ao calcular perdas e lucro de posições abertas.
      • Usar lucro não realizado — use apenas lucro.
      • Usar perda não realizada — usar apenas perda.
    • Fixo diário — este campo indica como será levado em consideração o lucro/perda registrado pelo trader durante a negociação, na margem livre:
      • Usar lucros/perdas fixos diários — levar em consideração os lucros e perdas registrados durante o dia de negociação, na margem livre.
      • Usar perda fixa diária — levar em consideração apenas a perda registrada durante o dia de negociação, na margem livre. Durante o dia, o lucro acumulado é registrado em um campo separado da conta ("Bloqueado"). No final do pregão, o lucro acumulado é liberado (zerado) e refletido no saldo da conta (registrado na margem livre).
    • Liberar lucro acumulado no final do dia — esta opção estará disponível apenas quando a opção "Usar perda fixa diária" estiver ativada. Se ativada, no final do pregão, o lucro acumulado durante o dia será liberado e registrado no saldo (e, portanto, levado em consideração na margem livre). Caso contrário, não será considerado.


    Comissão
    Nesta seção, você está no controle total de como a comissão é cobrada em todas as operações de negociação.

    • As comissões podem ser de nível único e multinível, ou seja, podem ser cobradas com o mesmo valor, independentemente do volume da transação/rotatividade ou variar de acordo com o tamanho. As informações correspondentes são exibidas na especificação.
    • As comissões podem ser cobradas imediatamente após a transação ou no final do dia/mês de negociação.
    • As comissões podem ser cobradas dependendo da direção da transação: pela entrada, pela saída ou pelos dois tipos de operações.
    • As comissões podem ser cobradas por lote ou por transação.
    • As comissões podem ser cobradas em diferentes quantidades: em dinheiro, porcentagem ou pontos.


  2. Significativamente otimizado e acelerado o trabalho no modo "Market Scan", quando várias passagens de teste são realizadas para todos os símbolos da Observação do Mercado.
  3. Ao calcular o lucro em pips, é levado em consideração o tamanho da transação ou posição agora. Anteriormente, o cálculo era realizado sem considerar o volume, como para um lote.
  4. Aprimorado gerenciamento gráfico dos resultados de otimização. Ao aumentar o zoom em um gráfico normal de otimização, você pode rolar por ele. Clique duplo em um ponto do gráfico agora seleciona o resultado correspondente na tabela de passagens.
Documentação atualizada.