Tuesday 6 June 2017

Mt5 Trading Strategies


Destaques do MT5 em 4xp MT5 amp 4XP Vantagens Aproveite o MT5 - você agora tem a capacidade de realizar transações em Forex, opções de ações, futuros e ações, tudo em sua plataforma de negociação única. Análise detalhada do mercado Capacidades avançadas de gráficos 4 Tipos de Execução ndash Instantâneo, Mercado, Pedido, Troca Opção de Negociação Automática Vários Tipos de Pedidos Pendentes Muitos Indicadores Técnicos e Personalizados Flexibilidade de Placa de Tempo Crie sua Própria Estratégia de Negociação O MT5 novo e melhorado estreou primeiro em 4XP. Com seus inúmeros benefícios, como o acesso a diferentes mercados financeiros, acessibilidade mais fácil, estruturas adicionais e aumento da velocidade de execução Prêmio de plataforma de negociação ganhadora - Vantagens para MT5 em 4xp As respostas são simples: no 4XP nos esforçamos para tornar o processo comercial tão fácil e acessível Possível - 4XP39s trading on-the-go mobile applications Agora os comerciantes com qualquer dispositivo móvel podem trocar onde quer que estejam. As respostas são simples: no 4XP estamos confiantes de que a negociação efetiva não depende apenas do trader e do processo de negociação, mas também do software para oferecer todas as ferramentas que irão aumentar a lucratividade e o sucesso. As respostas são simples: no 4XP, trabalhamos extremamente duro para atender a todas e cada uma necessidade de nossos comerciantes. Acreditamos na longevidade, relacionamentos duradouros, atendimento ao cliente principal, que cumpremos estritamente aos nossos clientes. Quem somos MT5.net amp 4XP fornecem os canais para os negociadores internacionais MT5 negociados avançados de todos os backgrounds que são os melhores. Contate-nos Nossa equipe irá guiá-lo através do processo de se tornar um rótulo branco. Ligue para 1-888-520-1890 Iniciar Hoje Inscreva-se e em segundos você estará no seu caminho para criar sua conta MT5. Comece a comercializar hoje mt5.net Copyright copy 2013 Todos os direitos reservados Aviso: A negociação de produtos ForexCFD não é adequada para todos os investidores. O mercado cambial traz riscos para seu investimento, incluindo a possível perda de parte ou de todo o investimento. Antes de investir, recomenda-se que os comerciantes considerem se o mercado forex é uma avenida de investimento apropriada em relação a riscos, experiência pessoal e condição financeira. Fórmula: Estratégias de negociação Fórum Forex mt5 ndash Introdução. O mercado Forex é de alto rendimento e risco significa de tirar proveito pelas operações com as taxas de câmbio. Os instrumentos de trabalho no mercado de Forex de muitas maneiras determinam o resultado da negociação de moeda feita pelos participantes do mercado Forex ndash corretores clientes. Todo corretor Forex oferece seu próprio terminal, no entanto, a maioria dos corretores e comerciantes concordam em escolher os terminais MetaTrader 4 e MetaTrader 5. Este fórum é criado para aqueles que preferem o terminal da série MetaTrader na negociação em Forex. Fórum Forex mt5 ndash discussão comercial. As previsões do mercado Forex, as opiniões independentes de comerciantes novatos e especialistas do mercado de divisas revelam tudo isso que você encontrará no debate Forex-forum of trade. A experiência sólida de trabalho no Forex é preferível, mas todos os curiosos, incluindo os novatos Forex, podem vir e compartilhar sua opinião também. Apoio mútuo e diálogo ndash o principal objetivo da comunicação no Forex-forum, dedicado à negociação. Diálogo de diálogo Forex Forum mt5 com corretores e comerciantes (sobre corretores). Se você tiver uma experiência negativa ou positiva de trabalho com o Forex Broker ndash compartilhe no Forex Forum, relacionado às questões de qualidade do serviço Forex. Você pode deixar um comentário sobre seu corretor contando sobre vantagens ou desvantagens do trabalho no Forex com ele. As avaliações agregadas dos comerciantes dos corretores constituem uma classificação. Nesta classificação, você pode ver os líderes e estrangeiros do mercado de serviços Forex. Discussões gratuitas no Forex Forum mt5 Você é comerciante e quer relaxar Então o Fórum Forex para discussões gratuitas é para você. Não há dúvidas de que a conversa em assuntos próximos do mercado Forex é preferencial. Aqui você encontrará piadas sobre comerciantes, caricatura de corretores de Forex e Forex de taxa total fora do topo. Bônus de comunicação no Forex Forum mt5 Este fórum é criado por comerciantes para comerciantes e é destinado a obter lucro. No entanto, cada publicação no fórum Forex dá ao seu autor um bônus forex. Que pode ser usado na negociação Forex na conta aberta com um dos patrocinadores dos fóruns. Este pequeno presente é apresentado com o objetivo de recompensar comerciantes profissionais pelo tempo gasto em nosso fórum. Agradecemos a escolha do Forex forum mt5 como plataforma de comunicação. Todos os horários são GMT -2. Agora são 22:33. Powered by vBulletinreg Versão 4.1.2 Copyright copy2000 - 2017, Jelsoft Enterprises Ltd. Projetado pelo Insta Media GroupTesting Trading Strategies A idéia de negociação automatizada é atraente pelo fato de que o robô comercial pode funcionar sem parar durante 24 horas por dia, sete dias uma semana. O robô não fica cansado, duvidoso ou assustado, é totalmente livre de quaisquer problemas psicológicos. É suficiente o suficiente para formalizar claramente as regras de negociação e implementá-las nos algoritmos, e o robô está pronto para trabalhar incansavelmente. Mas primeiro, você deve certificar-se de que as seguintes duas condições importantes sejam atendidas: O Consultor Especial realiza operações de negociação de acordo com as regras do sistema comercial. A estratégia de negociação, implementada na EA, demonstra um lucro no histórico. Para obter respostas para essas questões, passamos para o Strategy Tester. Incluído no terminal do cliente MetaTrader 5. Esta seção aborda os recursos do teste do programa e otimização no testador de estratégia: Limitações de funções no testador de estratégia Existem limitações de operação para algumas funções no testador de estratégia do terminal do cliente. As funções Print () e PrintFormat () Para aumentar as funções de desempenho, Print () e PrintFormat () não são executadas ao otimizar os parâmetros do trading robots39s. A exceção é o uso dessas funções dentro do manipulador OnInit (). Isso permite que você encontre facilmente a causa dos erros quando eles ocorrem. As funções Alert (), MessageBox (), PlaySound (), SendFTP, SendMail (), SendNotification (), WebRequest () Tick Modos de geração Um Expert Advisor é um programa, escrito em MQL5, que é executado cada vez em resposta a alguns Evento externo. A EA possui uma função correspondente (manipulador de eventos) para cada evento pré-definido. O evento NewTick (mudança de preço) é o evento principal para a EA e, portanto, precisamos gerar uma seqüência de tiques para testar a EA. Existem 3 modos de geração de tiques implementados no terminal do cliente Strategy Tester of MetaTrader 5: Cada marca 1 Minute OHLC (preços de OHLC com barras de minutos) Apenas preços abertos O básico e o mais detalhado é o modo tickotto QuotEvery, os outros dois modos são As simplificações do básico, e serão descritas em comparação com o modo tickotto quotEvery. Considere todos os três modos para entender as diferenças entre eles. QuotEvery Tickquot Os dados de cotações históricas para instrumentos financeiros são transferidos do servidor de negociação para o terminal do cliente MetaTrader 5 na forma de barras de minutos compactadas. Informações detalhadas sobre a ocorrência de solicitações e a construção dos cronogramas necessários podem ser obtidas no capítulo de Organização de Acesso a Dados da Referência MQL5. O elemento mínimo do histórico de preços é a barra de minutos, a partir da qual você pode obter informações sobre os quatro valores do preço: Abrir - o preço no qual a barra de minutos foi aberta Alta - o máximo que foi alcançado durante esta barra de minutos Baixa - O mínimo que foi alcançado durante este minuto do bar Fechar - o preço de fechamento do bar. A nova barra de minutos não está aberta no momento em que o novo minuto começa (o número de segundos torna-se igual a 0), mas quando ocorre um tiquetaque - uma mudança de preço em pelo menos um ponto. A figura mostra a barra do primeiro minuto da nova semana de negociação, que tem o horário de abertura de 2011.01.10 00:00. A diferença de preços entre sexta-feira e segunda-feira, que vemos no gráfico, é comum, uma vez que as taxas de câmbio flutuam mesmo nos fins de semana em resposta a notícias recebidas. Para este bar, só sabemos que o bar dos minutos foi aberto em 10 de janeiro de 2011 às 00 horas 00 minutos, mas não sabemos nada sobre os segundos. Poderia ter sido aberto às 00:00:12 ou 00:00:36 (12 ou 36 segundos após o início de um novo dia) ou qualquer outro momento dentro desse minuto. Mas sabemos que o preço aberto do EURUSD foi de 1.28940 no horário de abertura do novo bar dos minutos. Nós também não sabemos (precisamos dentro de um segundo) quando recebemos o tiquetaque correspondente ao preço de fechamento da barra de minutos considerada. Sabemos apenas uma coisa - o último preço Fechar da barra de minutos. Por este minuto, o preço foi de 1.28958. A época da aparência de preços altos e baixos também é desconhecida, mas sabemos que os preços máximo e mínimo foram nos níveis de 1.28958 e 1.28940, respectivamente. Para testar a estratégia de negociação, precisamos de uma seqüência de carrapatos, no qual o trabalho do consultor especialista será simulado. Assim, para cada barra de minutos, conhecemos os 4 pontos de controle. Onde o preço definitivamente foi. Se uma barra tiver apenas 4 tiques, então esta é uma informação suficiente para realizar um teste, mas geralmente o volume do tic é maior do que 4. Portanto, há necessidade de gerar pontos de controle adicionais para carrapatos, que ocorreram entre o Open, High, Preços baixos e fechados. O princípio do modo de geração de tiques de quotTodos os ticks está descrito na Geração de Algoritmos de Carrapatos no Testador de Estratégia do Terminal do MetaTrader 5, uma figura a partir da qual é apresentada abaixo. Ao testar o modo quotTodos os ticks, a função OnTick () da EA será chamada em todos os pontos de controle. Cada ponto de controle é um tico de uma seqüência gerada. A EA receberá o tempo eo preço do tiquei simulado, tal como funcionaria em linha. Importante: o modo de teste quotEvery tickquot é o mais preciso, mas, ao mesmo tempo, o mais demorado. Para um teste inicial da maioria das estratégias de negociação, geralmente é suficiente usar um dos outros dois modos de teste. Quot1 Minuto OHLCquot O quotEvery tickquot mode é o mais preciso dos três modos, mas, ao mesmo tempo, é o mais lento. A execução do manipulador OnTick () ocorre em todos os tiques, enquanto o volume do tick pode ser bastante grande. Para uma estratégia, em que a seqüência de tick do movimento de preços em toda a barra, não importa, há um modo de simulação mais rápido e mais áspero - quinhão de OHLC quot. No modo OHLCquot de apenas 1 minuto, a seqüência de tiques é construída apenas pelos preços de OHLC das barras de minutos. O número de pontos de controle gerados é significativamente reduzido - daí, assim como o tempo de teste. O lançamento da função OnTick () é executado em todos os pontos de controle, que são construídos pelos preços das barras minuto OHLC. A recusa de gerar carrapatos intermediários adicionais entre os preços aberto, alto, baixo e fechado, leva a uma aparência de determinismo rígido no desenvolvimento de preços, a partir do momento em que o preço aberto é determinado. Isso torna possível criar um quotTesting Grailquot, que mostra um bom gráfico ascendente do balanço de teste. Um exemplo desse Grail é apresentado na Base de Código - Grr-al. A figura mostra um gráfico muito atraente deste teste de EA. Como foi obtido, conhecemos 4 preços por um bar de minutos, e também sabemos que o primeiro é o preço aberto e o último é o preço Fechar. Temos os preços altos e baixos entre eles e a seqüência de sua ocorrência é desconhecida, mas é sabido que o preço alto é maior ou igual ao preço aberto (e o preço baixo é menor ou igual ao aberto preço). É suficiente o suficiente para determinar o momento de receber o preço aberto, e depois analise o próximo tique para determinar o preço que temos no momento - tanto o Alto quanto o Baixo. Se o preço estiver abaixo do preço aberto, então temos um preço baixo e compra neste tick, o próximo tick corresponderá ao preço alto, no qual fecharemos a compra e a compra para venda. O próximo tick é o último, este é o preço Close, e fechamos a venda. Se, após o preço, recebemos uma marca com um preço maior do que o preço de abertura, então a sequência de negócios é revertida. Processe uma barra de minutos neste modo quotcheatquot, e aguarde o próximo. Ao testar tal EA na história, tudo corre bem, mas uma vez que a lançamos on-line, a verdade começa a revelar-se - a linha do saldo permanece estável, mas as cabeças para baixo. Para expor este truque, nós simplesmente precisamos executar o EA no modo tickotto quotEvery. Nota: Se os resultados do teste da EA nos modos de teste ásperos (quot1 minute OHLCquot e quotOpen Prices onlyquot) parecem muito bons, certifique-se de testá-lo no modo quotTodo tickquot. QuotOpen Prices Onlyquot Neste modo, os tiques são gerados com base nos preços de OHLC do cronograma selecionado para testes. A função OnTick () do Expert Advisor é executada apenas no início da barra no preço Open. Devido a esse recurso, os níveis de parada e os pendentes podem disparar a um preço que difere da especificada (especialmente quando o teste em prazos maiores). Em vez disso, temos a oportunidade de executar rapidamente um teste de avaliação do Expert Advisor. Os períodos W1 e MN1 são as exceções no modo de geração de ticks quotOpen Price Onlyquot: para esses tempos, os carrapatos são gerados para os preços de OHLC de cada dia, não os preços de OHLC da semana ou mês. Suponhamos testar um Expert Advisor no EURUSD H1 no modo quotOpen Prices Onlyquot. Neste caso, o número total de tiques (pontos de controle) não será mais do que 4número de barras de uma hora dentro do intervalo testado. Mas o manipulador OnTick () é chamado apenas na abertura da barra de uma hora. As verificações necessárias para um teste correto ocorrem no resto dos tic-tac (que são muito diferentes da EA). O cálculo dos requisitos de margem O desencadeamento dos níveis Stop Loss e Take Profit O desencadeamento de ordens pendentes A remoção de ordens pendentes caducadas. Se não houver posições abertas ou ordens pendentes, não precisamos executar essas verificações em carrapatos ocultos, e o aumento de velocidade pode ser bastante substancial. Este modo de quotOpen prices onlyquot é adequado para estratégias de teste, que processam negócios apenas na abertura da barra e não usam pedidos pendentes, bem como pedidos StopLoss e TakeProfit. Para a classe de tais estratégias, a precisão necessária do teste é preservada. Let39s usam o Consultor Especialista em Moeda Mínima do pacote padrão como um exemplo de EA, que pode ser testado em qualquer modo. A lógica desta EA é construída de tal forma que todas as decisões são tomadas na abertura da barra, e as negociações são realizadas imediatamente, sem o uso de pedidos pendentes. Execute um teste da EA no EURUSD H1 em um intervalo de 2010.09.01 a 2010.12.31 e compare os gráficos. A figura mostra o gráfico do saldo no relatório de teste para todos os três modos. Como você pode ver, os gráficos em diferentes modos de teste são exatamente os mesmos para o EA médio móvel do pacote padrão. Existem algumas limitações no modo quotOpen Prices Onlyquot: você não pode usar o modo de execução Random Delay. No Expert Advisor testado, você não pode acessar dados do prazo inferior ao usado para testar optimização. Por exemplo, se você executar testoptimization no período H1, você pode acessar dados de H2, H3, H4, etc., mas não M30, M20, M10, etc. Além disso, os prazos mais altos acessados ​​devem ser múltiplos do prazo de teste. Por exemplo, se você executar testes no M20, você não pode acessar os dados do M30, mas é possível acessar o H1. Essas limitações estão conectadas com a impossibilidade de obter dados de prazos inferiores ou não múltiplos das barras geradas durante a optimização do teste. As limitações ao acesso a dados de outros prazos também se aplicam a outros símbolos cujos dados são usados ​​pelo Consultor Especialista. Neste caso, a limitação para cada símbolo depende do primeiro período de tempo acessado durante a optimização de teste. Suponhamos que, durante o teste no EURUSD H1, um Expert Advisor acesse dados do GBPUSD M20. Neste caso, o Consultor Especialista poderá utilizar os dados da EURUSD H1, do H2, etc., bem como do GBPUSD M20, H1, H2, etc. Nota: O modo quotOpen prices onlyquot tem o tempo de teste mais rápido, mas não é adequado Para todas as estratégias de negociação. Selecione o modo de teste desejado com base nas características do sistema de negociação. Para concluir a seção sobre os modos de geração de tiques, let39s consideram uma comparação visual dos diferentes modos de geração de ticks para EURUSD, para duas barras M15 em um intervalo de 2011.01.11 21:00:00 - 2011.01.11 21:30:00. Os carrapatos foram salvos em diferentes arquivos usando o WriteTicksFromTester. mq5 EA eo final desses nomes de arquivos são especificados em filenameEveryTick, filenameOHLC e filenameOpenPrice input-parameters. Para obter três arquivos com três sequências de tiquetaque (para cada um dos seguintes modos, todos os tickquot, quot1 minutos OHLCquot e quotOpen preços apenas), o EA foi lançado três vezes nos modos correspondentes, em execuções únicas. Então, os dados desses três arquivos foram exibidos no gráfico usando o indicador TicksFromTester. mq5. O código do indicador está associado a este artigo. Por padrão, todas as operações de arquivo no idioma MQL5 são feitas dentro do quotfile sandboxquot, e durante o teste, a EA tem acesso apenas ao seu próprio sandboxquot quotfile. Para que o indicador e a EA trabalhem com arquivos de uma pasta durante o teste, usamos a bandeira FILECOMMON. Um exemplo de código da EA: --- abra o arquivo de arquivo FileOpen (filename, FILEWRITEFILECSVFILECOMMON, quotquot) --- verifique o identificador do arquivo se (arquivoINVALIDHANDLE) PrintFormat (quotError na abertura do arquivo s para escrita. Error codedquot, filename, GetLastError ()) Return else PrintFormat (quotO arquivo será criado na pasta s. TerminalInfoString (TERMINALCOMMONDATAPATH)) Para ler os dados no indicador, também usamos a bandeira FILECOMMON. Isso permitiu evitar a transferência manual dos arquivos necessários de uma pasta para outra. --- abra o arquivo arquivo int FileOpen (fname, FILEREADFILECSVFILECOMMON, quotquot) --- verifique o identificador de arquivo se (arquivoINVALIDHANDLE) PrintFormat (quotError em aberto de arquivos s para leitura. Error codedquot, fname, GetLastError ()) return else PrintFormat ( QuotFile será aberto a partir do squot. TerminalInfoString (TERMINALCOMMONDATAPATH)) Simulação do spread A diferença de preço entre os preços Bid e Ask é denominada propagação. Durante o teste, a propagação não é modelada, mas é retirada de dados históricos. Se o spread for menor ou igual a zero nos dados históricos, o último conhecido (no momento da geração) é usado pelo agente de teste. No Strategy Tester, o spread é sempre considerado flutuante. Ou seja, SymbolInfoInteger (símbolo, SYMBOLSPREADFLOAT) sempre retorna verdadeiro. Além disso, os dados históricos contém valores de tick e volumes de negociação. Para o armazenamento e recuperação de dados, usamos uma estrutura MqlRates especial: struct MqlRatestime time time Period start time double open Open price double high O preço mais alto do período duplo baixo O menor preço do período fechar duplo Fechar preço longo tickvolume Tick volume int Espalhar Espalhar o volume real real Volume comercial As variáveis ​​globais do terminal cliente Durante o teste, as variáveis ​​globais do terminal cliente também são emuladas, mas não estão relacionadas às variáveis ​​globais atuais do terminal. Que pode ser visto no terminal usando o botão F3. Isso significa que todas as operações com as variáveis ​​globais do terminal, durante o teste, ocorrem fora do terminal do cliente (no agente de teste). O Cálculo de Indicadores Durante o Teste No modo em tempo real, os valores dos indicadores são calculados a cada tiquetaque. O Strategy Tester adotou um modelo econômico para o cálculo de indicadores - os indicadores são recalculados apenas imediatamente antes do início da EA. Isso significa que o recálculo dos indicadores é feito antes da chamada das funções OnTick (), OnTrade () e OnTimer (). Não importa se há ou não uma chamada para o indicador em um manipulador de eventos específico. Todos os indicadores com alças criadas pelas funções iCustom () ou IndicatorCreate () serão recalculados antes de chamar o manipulador de eventos. Conseqüentemente, ao testar no modo tickotto QuotEvery, o cálculo dos indicadores ocorre antes da chamada da função OnTick (). Se o temporizador estiver ligado na EA, usando a função EventSetTimer (), os indicadores serão recalculados antes de cada chamada do manipulador OnTimer (). Portanto, o tempo de teste pode ser grandemente aumentado com o uso de um indicador, escrito de forma não ótima. Carregando histórico durante o teste O histórico de um símbolo a ser testado é sincronizado e carregado pelo terminal do servidor comercial antes de iniciar o processo de teste. Durante a primeira vez, o terminal carrega todo o histórico disponível de um símbolo para não solicitar mais tarde. Além disso, apenas os novos dados são carregados. Um agente de teste recebe o histórico de um símbolo a ser testado a partir do terminal do cliente logo após o início do teste. Se os dados de outros instrumentos forem utilizados no processo de teste (por exemplo, é um consultor especialista em várias moedas), o agente de teste solicita o histórico exigido do terminal do cliente durante a primeira chamada para esses dados. Se os dados históricos estiverem disponíveis no terminal, eles são imediatamente passados ​​para o agente de teste. Se os dados não estiverem disponíveis, o terminal solicita e os transfere do servidor e passa para o agente de teste. Os dados de instrumentos adicionais também são necessários para o cálculo das taxas cruzadas para as operações comerciais. Por exemplo, ao testar uma estratégia no EURCHF com a moeda de depósito em USD, antes de processar a primeira operação de negociação, o agente de teste solicita os dados de histórico de EURUSD e USDCHF do terminal do cliente, embora a estratégia não contenha chamada de uso direto de Esses símbolos. Antes de testar uma estratégia multi-moeda, recomenda-se fazer o download de todos os dados históricos necessários para o terminal do cliente. Isso ajudará a evitar atrasos na compatibilidade de teste associada ao download dos dados necessários. Você pode baixar o histórico, por exemplo, abrindo os gráficos apropriados e deslocando-os para o início do histórico. Um exemplo de carregamento forçado do histórico no terminal está disponível na seção Organizar acesso a dados da Referência MQL5. Os agentes de teste, por sua vez, recebem o histórico do terminal na forma embalada. Durante o próximo teste, o testador não carrega histórico do terminal, porque os dados necessários estão disponíveis desde a execução anterior do testador. O terminal carrega o histórico de um servidor comercial apenas uma vez, a primeira vez que o agente solicita o histórico de um símbolo a ser testado a partir do terminal. O histórico é carregado em um formulário embalado para reduzir o tráfego. Os tiques não são enviados através da rede, eles são gerados em agentes de teste. Teste de múltiplas moedas O Strategy Tester nos permite realizar testes de estratégias, negociando em símbolos múltiplos. Tais EAs são convencionalmente conhecidos como consultores especializados de multi-moeda, já que originalmente, nas plataformas anteriores, o teste foi realizado apenas para um único símbolo. No testador de estratégia do terminal MetaTrader 5, podemos negociar modelos para todos os símbolos disponíveis. O testador carrega o histórico dos símbolos usados ​​do terminal do cliente (não do servidor de comércio) automaticamente durante a primeira chamada dos dados do símbolo. O agente de teste baixa apenas o histórico que falta, com uma pequena margem para fornecer os dados necessários sobre o histórico, para o cálculo dos indicadores no início do teste. Para os tempos D1 e menos, o volume mínimo do histórico transferido é de um ano. Assim, se executarmos um teste em um intervalo 2010.11.01-2010.12.01 (teste para um intervalo de um mês) com um período de M15 (cada barra é igual a 15 minutos), então o terminal será solicitado o histórico para O instrumento para todo o ano de 2010. Para o período de tempo semanal, solicitaremos um histórico de 100 bares, que é cerca de dois anos (um ano tem 52 semanas). Para testes em um cronograma mensal, o agente solicitará o histórico de 8 anos (12 meses x 8 anos e 96 meses). Se não houver barras necessárias, a data de início dos testes será automaticamente deslocada do passado para o presente para fornecer a reserva de barras necessária antes do teste. Durante o teste, o quotMarket Watch quot também é emulado, a partir do qual se pode obter informações sobre símbolos. Por padrão, no início do teste, há apenas um símbolo no quotMarket Watchquot do Strategy Tester - o símbolo em que o teste está sendo executado. Todos os símbolos necessários são conectados ao QuotMarket Watchquot do Strategy Tester (não terminal) automaticamente quando referido. Antes de iniciar o teste de um Expert Advisor multi-moeda, é necessário selecionar os símbolos necessários para testar no QuotMarket Watchquot do terminal e carregar os dados necessários. Durante a primeira chamada de um símbolo quotforeignquot, seu histórico será automaticamente sincronizado entre o agente de teste e o terminal do cliente. Um símbolo quotforeignquot é o símbolo diferente daquele em que o teste está sendo executado. A referência aos dados de um símbolo quotothermot ocorre nos seguintes casos: No momento da primeira chamada para um quototherquot, o processo de teste é interrompido e o histórico é baixado para o frame symboltimeframe, do terminal para o agente de teste. Ao mesmo tempo, a geração da seqüência de tiques para este símbolo é feita. É gerada uma seqüência de seleção individual para cada símbolo, de acordo com o modo de geração de tiques selecionado. Você também pode solicitar o histórico explicitamente para os símbolos desejados chamando SymbolSelect () no manipulador OnInit () - o download do histórico será feito imediatamente antes do teste do Expert Advisor. Assim, não requer nenhum esforço extra para realizar testes multi-moeda no terminal do cliente MetaTrader 5. Basta abrir os gráficos dos símbolos apropriados no terminal do cliente. O histórico será carregado automaticamente do servidor de negociação para todos os símbolos necessários, desde que contenha esses dados. Simulação de tempo no testador de estratégia Durante o teste, a hora local TimeLocal () é sempre igual à hora do servidor TimeTradeServer (). Por sua vez, o tempo do servidor é sempre igual ao tempo correspondente ao horário GMT - TimeGMT (). Desta forma, todas essas funções são exibidas ao mesmo tempo durante o teste. A falta de uma diferença entre GMT, Local e a hora do servidor no Strategy Tester é feita deliberadamente no caso de não haver conexão com o servidor. Os resultados do teste sempre devem ser os mesmos, independentemente de existir ou não uma conexão. As informações sobre a hora do servidor não são armazenadas localmente e são retiradas do servidor. Objetos gráficos em testes Ao testar os objetos gráficos de optimização não são plotados. Assim, ao se referir às propriedades de um objeto criado durante o teste de optimização, um Consultor Especial receberá valores zero. Esta limitação não se aplica ao teste no modo visual. A função OnTimer () no Strategy Tester MQL5 oferece a oportunidade de manipular eventos temporizados. A chamada do manipulador OnTimer () é feita independentemente do modo de teste. Isso significa que, se um teste estiver sendo executado no modo quotOpening prices onlyquot para o período H4, e o EA tiver um temporizador definido para uma chamada por segundo, então, na abertura de cada barra H4, o manipulador OnTick () será chamado de um Tempo, e o manipulador OnTimer () será chamado 14400 vezes (3600 segundos 4 horas). O valor pelo qual o tempo de teste da EA será aumentado depende da lógica da EA. Para verificar a dependência do tempo de teste a partir da freqüência dada do temporizador, criamos uma EA simples sem operações de negociação. As medidas do tempo de teste foram realizadas em diferentes valores do parâmetro do temporizador (periodicidade do evento Timer). Nos dados obtidos, traçamos um tempo de teste como função do período do temporizador. Pode ver claramente que quanto menor for o temporizador de parâmetros, durante a inicialização da função EventSetTimer (Temporizador), menor será o período (Período) entre as chamadas do manipulador OnTimer () e maior será o tempo de teste T , Sob as mesmas condições. A função Sleep () no Strategy Tester A função Sleep () permite que o EA ou o script suspendam a execução do programa mql5 por um tempo, ao trabalhar no gráfico. Isso pode ser útil ao solicitar dados, que não está pronto no momento da solicitação e você precisa esperar até que esteja pronto. Um exemplo detalhado de usar a função Sleep () pode ser encontrado na seção Organizar acesso a dados. O processo de teste não é demorado pelas chamadas Sleep (). Quando você chama o Sleep (), os ticks gerados são quotplayedquot dentro de um atraso especificado, o que pode resultar no desencadeamento de pedidos pendentes, paradas, etc. Depois de um Sleep () Chamada, o tempo simulado no Strategy Tester aumenta em um intervalo, especificado no parâmetro da função Sleep. Se, como resultado da execução da função Sleep (), o tempo atual no Strategy Tester foi durante o período de teste, então você receberá um erro no loop de suspensão Infinite detectado enquanto testando. Se você receber esse erro, os resultados do teste não são rejeitados, todos os cálculos são realizados em seu volume total (número de negócios, subsidência, etc.) e os resultados desse teste são transmitidos para o terminal. A função Sleep () não funcionará no OnDeinit (), uma vez que, após o chamado, o tempo de teste será garantido para superar o intervalo do intervalo de teste. Usando o Testador de Estratégia para Problemas de Otimização em Cálculos Matemáticos O testador no terminal MetaTrader 5 pode ser usado, não apenas para testar estratégias comerciais, mas também para cálculos matemáticos. Para usá-lo, é necessário selecionar o modo quotMath calculationsquot: neste caso, apenas três funções serão chamadas: OnInit (), OnTester (), OnDeinit (). No quotMath calculationsquot mode, o Strategy Tester não gera quaisquer carrapatos e baixe o histórico. O Strategy Tester funciona no modo quotMath calculationsquot também se você especificar a data inicial maior que a data final. Ao usar o testador para resolver problemas matemáticos, o upload do histórico e a geração de tiques não ocorrem. Um problema matemático típico para resolver o MetaTrader 5 Strategy Tester - procurando um extremum de uma função com muitas variáveis. Para resolver isso, precisamos: O cálculo do valor da função deve estar localizado na função OnTester () Os parâmetros da função devem ser definidos como variáveis ​​de entrada do Expert Advisor Compilar o EA, abra a janela QuotStrategy Testerquot. Na guia Quota de parâmetros de entrada, selecione as variáveis ​​de entrada necessárias e defina o conjunto de valores de parâmetro especificando os valores de início, parada e etapa para cada uma das variáveis ​​de função. Selecione o tipo de otimização - quotSlow algoritmo completo completo (busca completa de espaço de parâmetros) ou quot Algoritmo baseado em genética. Para uma busca simples do extremum da função, é melhor escolher uma otimização rápida, mas se você deseja calcular os valores para todo o conjunto de variáveis, então é melhor usar a otimização lenta. Selecione o modo de cálculo do quotMath e usando o botão QuotStartot, execute o procedimento de otimização. Observe que, durante a otimização, o Strategy Tester procurará os valores máximos da função OnTester. Para encontrar um mínimo local, retornar o inverso do valor da função calculada a partir da função OnTester: É necessário verificar se o valor da função não é igual a zero, pois, de outra forma, podemos obter um erro crítico de dividir por zero. Há outra maneira, é mais conveniente e não distorce os resultados da otimização, foi sugerido pelos leitores deste artigo: Esta opção não exige a verificação do valor da função por ser igual a zero e a superfície da otimização Resultados em uma representação 3D tem a mesma forma. A única diferença é que é espelhada em comparação com o original. Como exemplo, fornecemos a função sink (): O código da EA para encontrar o extremum desta função é colocado no OnTester (): Execute uma otimização e veja os resultados de otimização na forma de um gráfico 2D. Quanto melhor for o valor de um dado par de parâmetros (x, y), mais saturada é a cor. Como era esperado da visão da forma da fórmula sink (), seus valores formam círculos concêntricos com um centro em (0,0). Pode-se ver no gráfico 3D, que a função sink () não tem nenhum extremum global único: A Sincronização de Barras no quotObaixo de preços justos O testador no terminal do cliente MetaTrader 5 nos permite verificar o chamado quotmulti-currencyquot EAs. Uma EA multi-moeda - é uma EA que comercializa em dois ou mais símbolos. The testing of strategies, that are trading on multiple symbols, imposes a few additional technical requirements on the tester: The generation of ticks for these symbols The calculation of indicator values for these symbols The calculation of margin requirements for these symbols Synchronization of generated tick sequences for all trading symbols. The Strategy Tester generates and plays a tick sequence for each instrument in accordance with the selected trading mode. At the same time, a new bar for each symbol is opened, regardless of how the bar opened on another symbol. This means that when testing a multi-currency EA, a situation may occur (and often does), when for one instrument a new bar has already opened, and for the other it has not. Thus, in testing, everything happens just like in reality. This authentic simulation of the history in the tester does not cause any problems as long as the quotEvery tickquot and quot1 minute OHLCquot testing modes are used. For these modes, enough ticks are generated for one candlestick, to be able to wait until the synchronization of bars from different symbols takes place. But how do we test multi-currency strategies in the quotOpen prices onlyquot mode, if the synchronization of bars on trading instruments is mandatory In this mode, the EA is called only on one tick, which corresponds to the time of the opening of the bars. We39ll illustrate it on an example: we are testing an EA on the EURUSD, and a new H1 candlestick has been opened on EURUSD. We can easily recognize this fact - while testing in the quotOpen prices onlyquot mode, the NewTick event corresponds to the moment of a bar opening on the tested period. But there is no guarantee that the new candlestick was opened on the USDJPY symbol, which is used in the EA. Under normal circumstances, it is sufficient enough to complete the work of the OnTick() function and to check for the emergence of a new bar on USDJPY at the next tick. But when testing in the quotOpen prices onlyquot mode, there will be no other tick, and so it may seem that this mode is not fit for testing multi-currency EAs. But this is not so - do not forget that the tester in MetaTrader 5 behaves just as it would in real life. You can wait until a new bar is opened on another symbols using the function Sleep() The code of the EA SynchronizeBarsUseSleep. mq5, which shows an example of the synchronization of bars in the quotOpen prices onlyquot mode: ------------------------------------------------------------------ SynchronizeBarsUseSleep. mq5 Copyright 2011, MetaQuotes Software Corp. mql5 ------------------------------------------------------------------ property copyright quotCopyright 2011, MetaQuotes Software Corp. quot property link quotmql5quot property version quot1.00quot --- input parameters input string othersymbol quotUSDJPYquot ------------------------------------------------------------------ Expert initialization function ------------------------------------------------------------------ int OnInit () --- check symbol if (Symbolothersymbol) PrintFormat ( quotYou have to specify the other symbol in input parameters or select other symbol in Strategy Testerquot ) --- forced stop testing r eturn ( INITPARAMETERSINCORRECT ) --- return ( INITSUCCEEDED ) ------------------------------------------------------------------ Expert tick function ------------------------------------------------------------------ void OnTick () --- static variable, used for storage of last bar time static datetime lastbartime0 --- sync flag static bool synchonizedfalse --- if static variable isn39t initialized if (lastbartime0) --- it39s first call, save bar time and exit lastbartime( datetime ) SeriesInfoInteger (Symbol, Period (), SERIESLASTBARDATE ) PrintFormat ( quotThe lastbartime variable is initialized with value squot. TimeToString (lastbartime)) --- get open time of the last bar of chart symbol datetime currtime( datetime ) SeriesInfoInteger ( Symbol (), Period (), SERIESLASTBARDATE ) --- if times aren39t equal if (currtimelastbartime) --- save open bar time to the static variable lastbartimecurrtime --- not synchronized synchonizedfalse --- print message PrintFormat ( quotA new bar has appeared on symbol s at squot, Symbol, TimeToString ( TimeCurrent ())) --- open time of the other symbol39s bar datetime othertime --- loop until the open time of other symbol become equal to currtime while ((currtime(othertime( datetime ) SeriesInfoInteger (othersymbol, Period (), SERIESLASTBARDATE )) ampamp synchonized)) PrintFormat ( quotWaiting 5 seconds..quot ) --- wait 5 seconds and call SeriesInfoInteger(othersymbol, Period(),SERIESLASTBARDATE) Sleep (5000) --- bars are synchronized synchonizedtrue PrintFormat ( quotOpen bar time of the chart symbol s: is squot, Symbol, TimeToString (lastbartime)) PrintForma t ( quotOpen bar time of the symbol s: is squot, othersymbol, TimeToString (othertime)) --- TimeCurrent() is not useful, use TimeTradeServer() Print ( quotThe bars are synchronized at quot. TimeToString ( TimeTradeServer (),TIMESECONDS)) ------------------------------------------------------------------ Notice the last line in the EA, which displays the current time when the fact of synchronization was established: Library name with the extension, in double quotes. A library can have extension dll or ex5. Libraries that require testing are defined automatically. However, if any of libraries is used by a custom indicator, this property is required For each block of parameters, a digital fingerprint in the form of MD5-hash is created, which is sent to the agent. MD5-hash is unique for each set, its volume is many more times smaller than the amount of information on which it is calculated. The agent receives a hash of blocks and compares them with those that it already has. If the fingerprint of the given parameter block is not present in the agent, or the received hash is different from the existing one, the agent requests this block of parameters. This reduces the traffic between the terminal and the agent. After the testing, the agent returns to the terminal all of the results of the run, which are shown in the tabs quotTest Resultsquot and quotOptimization Resultsquot: the received profit, the number of deals, the Sharpe coefficient, the result of the OnTester() function, etc. During optimizing, the terminal hands out testing tasks to the agents in small packages, each package contains several tasks (each task means single testing with a set of input parameters). This reduces the exchange time between the terminal and the agent. The agents never record to the hard disk the EX5-files, obtained from the terminal (EA, indicators, libraries, etc.) for security reasons, so that a computer with a running agent could not use the sent data. All other files, including DLL, are recorded in the sandbox. In remote agents you can not test EAs using DLL. The testing results are added up by the terminal into a special cache of results (the result cache), for a quick access to them when they are needed. For each set of parameters, the terminal searches the result cache for already available results from the previous runs, in order to avoid re-runs. If the result with such a set of parameters is not found, the agent is given the task to conduct the testing. All traffic between the terminal and the agent is encrypted. Ticks are not sent over the network, they are generated on testing agents. Using the Shared Folder of All of the Client Terminals All testing agents are isolated from each other and from the client terminal: each agent has its own folder in which its logs are recorded. In addition, all file operations during the testing of the agent occur in the folder agentnameMQL5Files. However, we can implement the interaction between the local agents and the client terminal through a shared folder for all of the client terminals, if during the file opening you specify the flag FILECOMMON. ------------------------------------------------------------------ Expert initialization function ------------------------------------------------------------------ int OnInit () --- the shared folder for all of the client terminals commonfolder TerminalInfoString ( TERMINALCOMMONDATAPATH ) --- draw out the name of this folder PrintFormat ( quotOpen the file in the shared folder of the client terminals squot. commonfolder) --- open a file in the shared folder (indicated by FILECOMMON flag) handle FileOpen (filename, FILEWRITEFILEREADFILECOMMON) . further actions --- return ( INITSUCCEEDED ) Using DLLs To speed up the optimization we can use not only local, but also remote agents. In this case, there are some limitations for remote agents. First of all, remote agents do not display in their logs the results of the execution of the Print() function, messages about the opening and closing of positions. A minimum of information is displayed in the log to prevent incorrectly written EAs from trashing up the computer, on which the remote agent is working, with messages. A second limitation - the prohibition on the use of DLL when testing EAs. DLL calls are absolutely forbidden on remote agents for security reasons. On local agent, DLL calls in tested EAs are allowed only with the appropriate permission quotAllow import DLLquot. Note: When using 3rd party EAs (scripts, indicators) that require allowed DLL calls, you should be aware of the risks which you assume when allowing this option in the settings of the terminal. Regardless of how the EA will be used - for testing or for running on a chart.

No comments:

Post a Comment