20 dezembro 2017
20 dezembro 2017
Na nova versão da plataforma será descontinuado o suporte a terminais desktop e móveis das versões mais antigas:
Para dar suporte a novos projetos de grupo, foi modificado o protocolo
de trabalho com o armazenamento online MQL5 Storage. Infelizmente, após a
atualização para uma nova versão da plataforma, você terá que
re-extrair todos os dados a partir do repositório. Os dados armazenados
nele não serão nem afetados nem perdidos.
Antes de atualizar
para uma nova versão da plataforma, recomendamos que você envie todas as
alterações locais para o repositório (executar Commit).
Por exemplo, você pode criar uma ferramenta que mostrará o índice do dólar (USDX). Sua fórmula é a seguinte:
50.14348112 * pow(ask(EURUSD),-0.576) * pow(USDJPY,0.136) * pow(ask(GBPUSD),-0.119) * pow(USDCAD,0.091) * pow(USDSEK,0.042) * pow(USDCHF,0.036)
Nota: na fórmula original do índice do dólar, são usados os pares
USDEUR e USDGBP. Como na plataforma há apenas pares invertidos, na
fórmula do instrumento sintético para eles é usada uma potência negativa
e o preço Ask, em vez do Bid.
A plataforma calculará em tempo
real o preço do novo instrumento com base nas cotações de outros seis
instrumentos diferentes fornecidos pela sua corretora. Na Observação do
mercado e no gráfico, você pode ver como se altera seu preço:
int CustomTicksAdd( const string symbol, // nome do símbolo const MqlTick& ticks[] // matriz com dados de ticks que é necessário aplicar ao instrumento personalizado );A função CustomTicksAdd permite enviar ticks, como se viessem do servidor da corretora. Os dados não são gravados diretamente no banco de ticks, em vez disso, são enviados para a janela "Observação do mercado". Em seguida, a partir dela, o terminal armazena ticks em seu banco de dados. Quando o volume de dados enviados numa única chamada é muito grande, a função muda o seu comportamento para economizar recursos. Ao carregar mais de 256 ticks, os dados são divididos em duas partes. A primeira parte (a maior) é imediatamente gravada no banco de ticks (como o faz CustomTicksReplace). A segunda parte, que consiste nos últimos 128 ticks, é enviada através da janela "Observação do mercado" e, em seguida, é armazenada na base do terminal.
Projetos com recursos completos estão agora disponíveis no
MetaEditor. O processo de desenvolvimento de programas se tornou muito
mais conveniente.
Agora o arquivo de programa principal MQ5 não
é apresentado como projeto. O projeto é um arquivo separado "MQPROJ",
em que são armazenadas as configurações do programa, os parâmetros de
compilação e informações sobre todos os arquivos utilizados. O acesso às
principais configurações do projeto é organizado através de uma caixa
de diálogo separada, não há mais necessidade de especificá-las no código
fonte através de #property.
Para o trabalhar facilmente com o projeto, existe uma guia
separada no Navegador. Ela mostra todos os arquivos usados por
categorias: incluídos, de recurso, de cabeçalhos, etc. Além disso, os
arquivos são adicionados ao navegador do projeto automaticamente. Por
exemplo, se você habilitar um novo arquivo MQH no código, ele será
exibido automaticamente na seção "Dependencies" do navegador.
Ao
mesmo tempo, nós tornamos possível trabalhar com novos projetos no
repositório online MQL5 Storage. Agora, o desenvolvimento de grandes
projetos pode ser realizado conjuntamente com outros participantes da
MQL5.community.
Para trabalhar com projetos em grupo, foi adicionada a nova seção Shared Projects. O projeto criado nesta seção é imediatamente enviado para o repositório: você pode distribuir rapidamente permissões de acesso a ele a outros participantes e começar o desenvolvimento conjunto.
Quando você compila o projeto no Shared Project, o executável EX5 é automaticamente copiado no catálogo local Experts, Indicators ou Scripts, dependendo do tipo de programa. Você pode imediatamente executar o programa dentro do gráfico, sem ter que copiar os arquivos manualmente de cada vez.
Alterações no trabalho com o repositório MQL5 Storage
Para uma experiência completa com projetos em grupo, foi refeito o protocolo de trabalho com o repositório MQL5 Storage. Infelizmente, após a atualização para uma nova versão da plataforma, você terá que re-extrair todos os dados a partir do repositório. Os dados armazenados nele não serão nem afetados nem perdidos.
Agora o comando "Extrair dados do repositório" (Checkout from Storage) está indisponível. Para extrair dados, são usados os comandos "Ativar MQL5 Storage" e "Obter arquivo do repositório":
Novos projetos: exemplo de criação e detalhes de trabalho
Ao MetaEditor foi adicionado o projeto. Trata-se de um arquivo com extensão mqproj, em que são armazenadas as propriedades gerais do programa, bem como informações sobre todos os arquivo utilizados. Agora é possível gerenciar facilmente as propriedades do programa numa caixa de diálogo separada do MetaEditor, em vez de alterá-las manualmente no código-fonte (diretiva #property).
Se você já tiver um projeto, a maneira mais fácil de experimentar novos projetos é usar o comando "Novo projeto a partir do arquivo-fonte."
No diretório em que o arquivo selecionado está localizado, será criado um novo arquivo de projeto com o mesmo nome e a extensão mqproj. As principais propriedades do programa especificadas no código-fonte via #property serão automaticamente adicionadas ao projeto, incluindo o nome, direitos de autor, versão, link para o site e programa de descrição do desenvolvedor.
Foram adicionadas duas novas opções para compilar programas MQL5:
Para trabalhar com o projeto, use a guia separada "Projeto" na janela "Navegador". Todos os arquivos usados no projeto são exibidos nesta guia convenientemente. Quando um projeto é gerado a partir de um arquivo de origem, todos os arquivos anexados (especificados usando a diretiva #include no arquivo MQ5 principal e em todos os arquivos incluídos no mesmo) são automaticamente adicionados à seção "Dependencies".
Quando você adiciona novos arquivos no código fonte, eles também aparecerão no Navegador do projeto. Os arquivos de cabeçalho usados serão adicionados à seção Headers, enquanto as imagens, sons e outros programas MQL5 são adicionados ao projeto como recursos na seção Resources. Na seção Sources, são exibidos os arquivos MQ5 com código-fonte. Na seção Settings and files, pode-se adicionar outros arquivo, por exemplo, configurações de teste e modelos de gráficos.
Para adicionar arquivos existentes a um projeto ou para excluir os arquivos a partir dele, use os comandos do menu contextual. Tenha cuidado ao excluir, pois você pode estar removendo um arquivo de projeto (remover a ligação) ou completamente excluí-lo do disco rígido:
Criar um novo projeto é tão facilmente como a criação de um programa MQL5 convencional. Clique em "Novo projeto", selecione o tipo de programa e especifique suas propriedades (nome, manipuladores de eventos, etc.) no Assistente MQL5, no modo normal.
Para obter um arquivo executável EX5, você pode abrir um projeto e pressionar F7 (o comando de compilação) ou abrir o arquivo MQ5 principal do programa e compilá-lo.
Projetos em grupo no MQL5 Storage: detalhes de trabalho
Projetos em grupo são gerenciados a partir da seção Shared Projects. Se você não tiver conectado o repositório ainda, execute o comando Activate MQL5 Storage no menu de contexto desta pasta. MetaEditor verificará se o seu armazenamento contém dados armazenados e se existem quaisquer projetos disponíveis para você. Os dados existente serão recuperados do seu repositório e carregados na seu computador (Checkout). Os projetos em grupo serão exibidos na seção Shared Project, para extrai-los clique em "Extrair arquivos do repositório" no menu contextual.
Para criar um novo projeto grupal, selecione a pasta Shared Projects e clique em "Novo projeto":
Em seguida, complete as etapas do Assistente MQL5: defina o tipo, nome e propriedades do futuro programa. Para projetos em grupo, escolha nomes claros e compreensíveis, para que os outros participantes possam encontrá-los facilmente. Nos nomes dos projetos só podem ser usadas letras latinas sem espaços.
Imediatamente após a criação do projeto, ele é automaticamente adicionado ao repositório MQL5 Storage. Os arquivos usados pela biblioteca padrão no repositório não são adicionados, você pode adicioná-los manualmente, se necessário.
Para permitir outros participantes trabalharem com o projeto, abra suas propriedades. Você pode, especificando o login da MQL5.community, conceder permissões a usuários, bem como estabelecer os parâmetros gerais do trabalho em grupo:
A fim de facilitar o trabalho, ao compilar o projeto grupal, o
executável final (EX5) é copiado automaticamente na pasta Experts,
Indicators ou Scripts, dependendo do tipo de programa. Assim, você pode
executar imediatamente o programa no terminal, sem ter que copiá-lo
manualmente no diretório desejado.
Projetos públicos no MQL5 Storage: participação no desenvolvimento
Como mencionado acima, cada projeto em grupo, na MQL5 Storage, tem configurações de disponibilidade ao público: o projeto pode ser privado ou aberto à participação de outros usuários. Agora, todos os projetos com participação livre são exibidos na guia separada "Projetos públicos".
Todo mundo pode encontrar um projeto interessante e participar em seu desenvolvimento. Basta pressionar "Ingressar" e, em seguida, receber o projeto a partir do repositório.
//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- arquivo de modelo como matriz binária unsigned char my_template[]= { 0xFF,0xFE,0x3C, ... ,0x00 // a matriz de dados é reduzida }; //--- armazenamento e implementação do modelo if(FileSave("my_template.tpl",my_template)) { Print("Custom template saved in \\MQL5\\Files"); if(ChartApplyTemplate(0,"\\Files\\my_template.tpl")) Print("Custom template applied to the current chart"); else Print("Failed to apply custom template"); } else Print("Failed to save custom template"); }
Função | Ação |
---|---|
CustomSymbolCreate | Cria um símbolo personalizado com o nome especificado no grupo definido |
CustomSymbolDelete | Remove o símbolo personalizado com o nome especificado |
CustomSymbolSetInteger | Define o valor do tipo inteiro para o símbolo personalizado |
CustomSymbolSetDouble | Define o valor do tipo real para o símbolo personalizado |
CustomSymbolSetString | Define o valor do tipo cadeia de caracteres para o símbolo personalizado |
CustomSymbolSetMarginRate | Define o coeficiente de cobrança da margem - dependendo do tipo e direção da ordem - para o símbolo personalizado |
CustomSymbolSetSessionQuote | Define a hora de início e fim da sessão de cotação especificada para o símbolo especificado e dia da semana |
CustomSymbolSetSessionTrade | Define a hora de início e fim da sessão de negociação especificada para o símbolo especificado e dia da semana |
CustomRatesDelete | Exclui todas as barras no histórico de preço do instrumento personalizado, no intervalo de tempo selecionado |
CustomRatesReplace | Substitui todo o histórico de preços do instrumento personalizado pelos dados na matriz do tipo MqlRates, no intervalo de tempo definido |
CustomRatesUpdate | Adiciona ao histórico do instrumento personalizado as barras que faltam e substitui os dados existentes na matriz do tipo MqlRates |
CustomTicksAdd | Adiciona dados de uma matriz do tipo MqlTick ao histórico de preços de um símbolo personalizado. O símbolo personalizado deve ser selecionado na janela Market Watch (Observação do mercado). |
CustomTicksDelete | Exclui todos os ticks no histórico de preço do instrumento personalizado, no intervalo de tempo selecionado |
CustomTicksReplace | Substitui todo o histórico de preço do instrumento personalizado pelos dados na matriz do tipo MqlTick, no intervalo de tempo definido |
A biblioteca está localizada no diretório de trabalho do terminal na pasta Include\Generic.
bool ArraySwap( void& array1[], // primeira matriz void& array2[] // segunda matriz );A função implementa matrizes dinâmicas do mesmo tipo e as mesmas dimensões. Para matrizes multidimensionais, o número de elementos em todas as dimensões, excepto o primeiro, tem de ser o mesmo.