Sinais baseados em contas reais estão disponíveis somente por Assinatura paga; sinais baseados em contas demo podem ser recebidos somente por Assinatura gratuita.
Sinais baseados em contas em centavos não podem ter Assinatura paga. Tais Sinais estão disponíveis apenas no terminal MetaTrader gratuitamente. Uma conta de centavos é definida automaticamente. No caso de um Sinal ser definido incorretamente, a Administração do serviço pode atribuir esta propriedade ao Sinal manualmente.
Entretanto, em termos práticos, o uso de redes Kohonen apenas para comércio algorítmico foi confinado a uma única abordagem, ou seja, a mesma análise visual dos mapas de topologia construídos para os resultados da otimização da EA. Neste caso, o julgamento de valor, ou melhor, a visão e a capacidade de tirar conclusões razoáveis a partir de uma imagem acaba sendo, talvez, o fator crucial, deixando de lado as propriedades da rede no que diz respeito à representação de dados em termos de questões de porcas e parafusos.
Em outras palavras, as características dos algoritmos de redes neurais não foram utilizadas ao máximo, ou seja, foram utilizadas sem extrair automaticamente o conhecimento ou apoiar a tomada de decisões com recomendações específicas. Neste artigo, consideramos o problema de definir os conjuntos ótimos de parâmetros dos robôs de uma maneira mais formalizada. Além disso, vamos aplicar a rede Kohonen à previsão das faixas econômicas. Entretanto, antes de prosseguirmos com estes problemas aplicados, devemos rever os códigos-fonte existentes, obter algo fixo e fazer algumas melhorias.
É altamente recomendável ler primeiro os artigos acima, se você não estiver familiarizado com os termos como "rede", "camada", "neurônio" ("nó"), "link", "peso", "taxa de aprendizagem", "faixa de aprendizagem" e outras noções relacionadas às redes de Kohonen. Então, teremos que nos saturar neste assunto, de modo que o re-ensino das noções básicas alongaria significativamente esta publicação.
A atualização da plataforma MetaTrader 5 será lançada em 21 de fevereiro de 2019. A nova versão apresenta as seguintes alterações:
Terminal: Calendário Econômico integrado completamente revisado.
O Calendário Econômico é nossa solução proprietária. Nele você encontrará mais de 600 notícias e indicadores financeiros relacionados às 13 maiores economias globais: EUA, União Européia, Japão, Reino Unido, Canadá, Austrália, China entre outros. Dados relevantes são coletados de fontes abertas em tempo real.
A nova versão apresenta conteúdos atualizados e filtros avançados de eventos: por horário, prioridade, moedas e países.
Os dados do calendário agora podem ser acessados a partir de programas MQL5. Por favor, veja abaixo para detalhes.
Terminal: Adicionado novo tipo de aplicativos MQL5 — Serviços. Este novo tipo permite a criação de feeds de preços personalizados para o terminal, ou seja, implementar a entrega de preços a partir de sistemas externos em tempo real, tal como é implementado nos servidores de negociação das corretoras.
Ao contrário dos Expert Advisors, indicadores e scripts, os serviços não estão vinculados a um gráfico específico. Esses aplicativos são executados em segundo plano e são iniciados automaticamente quando o terminal é iniciado (a menos que esse aplicativo tenha sido interrompido à força).
Os serviços podem ser gerenciados a partir de uma nova seção na janela do Navegador:
Como criar serviços Para criar um modelo de serviço, use a opção correspondente do Assistente MQL5 . Os serviços têm um ponto de entrada OnStart , semelhante aos scripts. Neste ponto, você pode implementar um ciclo infinito de recebimento e manipulação de dados usando funções de rede .
Como lançar serviços Para executar vários Expert Advisors ou cópias de indicadores com parâmetros diferentes, você deve iniciá-los em gráficos diferentes. Neste caso, diferentes instâncias de programa são criadas, que então operam independentemente. Os serviços não estão vinculados a gráficos, portanto, foi implementado um mecanismo especial para a criação de instâncias de serviço.
Selecione um serviço no Navegador e clique em "Adicionar serviço" em seu menu de contexto. Isso abrirá uma caixa de diálogo padrão do programa MQL5, na qual você pode ativar/desativar negociação e acesso às configurações de sinal, bem como definir vários parâmetros.
Uma instância de serviço pode ser iniciada e interrompida usando o menu de instância apropriado. Para gerenciar todas as instâncias, use o menu de serviço.
Terminal: Um programa de aprendizagem foi adicionado.
O novo recurso ajudará os iniciantes a aprender a interagir com a plataforma. Adicionamos mais de 100 dicas interativas sobre os principais recursos da plataforma.
As dicas são exibidas perfeitamente como uma barra de progresso na barra de ferramentas e, portanto, não distraem o usuário.
As dicas aparecem apenas para as ações que você nunca realizou na plataforma.
Todas as dicas incluem links interativos, pelos quais você pode navegar para os elementos de interface relevantes. Por exemplo, uma caixa de diálogo de negociação ou um menu com o programa desejado pode ser lançado diretamente da ponta.
A área preenchida da barra de progresso aumentará sempre que você realizar as ações apropriadas e continuar o treinamento.
Terminal: O histórico da conta de negociação pode ser apresentado como posições. A plataforma coleta dados sobre negócios relacionados à posição (abertura, aumento de volume, fechamento parcial ou total) e agrupa as informações em um único registro. Assim, você pode acessar os detalhes da posição: horário de abertura e fechamento, volume, preço e resultado. Este formulário de apresentação eficiente está agora disponível em relatórios de histórico exportados para arquivos.
Terminal: Adicionada nova API permitindo a solicitação de dados do terminal MetaTrader 5 por meio de aplicativos usando a linguagem R.
Preparamos um pacote especial do MetaTrader. Ele contém DLL para interações entre R e o terminal MetaTrader 5, documentação e arquivos r auxiliares. Estamos concluindo o cadastro do pacote no repositório CRAN , após o qual ele estará disponível para download e instalação.
O pacote pode ser instalado usando um comando especial:
R CMD INSTALL --build MetaTrader
Os seguintes comandos relacionados à solicitação de dados estão disponíveis:
MT5Initialize inicializa e estabelece conexão com o terminal MetaTrader 5. Se necessário, o terminal é iniciado durante a execução do comando.
O MT5Shutdown é desinicializado e desconectado do MetaTrader 5.
O MT5Version obtém a versão do terminal MetaTrader 5.
O MT5TerminalInfo obtém o estado e os parâmetros da conexão do terminal ao servidor de um corretor (número da conta e endereço do servidor).
O MT5WaitTerminal espera que o terminal MetaTrader 5 se conecte ao servidor de um corretor.
MT5CopyTicksFrom(symbol, from, count, flags) copia o número especificado de ticks a partir da data especificada. A data é especificada em milissegundos desde 01.01.1970.
MT5CopyTicksRange(symbol, from, to, flags) copia os ticks dentro do período especificado. As datas são especificadas em milissegundos desde 01.01.1970.
MT5CopyRatesFrom(symbol, timeframe, from, count) copia o número especificado de barras de um minuto a partir da data especificada. A data é especificada em segundos desde 01.01.1970.
MT5CopyRatesFromPos(symbol, timeframe, start_pos, count) copia barras de um minuto da posição especificada em relação à última barra.
MT5CopyRatesFromRange(symbol, timeframe, date_from, date_to) copia as barras de dentro do período especificado. As datas são especificadas em segundos desde 01.01.1970.
A lista de comandos suportados será expandida ainda mais.
Terminal: Caixa de diálogo Fechar por otimizado usada para fechar uma posição por uma oposta. Agora, o diálogo não fica mais lento, mesmo se você tiver um grande número de posições abertas.
Terminal: Corrigidos erros de cálculo de símbolos sintéticos , devido aos quais os dados podiam ser ignorados ocasionalmente.
Terminal: Quando um símbolo personalizado é excluído, os arquivos que armazenam seu histórico de marcações e barras também são excluídos. Isso evita o acúmulo de dados não utilizados no disco rígido.
Terminal: Corrigida a exibição de resultados de pesquisa em telas de alto DPI.
CalendarValueHistoryByEvent — obtém a matriz de valores para o período de tempo especificado, por identificador de evento.
bool CalendarValueHistoryByEvent(
ulong event_id, // event ID
MqlCalendarValue& values[], // array of valuesdatetime datetime_from, // period beginning datedatetime datetime_to= 0 // period end date
);
CalendarValueHistory — obtém a matriz de valores para o período de tempo especificado para todos os eventos, filtrados por país e/ou moeda.
bool CalendarValueHistory(
MqlCalendarValue& values[], // array of valuesdatetime datetime_from, // beginning of perioddatetime datetime_to= 0 , // end of periodstring country_code=NULL, // country codestring currency=NULL // currency
);
CalendarValueLastByEvent — obtém uma matriz dos valores do último evento por identificador. Esta função habilita a solicitação dos valores que apareceram desde a solicitação anterior. O parâmetro de entrada/saída "change_id" é adicionalmente usado para esta operação.
Toda vez que o banco de dados do calendário é alterado, a propriedade "change_id" (o último identificador de alteração) é atualizada. Durante a solicitação de dados, você especifica "change_id" e o terminal retorna os eventos que apareceram após esse período, bem como o valor atual "change_id", que pode ser usado para a próxima solicitação. Durante a primeira chamada de função, especifique o zero "change_id": a função não retornará nenhum evento, mas retornará o "change_id" atual para solicitações adicionais.
bool CalendarValueHistory(
ulong event_id, // event IDulong & change_id, // last calendar change ID
MqlCalendarValue& values[] // array of values
);
CalendarValueLast — obtém a matriz dos últimos valores de todos os eventos, filtrados por país e/ou moeda. Esta função habilita a solicitação dos valores que apareceram desde a solicitação anterior. Da mesma forma que CalendarValueLastByEvent, a propriedade "change_id" é usada para a solicitação.
bool CalendarValueHistory(
ulong event_id, // event IDulong & change_id, // last calendar change ID
MqlCalendarValue& values[], // array of valuesstring country_code=NULL, // country codestring currency=NULL // currency
);
Novas estruturas
MqlCalendarCountry — descrição do país.
struct MqlCalendarCountry
{
ulong id; // country ID in ISO 3166-1string name; // text name of the countrystring code; // code name of the country in ISO 3166-1 alpha-2string currency; // country currency codestring currency_symbol; // country currency symbol/signstring url_name; // country name used in URL on mql5.com
};
MqlCalendarEvent — descrição do evento.
struct MqlCalendarEvent
{
ulong id; // event ID
ENUM_CALENDAR_EVENT_TYPE type; // event type
ENUM_CALENDAR_EVENT_SECTOR sector; // sector to which the event belongs
ENUM_CALENDAR_EVENT_FREQUENCY frequency; // event release frequency
ENUM_CALENDAR_EVENT_TIMEMODE time_mode; // event release time modeulong country_id; // country ID
ENUM_CALENDAR_EVENT_UNIT unit; // unit for the event values
ENUM_CALENDAR_EVENT_IMPORTANCE importance; // event importance
ENUM_CALENDAR_EVENT_MULTIPLIER multiplier; // event importance multiplieruint digits; // number of decimal places in the event valuestring source_url; // source URLstring event_code; // event codestring name; // text name of the event in the terminal language
};
MqlCalendarValue — descrição do valor do evento.
struct MqlCalendarValue
{
ulong id; // value IDulong event_id; // event IDdatetime time; // event date and timedatetime period; // period, for which the event is publishedint revision; // published indicator revision in relation to the reported periodlong actual_value; // current event valuelong prev_value; // previous event valuelong revised_prev_value; // revised previous event valuelong forecast_value; // forecast event value
ENUM_CALENDAR_EVENT_IMPACRT impact_type; // potential impact on the currency rate
};
Novas enumerações
enum ENUM_CALENDAR_EVENT_FREQUENCY
{
CALENDAR_FREQUENCY_NONE = 0 , // not used
CALENDAR_FREQUENCY_WEEK = 1 , // weekly
CALENDAR_FREQUENCY_MONTH = 2 , // monthly
CALENDAR_FREQUENCY_QUARTER = 3 , // quarterly
CALENDAR_FREQUENCY_YEAR = 4 , // yearly
CALENDAR_FREQUENCY_DAY = 5 , // daily
};
enum ENUM_CALENDAR_EVENT_TYPE
{
CALENDAR_TYPE_EVENT = 0 , // event (meeting, speech, etc.)
CALENDAR_TYPE_INDICATOR = 1 , // indicator
CALENDAR_TYPE_HOLIDAY = 2 , // holiday
};
enum ENUM_CALENDAR_EVENT_SECTOR
{
CALENDAR_SECTOR_NONE = 0 , // no
CALENDAR_SECTOR_MARKET = 1 , // market
CALENDAR_SECTOR_GDP = 2 , // GDP
CALENDAR_SECTOR_JOBS = 3 , // jobs
CALENDAR_SECTOR_PRICES = 4 , // prices
CALENDAR_SECTOR_MONEY = 5 , // money
CALENDAR_SECTOR_TRADE = 6 , // trade
CALENDAR_SECTOR_GOVERNMENT = 7 , // government
CALENDAR_SECTOR_BUSINESS = 8 , // business
CALENDAR_SECTOR_CONSUMER = 9 , // consumer
CALENDAR_SECTOR_HOUSING = 10 , // housing
CALENDAR_SECTOR_TAXES = 11 , // taxes
CALENDAR_SECTOR_HOLIDAYS = 12 , // holidays
};
enum ENUM_CALENDAR_EVENT_IMPORTANCE
{
CALENDAR_IMPORTANCE_LOW = 0 , // no
CALENDAR_IMPORTANCE_NONE = 1 , // low
CALENDAR_IMPORTANCE_MODERATE = 2 , // moderate
CALENDAR_IMPORTANCE_HIGH = 3 , // high
};
enum ENUM_CALENDAR_EVENT_UNIT
{
CALENDAR_UNIT_NONE = 0 , // no
CALENDAR_UNIT_PERCENT = 1 , // percent
CALENDAR_UNIT_CURRENCY = 2 , // national currency
CALENDAR_UNIT_HOUR = 3 , // number of hours
CALENDAR_UNIT_JOB = 4 , // number of jobs
CALENDAR_UNIT_RIG = 5 , // number of rigs
CALENDAR_UNIT_USD = 6 , // US dollar
CALENDAR_UNIT_PEOPLE = 7 , // number of people
CALENDAR_UNIT_MORTGAGE = 8 , // number of mortgages
CALENDAR_UNIT_VOTE = 9 , // number of votes
CALENDAR_UNIT_BARREL = 10 , // number of barrels
CALENDAR_UNIT_CUBICFEET = 11 , // volume in cubic feet
CALENDAR_UNIT_POSITION = 12 , // number of job positions
CALENDAR_UNIT_BUILDING = 13// number of buildings
};
enum ENUM_CALENDAR_EVENT_MULTIPLIER
{
CALENDAR_MULTIPLIER_NONE = 0 , // no
CALENDAR_MULTIPLIER_THOUSANDS = 1 , // thousands
CALENDAR_MULTIPLIER_MILLIONS = 2 , // millions
CALENDAR_MULTIPLIER_BILLIONS = 3 , // billions
CALENDAR_MULTIPLIER_TRILLIONS = 4 , // trillions
};
enum ENUM_CALENDAR_EVENT_IMPACRT
{
CALENDAR_IMPACT_NA = 0 , // not available
CALENDAR_IMPACT_POSITIVE = 1 , // positive
CALENDAR_IMPACT_NEGATIVE = 2 , // negative
};
enum ENUM_CALENDAR_EVENT_TIMEMODE
{
CALENDAR_TIMEMODE_DATETIME = 0 , // the source publishes the exact time
CALENDAR_TIMEMODE_DATE = 1 , // the event takes the whole day
CALENDAR_TIMEMODE_NOTIME = 2 , // the source does not publish the event time
CALENDAR_TIMEMODE_TENTATIVE = 3 , // the source provides only date, but does not publish the exact time in advance, exact time is added when event occurs
};
Novos códigos de erro
ERR_CALENDAR_MORE_DATA = 5400 , // the array is small for the whole result (values which fit in the array were passed)
ERR_CALENDAR_TIMEOUT = 5401 , // timed out waiting for a response to the calendar data request
ERR_CALENDAR_NO_DATA = 5402 , // data not found
MQL5: Correções e melhorias de velocidade de operação relacionadas ao histórico de ticks e barras.
MQL5: Correções e melhorias significativas na velocidade de operação relacionadas às funções de modificação do histórico de ticks e barras de símbolos de negociação personalizados, CustomTicks* e CustomRates* .
MQL5: Adicionadas funções de rede para criar conexões TCP com hosts remotos por meio de soquetes do sistema:
SocketCreate cria um soquete com sinalizadores especificados e retorna seu identificador
SocketClose fecha o soquete
SocketConnect se conecta ao servidor, com controle de tempo limite
SocketIsConnected verifica se o soquete está conectado no momento
SocketIsReadable obtém o número de bytes que podem ser lidos do soquete
SocketIsWritable verifica se a gravação de dados neste soquete é possível no momento atual
SocketTimeouts define os tempos limite de recebimento e envio de dados para o objeto de soquete do sistema
SocketRead lê dados de um soquete
SocketSend grava dados em um soquete
SocketTlsHandshake inicia uma conexão segura TLS (SSL) com o host especificado usando o protocolo TLS Handshake
SocketTlsCertificate recebe informações sobre o certificado usado para conexão de rede segura
SocketTlsRead lê dados de uma conexão TLS segura
SocketTlsReadAvailable lê todos os dados disponíveis de uma conexão TLS segura
SocketTlsSend envia dados usando uma conexão TLS segura
O endereço do host, ao qual é estabelecida a conexão usando funções de rede, deve ser explicitamente adicionado à lista de endereços permitidos nas configurações do terminal.
Novos códigos de erro foram adicionados para operações com funções de rede:
ERR_NETSOCKET_INVALIDHANDLE (5270): identificador de soquete inválido passado para a função
ERR_NETSOCKET_TOO_MANY_OPENED (5271): muitos soquetes abertos (máximo 128)
ERR_NETSOCKET_CANNOT_CONNECT (5272): erro ao conectar ao host remoto
ERR_NETSOCKET_IO_ERROR (5273): erro ao enviar/receber dados do socket
ERR_NETSOCKET_HANDSHAKE_FAILED (5274): erro de estabelecimento de conexão segura (TLS Handshake)
ERR_NETSOCKET_NO_CERTIFICATE (5275) — sem dados sobre o certificado usado para conexão segura
ArrayRemove remove de uma matriz o número especificado de elementos começando com o índice especificado.
bool ArrayRemove(
void & array[], // array of any typeuint start, // the index to start removaluint count=WHOLE_ARRAY // number of elements
);
ArrayInsert insere em uma matriz receptora o número especificado de elementos da matriz de origem, começando com o índice especificado.
bool ArrayInsert(
void & dst_array[], // receiver arrayconstvoid & src_array[], // source arrayuint dst_start, // index in the receiver array where to insertuint src_start= 0 , // index in the source array to start copyinguint count=WHOLE_ARRAY // number of inserted elements
);
ArrayReverse reverte em uma matriz o número especificado de elementos começando com o índice especificado.
bool ArrayReverse(
void & array[], // array of any typeuint start= 0 , // index to start reversinguint count=WHOLE_ARRAY // number of elements
);
MQL5: Novo parâmetro "uint count" foi adicionado nas funções CustomRatesUpdate , CustomRatesReplace , CustomTicksAdd e CustomTicksReplace . Permite especificar o número de elementos do array passado, que serão utilizados para essas funções. O valor WHOLE_ARRAY é usado para o parâmetro por padrão. Isso significa que toda a matriz será utilizada.
MQL5: Adicionada a função CustomBookAdd para passar o status do Depth of Market para um símbolo personalizado. A função permite transmitir o Depth of Market como se os preços chegassem do servidor de um corretor.
int CustomBookAdd(
conststring symbol, // symbol nameconst MqlBookInfo& books[] // an array with the DOM elements descriptionsuint count=WHOLE_ARRAY // number of elements to be used
);
MQL5: Adicionada sobrecarga de função CustomSymbolCreate . Isso permite a criação de um símbolo de negociação personalizado com base em um já existente. Após a criação, qualquer propriedade do símbolo pode ser editada usando as funções correspondentes.
boolCustomSymbolCreate (
conststring symbol_name, // custom symbol nameconststring symbol_path= "" , // name of the group in which the symbol will be createdconststring symbol_origin=NULL // name of the symbol based on which the custom symbol will be created
);
O nome do símbolo, do qual as propriedades do símbolo personalizado devem ser copiadas, é especificado no parâmetro "symbol_origin".
A função StringToTime que converte a string com data/hora em um valor de data e hora foi atualizada. Agora ele suporta os seguintes formatos de data:
aaaa.mm.dd [hh:mi]
aaaa.mm.dd [hh:mi:ss]
aaaammdd [hh:mi:ss]
aaaammdd [hhmiss]
aaaa/mm/dd [hh:mi:ss]
aaaa-mm-dd [hh:mi:ss]
MQL5: Nova propriedade TERMINAL_VPS na enumeração ENUM_TERMINAL_INFO_INTEGER ; ele mostra que o terminal está sendo executado no servidor MetaTrader Virtual Hosting (MetaTrader VPS). Se um aplicativo estiver sendo executado em um servidor de hospedagem, você poderá desabilitar todas as suas funções visuais, pois o servidor virtual não possui uma interface gráfica de usuário.
MQL5: Nova propriedade SYMBOL_EXIST na enumeração ENUM_SYMBOL_INFO_INTEGER , significa que o símbolo sob este nome existe.
MQL5: Corrigida a digitação ao usar pré-declarações de função de modelo.
MQL5: Adicionada reinicialização de indicadores ao alterar uma conta de negociação.
MQL5: Corrigidos erros na operação da biblioteca padrão.
Testador: função TesterStop adicionada — desligamento antecipado de rotina de um Expert Advisor em um agente de teste. Agora você pode parar o teste à força depois de atingir o número especificado de negociações perdidas, um nível de rebaixamento predefinido ou qualquer outro critério.
O teste concluído usando esta função é considerado bem-sucedido. Após a chamada da função, o histórico de negociação obtido durante o teste e todas as estatísticas de negociação são passadas para o terminal.
Testador: capacidade desativada para testar e otimizar Expert Advisors por meio da MQL5 Cloud Network no modo de tick real. Esse modo só pode ser usado em agentes locais e farms de rede local.
Testador: Trabalho aprimorado com indicadores durante o teste visual. Agora, o gráfico de preços e as linhas do indicador são desenhados de forma síncrona, mesmo para a velocidade máxima de visualização.
Testador: Teste e otimização otimizados e significativamente acelerados.
Testador: Corrigida a depuração de indicadores em dados históricos. Agora as funções do indicador OnInit e OnDeinit podem ser depuradas corretamente.
Testador: Implementado acesso mais rápido a dados históricos ao testar Expert Advisors de várias moedas.
Testador: Corrigido o congelamento ocasional do testador visual durante a depuração em dados históricos.
Testador: Implementado início mais rápido de passos de otimização ao processar um pacote de tarefas por um agente.
Testador: Alterada a política de distribuição de pacotes de tarefas para agentes de teste. O tamanho do pacote foi aumentado e, portanto, o consumo de recursos nas operações de rede foi reduzido significativamente.
Testador: Alterado o comportamento das opções permitindo o uso de agentes locais, de rede e de nuvem. Agora, quando você desativa as opções, os agentes concluem o processamento das tarefas recebidas, enquanto não são atribuídas mais novas tarefas a eles. Nas versões anteriores, o comportamento era semelhante ao comando "Desativar", que interrompeu imediatamente a operação do agente.
MetaEditor: Adicionado suporte para caracteres não ANSI no depurador. Agora, as expressões são exibidas corretamente, mesmo que o nome da variável seja especificado em cirílico.
MetaEditor: Corrigida a exibição de resultados de pesquisa em telas de alto DPI.
Adicionada a tradução da interface do usuário para o croata.
A documentação foi atualizada.
A atualização estará disponível através do sistema LiveUpdate.
A primeira versão da integração - leia este post#1.
Como obter acesso direto aos dados no MetaTrader 5 de R - leia o primeiro post deste tópico (este é o tópico chave iniciado por MQ), ou esta tradução -#2.
Consultores Especialistas Multimoedas em MT5 - retro-testes e otimização
Os fios/postos
Compra ou Venda dos 7 pares -a linha com a explicação.
Consultores Especialistas Multimoedaso posto com os exemplos de backtesting/optimização
Os artigos
LifeHack para comerciantes: Otimização "quieta" ou distribuição comercial de plotagem Resultados interessantes também podem ser obtidos com a execução de um EA multi-divisas no testador de estratégia. Como exemplo, foi utilizado oExpert Multimoedas gratuito do CodeBase. Além disso, o arquivo "#include <DistributionOfProfProfits.mqh>" foi especificado e a variável "CDistributionOfProfProfits ExtDistribution" foi declarada no cabeçalho da EA, e a função "OnTester()" foi adicionada no final do código. Após uma única execução, as seguintes estatísticas tinham sido recebidas: "TestAnalysis.htm".
The multi-symbol adviser uses the MA Trend 2 adviser as the base advisor, while the advisor itself is rewritten as a class.
Este conselheiro está na forma de uma classe a primeira versão, portanto, por enquanto, os símbolos ("EURUSD", "USDCAD", "USDJPY") estão especificados no código em força. Além disso, todos os parâmetros de entrada são os mesmos para cada um dos três símbolos (Stop Loss, Take Profit, e assim por diante...).
A correlação é uma relação estatística entre duas ou mais variáveis aleatórias (ou quantidades que podem ser consideradas aleatórias com algum grau de precisão aceitável). Mudanças em uma ou mais variáveis levam a mudanças sistemáticas de outras variáveis relacionadas. A medida matemática da correlação de duas variáveis aleatórias é o coeficiente de correlação. Se uma mudança em uma variável aleatória não leva a uma mudança regular na outra variável aleatória, mas leva a uma mudança em outra característica estatística desta variável aleatória, tal relação não é considerada correlação, embora seja estatística.
Há um tópico no fórum - Possibilidades da Tela. É um fio muito útil. E esta é uma ferramenta muito interessante que está totalmente relacionada a esta rosca -
Demonstrar o funcionamento do indicador em duas janelas ao mesmo tempo: na janela principal e na subjanela. Isto é conseguido através da utilização da classeiCanvas.
Solução compacta de um sistema de equações algébricas lineares utilizando a recursividade.
Demonstrar e provar a alguns pesquisadores o fato de que o uso do SLAE no comércio algorítmico contém o potencial de predição de preços.
Hi
Sou um principiante que quer seguir a estratégia de cortar e colar. Como eu começo . Eu preciso de uma abordagem passo a passo
por favor
Hi
Sou um principiante que quer seguir a estratégia de cortar e colar. Como eu começo . Eu preciso de uma abordagem passo a passo
por favor
De onde eu começo?
https://www.mql5.com/en/forum/212020
----------------
Fórum sobre comércio, sistemas comerciais automatizados e estratégias comerciais de teste
Como começar com o Metatrader 5
Sergey Golubev, 2013.09.20 08:21
Resumos :
====
Fórum sobre comércio, sistemas comerciais automatizados e estratégias comerciais de teste
Algumas perguntas sobre Sinais
Sergey Golubev, 2016.12.30 20:14
Apenas algumas informações sobre o Serviço de Sinalização:
Esta é a informação sobre por onde começar.
------------
Dasregras-
O assunto das redes neurais Kohonen foi abordado em alguns artigos no site mql5.com, como oUso de Mapas de Recursos de Auto-Organização (Kohonen Maps) no MetaTrader 5 eMapas de Recursos de Auto-Organização (Kohonen Maps) - Revisitando o Assunto. Eles introduziram os leitores aos princípios gerais de construção de redes neurais deste tipo e analisaram visualmente os números econômicos dos mercados utilizando tais mapas.
Entretanto, em termos práticos, o uso de redes Kohonen apenas para comércio algorítmico foi confinado a uma única abordagem, ou seja, a mesma análise visual dos mapas de topologia construídos para os resultados da otimização da EA. Neste caso, o julgamento de valor, ou melhor, a visão e a capacidade de tirar conclusões razoáveis a partir de uma imagem acaba sendo, talvez, o fator crucial, deixando de lado as propriedades da rede no que diz respeito à representação de dados em termos de questões de porcas e parafusos.
Em outras palavras, as características dos algoritmos de redes neurais não foram utilizadas ao máximo, ou seja, foram utilizadas sem extrair automaticamente o conhecimento ou apoiar a tomada de decisões com recomendações específicas. Neste artigo, consideramos o problema de definir os conjuntos ótimos de parâmetros dos robôs de uma maneira mais formalizada. Além disso, vamos aplicar a rede Kohonen à previsão das faixas econômicas. Entretanto, antes de prosseguirmos com estes problemas aplicados, devemos rever os códigos-fonte existentes, obter algo fixo e fazer algumas melhorias.
É altamente recomendável ler primeiro os artigos acima, se você não estiver familiarizado com os termos como "rede", "camada", "neurônio" ("nó"), "link", "peso", "taxa de aprendizagem", "faixa de aprendizagem" e outras noções relacionadas às redes de Kohonen. Então, teremos que nos saturar neste assunto, de modo que o re-ensino das noções básicas alongaria significativamente esta publicação.
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação
Nova plataforma MetaTrader 5 build 2005: Calendário Econômico, aplicativos MQL5 como serviços e API de linguagem R
MetaQuotes Software Corp. , 20.02.2019 17:20
A atualização da plataforma MetaTrader 5 será lançada em 21 de fevereiro de 2019. A nova versão apresenta as seguintes alterações:
- Terminal: Calendário Econômico integrado completamente revisado.

- Terminal: Adicionado novo tipo de aplicativos MQL5 — Serviços. Este novo tipo permite a criação de feeds de preços personalizados para o terminal, ou seja, implementar a entrega de preços a partir de sistemas externos em tempo real, tal como é implementado nos servidores de negociação das corretoras.

- Terminal: Um programa de aprendizagem foi adicionado.

- Terminal: O histórico da conta de negociação pode ser apresentado como posições. A plataforma coleta dados sobre negócios relacionados à posição (abertura, aumento de volume, fechamento parcial ou total) e agrupa as informações em um único registro. Assim, você pode acessar os detalhes da posição: horário de abertura e fechamento, volume, preço e resultado. Este formulário de apresentação eficiente está agora disponível em relatórios de histórico exportados para arquivos.

- Terminal: Adicionada nova API permitindo a solicitação de dados do terminal MetaTrader 5 por meio de aplicativos usando a linguagem R.

R CMD INSTALL --build MetaTrader
- MT5Initialize inicializa e estabelece conexão com o terminal MetaTrader 5. Se necessário, o terminal é iniciado durante a execução do comando.
- O MT5Shutdown é desinicializado e desconectado do MetaTrader 5.
- O MT5Version obtém a versão do terminal MetaTrader 5.
- O MT5TerminalInfo obtém o estado e os parâmetros da conexão do terminal ao servidor de um corretor (número da conta e endereço do servidor).
- O MT5WaitTerminal espera que o terminal MetaTrader 5 se conecte ao servidor de um corretor.
- MT5CopyTicksFrom(symbol, from, count, flags) copia o número especificado de ticks a partir da data especificada. A data é especificada em milissegundos desde 01.01.1970.
- MT5CopyTicksRange(symbol, from, to, flags) copia os ticks dentro do período especificado. As datas são especificadas em milissegundos desde 01.01.1970.
- MT5CopyRatesFrom(symbol, timeframe, from, count) copia o número especificado de barras de um minuto a partir da data especificada. A data é especificada em segundos desde 01.01.1970.
- MT5CopyRatesFromPos(symbol, timeframe, start_pos, count) copia barras de um minuto da posição especificada em relação à última barra.
- MT5CopyRatesFromRange(symbol, timeframe, date_from, date_to) copia as barras de dentro do período especificado. As datas são especificadas em segundos desde 01.01.1970.
- Terminal: Caixa de diálogo Fechar por otimizado usada para fechar uma posição por uma oposta. Agora, o diálogo não fica mais lento, mesmo se você tiver um grande número de posições abertas.
- Terminal: Corrigidos erros de cálculo de símbolos sintéticos , devido aos quais os dados podiam ser ignorados ocasionalmente.
- Terminal: Quando um símbolo personalizado é excluído, os arquivos que armazenam seu histórico de marcações e barras também são excluídos. Isso evita o acúmulo de dados não utilizados no disco rígido.
- Terminal: Corrigida a exibição de resultados de pesquisa em telas de alto DPI.
- MQL5: Acesso implementado a dados de calendário econômico de programas MQL5.
- MQL5: Correções e melhorias de velocidade de operação relacionadas ao histórico de ticks e barras.
- MQL5: Correções e melhorias significativas na velocidade de operação relacionadas às funções de modificação do histórico de ticks e barras de símbolos de negociação personalizados, CustomTicks* e CustomRates* .
- MQL5: Novas funções de conversão de dados.
- Adicionada função MathSwap para alterar a ordem dos bytes nos valores ushort, uint e ulong.
- MQL5: Adicionadas funções de rede para criar conexões TCP com hosts remotos por meio de soquetes do sistema:
- SocketCreate cria um soquete com sinalizadores especificados e retorna seu identificador
- SocketClose fecha o soquete
- SocketConnect se conecta ao servidor, com controle de tempo limite
- SocketIsConnected verifica se o soquete está conectado no momento
- SocketIsReadable obtém o número de bytes que podem ser lidos do soquete
- SocketIsWritable verifica se a gravação de dados neste soquete é possível no momento atual
- SocketTimeouts define os tempos limite de recebimento e envio de dados para o objeto de soquete do sistema
- SocketRead lê dados de um soquete
- SocketSend grava dados em um soquete
- SocketTlsHandshake inicia uma conexão segura TLS (SSL) com o host especificado usando o protocolo TLS Handshake
- SocketTlsCertificate recebe informações sobre o certificado usado para conexão de rede segura
- SocketTlsRead lê dados de uma conexão TLS segura
- SocketTlsReadAvailable lê todos os dados disponíveis de uma conexão TLS segura
- SocketTlsSend envia dados usando uma conexão TLS segura
O endereço do host, ao qual é estabelecida a conexão usando funções de rede, deve ser explicitamente adicionado à lista de endereços permitidos nas configurações do terminal.
- ERR_NETSOCKET_INVALIDHANDLE (5270): identificador de soquete inválido passado para a função
- ERR_NETSOCKET_TOO_MANY_OPENED (5271): muitos soquetes abertos (máximo 128)
- ERR_NETSOCKET_CANNOT_CONNECT (5272): erro ao conectar ao host remoto
- ERR_NETSOCKET_IO_ERROR (5273): erro ao enviar/receber dados do socket
- ERR_NETSOCKET_HANDSHAKE_FAILED (5274): erro de estabelecimento de conexão segura (TLS Handshake)
- ERR_NETSOCKET_NO_CERTIFICATE (5275) — sem dados sobre o certificado usado para conexão segura
- MQL5: Adicionadas novas funções para operações de string :
- MQL5: Adicionada nova função para operações de array :
- MQL5: Novo parâmetro "uint count" foi adicionado nas funções CustomRatesUpdate , CustomRatesReplace , CustomTicksAdd e CustomTicksReplace . Permite especificar o número de elementos do array passado, que serão utilizados para essas funções. O valor WHOLE_ARRAY é usado para o parâmetro por padrão. Isso significa que toda a matriz será utilizada.
- MQL5: Adicionada a função CustomBookAdd para passar o status do Depth of Market para um símbolo personalizado. A função permite transmitir o Depth of Market como se os preços chegassem do servidor de um corretor.
- MQL5: Adicionada sobrecarga de função CustomSymbolCreate . Isso permite a criação de um símbolo de negociação personalizado com base em um já existente. Após a criação, qualquer propriedade do símbolo pode ser editada usando as funções correspondentes.
- A função StringToTime que converte a string com data/hora em um valor de data e hora foi atualizada. Agora ele suporta os seguintes formatos de data:
- aaaa.mm.dd [hh:mi]
- aaaa.mm.dd [hh:mi:ss]
- aaaammdd [hh:mi:ss]
- aaaammdd [hhmiss]
- aaaa/mm/dd [hh:mi:ss]
- aaaa-mm-dd [hh:mi:ss]
- MQL5: Nova propriedade TERMINAL_VPS na enumeração ENUM_TERMINAL_INFO_INTEGER ; ele mostra que o terminal está sendo executado no servidor MetaTrader Virtual Hosting (MetaTrader VPS). Se um aplicativo estiver sendo executado em um servidor de hospedagem, você poderá desabilitar todas as suas funções visuais, pois o servidor virtual não possui uma interface gráfica de usuário.
- MQL5: Nova propriedade SYMBOL_EXIST na enumeração ENUM_SYMBOL_INFO_INTEGER , significa que o símbolo sob este nome existe.
- MQL5: Corrigida a digitação ao usar pré-declarações de função de modelo.
- MQL5: Adicionada reinicialização de indicadores ao alterar uma conta de negociação.
- MQL5: Função StringSplit otimizada.
- MQL5: Corrigidos erros na operação da biblioteca padrão.
- Testador: função TesterStop adicionada — desligamento antecipado de rotina de um Expert Advisor em um agente de teste. Agora você pode parar o teste à força depois de atingir o número especificado de negociações perdidas, um nível de rebaixamento predefinido ou qualquer outro critério.
- Testador: capacidade desativada para testar e otimizar Expert Advisors por meio da MQL5 Cloud Network no modo de tick real. Esse modo só pode ser usado em agentes locais e farms de rede local.
- Testador: Trabalho aprimorado com indicadores durante o teste visual. Agora, o gráfico de preços e as linhas do indicador são desenhados de forma síncrona, mesmo para a velocidade máxima de visualização.
- Testador: Teste e otimização otimizados e significativamente acelerados.
- Testador: Corrigida a depuração de indicadores em dados históricos. Agora as funções do indicador OnInit e OnDeinit podem ser depuradas corretamente.
- Testador: Implementado acesso mais rápido a dados históricos ao testar Expert Advisors de várias moedas.
- Testador: Corrigido o congelamento ocasional do testador visual durante a depuração em dados históricos.
- Testador: Implementado início mais rápido de passos de otimização ao processar um pacote de tarefas por um agente.
- Testador: Alterada a política de distribuição de pacotes de tarefas para agentes de teste. O tamanho do pacote foi aumentado e, portanto, o consumo de recursos nas operações de rede foi reduzido significativamente.
- Testador: Alterado o comportamento das opções permitindo o uso de agentes locais, de rede e de nuvem. Agora, quando você desativa as opções, os agentes concluem o processamento das tarefas recebidas, enquanto não são atribuídas mais novas tarefas a eles. Nas versões anteriores, o comportamento era semelhante ao comando "Desativar", que interrompeu imediatamente a operação do agente.

- MetaEditor: Adicionado suporte para caracteres não ANSI no depurador. Agora, as expressões são exibidas corretamente, mesmo que o nome da variável seja especificado em cirílico.
- MetaEditor: Corrigida a exibição de resultados de pesquisa em telas de alto DPI.
- Adicionada a tradução da interface do usuário para o croata.
- A documentação foi atualizada.
A atualização estará disponível através do sistema LiveUpdate.O Calendário Econômico é nossa solução proprietária. Nele você encontrará mais de 600 notícias e indicadores financeiros relacionados às 13 maiores economias globais: EUA, União Européia, Japão, Reino Unido, Canadá, Austrália, China entre outros. Dados relevantes são coletados de fontes abertas em tempo real.
A nova versão apresenta conteúdos atualizados e filtros avançados de eventos: por horário, prioridade, moedas e países.
Os dados do calendário agora podem ser acessados a partir de programas MQL5. Por favor, veja abaixo para detalhes.
Ao contrário dos Expert Advisors, indicadores e scripts, os serviços não estão vinculados a um gráfico específico. Esses aplicativos são executados em segundo plano e são iniciados automaticamente quando o terminal é iniciado (a menos que esse aplicativo tenha sido interrompido à força).
Os serviços podem ser gerenciados a partir de uma nova seção na janela do Navegador:
Como criar serviços
Para criar um modelo de serviço, use a opção correspondente do Assistente MQL5 . Os serviços têm um ponto de entrada OnStart , semelhante aos scripts. Neste ponto, você pode implementar um ciclo infinito de recebimento e manipulação de dados usando funções de rede .
Como lançar serviços
Para executar vários Expert Advisors ou cópias de indicadores com parâmetros diferentes, você deve iniciá-los em gráficos diferentes. Neste caso, diferentes instâncias de programa são criadas, que então operam independentemente. Os serviços não estão vinculados a gráficos, portanto, foi implementado um mecanismo especial para a criação de instâncias de serviço.
Selecione um serviço no Navegador e clique em "Adicionar serviço" em seu menu de contexto. Isso abrirá uma caixa de diálogo padrão do programa MQL5, na qual você pode ativar/desativar negociação e acesso às configurações de sinal, bem como definir vários parâmetros.

Uma instância de serviço pode ser iniciada e interrompida usando o menu de instância apropriado. Para gerenciar todas as instâncias, use o menu de serviço.O novo recurso ajudará os iniciantes a aprender a interagir com a plataforma. Adicionamos mais de 100 dicas interativas sobre os principais recursos da plataforma.
- As dicas são exibidas perfeitamente como uma barra de progresso na barra de ferramentas e, portanto, não distraem o usuário.
- As dicas aparecem apenas para as ações que você nunca realizou na plataforma.
- Todas as dicas incluem links interativos, pelos quais você pode navegar para os elementos de interface relevantes. Por exemplo, uma caixa de diálogo de negociação ou um menu com o programa desejado pode ser lançado diretamente da ponta.
A área preenchida da barra de progresso aumentará sempre que você realizar as ações apropriadas e continuar o treinamento.Preparamos um pacote especial do MetaTrader. Ele contém DLL para interações entre R e o terminal MetaTrader 5, documentação e arquivos r auxiliares. Estamos concluindo o cadastro do pacote no repositório CRAN , após o qual ele estará disponível para download e instalação.
O pacote pode ser instalado usando um comando especial:
Os seguintes comandos relacionados à solicitação de dados estão disponíveis:
A lista de comandos suportados será expandida ainda mais.
Novas funções
CalendarCountryById — obtém a descrição do país por identificador.
CalendarEventById — obtém a descrição do evento por identificador.
CalendarValueById — obtém a descrição do valor do evento por identificador.
CalendarEventByCountry — obtém a matriz de eventos disponíveis para o país.
CalendarEventByCurrency — obtém a matriz de eventos disponíveis para a moeda afetada.
CalendarValueHistoryByEvent — obtém a matriz de valores para o período de tempo especificado, por identificador de evento.
CalendarValueHistory — obtém a matriz de valores para o período de tempo especificado para todos os eventos, filtrados por país e/ou moeda.
CalendarValueLastByEvent — obtém uma matriz dos valores do último evento por identificador. Esta função habilita a solicitação dos valores que apareceram desde a solicitação anterior. O parâmetro de entrada/saída "change_id" é adicionalmente usado para esta operação.
Toda vez que o banco de dados do calendário é alterado, a propriedade "change_id" (o último identificador de alteração) é atualizada. Durante a solicitação de dados, você especifica "change_id" e o terminal retorna os eventos que apareceram após esse período, bem como o valor atual "change_id", que pode ser usado para a próxima solicitação. Durante a primeira chamada de função, especifique o zero "change_id": a função não retornará nenhum evento, mas retornará o "change_id" atual para solicitações adicionais.
CalendarValueLast — obtém a matriz dos últimos valores de todos os eventos, filtrados por país e/ou moeda. Esta função habilita a solicitação dos valores que apareceram desde a solicitação anterior. Da mesma forma que CalendarValueLastByEvent, a propriedade "change_id" é usada para a solicitação.
Novas estruturas
MqlCalendarCountry — descrição do país.
MqlCalendarEvent — descrição do evento.
MqlCalendarValue — descrição do valor do evento.
Novas enumerações
Novos códigos de erro
CharArrayToStruct copia uma matriz uchar para uma estrutura POD.
StructToCharArray copia uma estrutura POD para uma matriz uchar.
Novos códigos de erro foram adicionados para operações com funções de rede:
StringReserve reserva para uma string o buffer de memória do tamanho especificado.
StringSetLength define o comprimento da string especificada em caracteres.
ArrayRemove remove de uma matriz o número especificado de elementos começando com o índice especificado.
ArrayInsert insere em uma matriz receptora o número especificado de elementos da matriz de origem, começando com o índice especificado.
ArrayReverse reverte em uma matriz o número especificado de elementos começando com o índice especificado.
O nome do símbolo, do qual as propriedades do símbolo personalizado devem ser copiadas, é especificado no parâmetro "symbol_origin".
O teste concluído usando esta função é considerado bem-sucedido. Após a chamada da função, o histórico de negociação obtido durante o teste e todas as estatísticas de negociação são passadas para o terminal.
Fórum sobre comércio, sistemas comerciais automatizados e estratégias comerciais de teste
Pacote MetaTrader R - o resumo
Sergey Golubev, 2019.02.22 06:47
O Estudo Principal
Os artigos
O Fórum
----------------
mais a seguir ...
Fórum sobre comércio, sistemas comerciais automatizados e estratégias comerciais de teste
Links úteis/linhas/ferramentas
Sergey Golubev, 2017.10.05 12:33
Consultores Especialistas Multimoedas em MT5 - retro-testes e otimização
Os fios/postos
Os artigos
Resultados interessantes também podem ser obtidos com a execução de um EA multi-divisas no testador de estratégia. Como exemplo, foi utilizado oExpert Multimoedas gratuito do CodeBase. Além disso, o arquivo "#include <DistributionOfProfProfits.mqh>" foi especificado e a variável "CDistributionOfProfProfits ExtDistribution" foi declarada no cabeçalho da EA, e a função "OnTester()" foi adicionada no final do código. Após uma única execução, as seguintes estatísticas tinham sido recebidas: "TestAnalysis.htm".
otimização sobretodos os símbolos selecionados em Market Watch
Documentação
...e este é o exemplo do código da CodeBase -
----------------
Multimoedas iMA Trend- especialista para MetaTrader 5
The multi-symbol adviser uses the MA Trend 2 adviser as the base advisor, while the advisor itself is rewritten as a class.
Este conselheiro está na forma de uma classe a primeira versão, portanto, por enquanto, os símbolos ("EURUSD", "USDCAD", "USDJPY") estão especificados no código em força. Além disso, todos os parâmetros de entrada são os mesmos para cada um dos três símbolos (Stop Loss, Take Profit, e assim por diante...).
Foi publicado um bom artigo -
----------------
Aplicação prática das correlações no comércio
A correlação é uma relação estatística entre duas ou mais variáveis aleatórias (ou quantidades que podem ser consideradas aleatórias com algum grau de precisão aceitável). Mudanças em uma ou mais variáveis levam a mudanças sistemáticas de outras variáveis relacionadas. A medida matemática da correlação de duas variáveis aleatórias é o coeficiente de correlação. Se uma mudança em uma variável aleatória não leva a uma mudança regular na outra variável aleatória, mas leva a uma mudança em outra característica estatística desta variável aleatória, tal relação não é considerada correlação, embora seja estatística.
Índice
Fórum sobre comércio, sistemas comerciais automatizados e estratégias comerciais de teste
De onde eu começo?
Sergey Golubev, 2018.09.20 15:43
Dicas de uso - as instruções sobre HowTo
=========
----------------
----------------
----------------
Há um tópico no fórum -
Possibilidades da Tela.
É um fio muito útil.
E esta é uma ferramenta muito interessante que está totalmente relacionada a esta rosca -
----------------
Sistema de equações algébricas lineares em cada barra- indicador para MetaTrader 5
This work has 3 goals: