Tuesday 5 September 2017

Ou forex mqh


MetaTrader 4 - Trading Systems LiteEXPERT2.mqh: exemplos de implementação do consultor especial Introdução No meu artigo anterior intitulado LiteEXPERT2.mqh: Kit funcional para desenvolvedores de consultores especializados. Familiarizei os leitores com as funções LiteEXPERT2.mqh. Neste artigo, irei dar exemplos reais de implementação do Expert Advisor que usam essas funções. Eu acredito, a operação das funções de negociação não é materialmente diferente das funções semelhantes fornecidas no arquivo LiteEXPERT1.mqh. A inicialização de mais algumas variáveis ​​externas que eles contêm, é improvável que cause confusão (ver Exp01.mq4 e Exp0.mq4, Exp1.mq4 e EXP11.mq4). Portanto, não há absolutamente nenhuma necessidade de voltar para eles mais uma vez. Procederemos diretamente aos exemplos criados usando as funções de negociação que usam valores absolutos dos níveis do gráfico de preços como variáveis ​​externas para pedidos pendentes. As estratégias de negociação que serão discutidas mais adiante neste artigo são baseadas no indicador Average True Range, então é para isso que vou começar este artigo. Usando o indicador de alcance verdadeiro médio em sistemas de negociação mecânica O indicador de alcance verdadeiro médio (a seguir, ATR ou alcance real médio) foi desenvolvido por Welles Wilder e introduzido pela primeira vez em seu livro Conceitos Novos em Sistemas de Negociação Técnica em 1978. Este indicador tornou-se bastante popular E ainda está incluído em muitos conjuntos de software de análise técnica. O indicador ATR não indica indicações de tendência atuais, mas fornece uma imagem gráfica de volatilidade ou atividade do mercado em consideração. Essencialmente, este indicador pode ser usado em sistemas mecânicos de negociação em duas variantes: 1. Filtragem de sinais do sistema de negociação para identificação de tendências e condições de mercado não tendenciais. Nesse caso, os sinais de direção e entrada de tendência são recebidos de outros indicadores, enquanto o indicador ATR apenas fornece uma condição de entrada adicional. Essa condição adicional pode, por exemplo, ser a ruptura do valor médio do indicador pelo próprio indicador. Para obter o valor ATR médio, é conveniente usar a linha média do sinal com base em ATR. 2. Ordens pendentes adaptativas. O valor absoluto deste indicador determina as distâncias do preço de abertura da barra, fora das quais as fortes flutuações de preços provavelmente começarão. Portanto, é muito conveniente usar esses níveis para definir pedidos pendentes para posições de abertura e níveis de Stop Loss. Neste caso, temos a oportunidade de usar o indicador ATR para definir pedidos a uma certa distância do preço que se adapte à volatilidade atual do mercado em cada negócio. Uma distância fixa nas condições reais do mercado é vista como um antigo general do exército, sempre em condições de combate à guerra que há muito se tornou história. Isso muitas vezes resulta em um desempenho do sistema comercial muito mais interessante nas condições de mercado reais e em constante mudança. De forma muito similar, você pode usar a distância ATR para mover os níveis de Trailing Stop para o preço em cada mudança de barra. Agora, podemos proceder ao desenvolvimento de Expert Advisors usando o arquivo LiteEXPERT2.mqh. A melhor maneira de fazê-lo é começar com a modernização dos Expert Advisors construídos com base em LiteEXPERT1.mqh para dar-lhes maior flexibilidade na negociação. Sistema de negociação que usa mudanças na direção do MA como sinais para entrada e saída no mercado Eu já forneci uma descrição detalhada de tal sistema no meu artigo intitulado Expert Advisors Based on Popular Trading Systems e Alchemy of Trading Robot Optimization dedicado a sistemas de negociação muito básicos. É hora de torná-lo mais complexo. Um sistema de negociação quase semelhante baseado nas funções LiteEXPERT2.mqh é desenvolvido no Exp11.mq4 Expert Advisor (original Exp1.mq4). Nós apenas precisamos substituir Stop Loss e Take Profit fixos com os recalculados em unidades ATR e adicionar os níveis de Stop Trailing semelhantes que mudarão uma vez em cada mudança de barra. Isso é melhor implementado em duas etapas. Primeiro substituímos o Stop Loss and Take Profit (o Exp17A. mq4 Expert Advisor) e depois que o código é verificado quanto a erros e por estar em conformidade com a estratégia de negociação selecionada, adicionamos os níveis de Trailing Stop (o Supervisor Experimental Exp17.mq4) . No artigo, vou fornecer apenas a versão final com descrições mais detalhadas das alterações feitas no código. Então, temos um novo par de variáveis ​​no bloco de variáveis ​​externas do Expert Advisor - ATRPeriodUp e ATRPeriodDn que podem ser usados ​​para alterar os valores do indicador ATR envolvidos no cálculo das ordens pendentes. Agora, o significado lógico de valores de variáveis ​​externas para Stop Loss, Take Profit e Trailing Stop é um pouco diferente. Esses valores usaram para representar distância relativa em pontos da ordem para o preço atual. Eles representam agora porcentagem do valor do indicador ATR na primeira barra. Em outras palavras, para calcular a ordem, tomamos por cento do indicador ATR e adicionamos ao valor do preço de abertura do zero bar. Portanto, a melhor maneira de converter porcentagem para o valor do ponto flutuante é usar o bloco init () do Expert Advisor onde esses cálculos serão feitos apenas uma vez e os valores calculados serão salvos nas variáveis ​​declaradas com um escopo global. Devido ao novo indicador ATR disponível, as fórmulas para inicialização das variáveis ​​LevMinimumUp e LevMinimumDn no bloco init () foram alteradas. O bloco start () do Expert Advisor apresenta novas variáveis ​​declaradas como estáticas para armazenar valores entre os tiques do terminal. O código para o cálculo de pedidos pendentes e os níveis de Trailing Stop são organizados em pequenos módulos dentro dos blocos para obter sinais de acordo. Agora, para executar um negócio, usamos funções diferentes, onde o valor de cinco é usado na inicialização da variável MarginMode como um valor mais lógico nas condições flutuantes de Stop Loss. Para demonstrar as oportunidades oferecidas pelo uso das funções IndicatorCounted () e ReSetAsIndexBuffer (), neste Consultor Especial substituímos o indicador personalizado JFatl. mq4 com a função JFATL () inserida no código do Expert Advisor. A função obtém parâmetros de entrada do indicador e da matriz de buffer. Em caso de cálculo bem sucedido, a função retorna true, caso contrário, é falso. A matriz é por referência convertida para o buffer do indicador preenchido com os valores do indicador JFATL. Na função, a função JJMASeries () é substituída por JJMASeries1 () que não executa cálculos na barra de zero. Também substituímos a função PriceSeries () pela função iPriceSeries (). O bloco de inicialização do indicador foi movido para o bloqueio de inicialização zero. Observe que a função JJMASeries1 () é usada somente nesta função no Expert Advisor, de modo que o valor da variável Number não é recalculado e é passado para o JJMASeries1 () diretamente. O mesmo se aplica à função IndicatorCounted (). Eu já falei sobre tais substituições de indicadores com função em meus outros artigos dedicados a este assunto: 1. 2. 3. O Consultor Especializado que possui essa substituição é representado pelo arquivo Exp17.mq4. Devemos notar o fato de que o algoritmo de suavização JMA empregado no indicador JFatl. mq4 é bastante consumidor e essa substituição do indicador com a função indicadora resulta em um ganho de velocidade de otimização bastante significativo nesse consultor especial quando comparado à versão anterior. E, finalmente, para o mais preguiçoso de você, o mesmo Expert Advisor (Exp17R. mq4) foi desenvolvido de tal forma que ele pode conter todas as funções necessárias dentro do seu código, sem exigir quaisquer arquivos de inclusão adicionais ou indicadores para sua compilação e operação . A operação de todos os três análogos deste consultor especialista é idêntica, exceto talvez o fato de que os valores de variável IPCUp e IPCDn no último consultor especialista variam em um intervalo um pouco menor (0-10) devido à falta de chamada do indicador Heiken Ashi. mq4 . No fórum. Você pode ocasionalmente ver alguns gurus da programação MQL4 franzirem a idéia de escrever tais funções de indicador, o que, em sua opinião, é como colocar suas calças na cabeça. Eu, pessoalmente, só gasto quinze minutos do meu tempo escrevendo essa função com base em um código bastante fácil de entender. Então, se alguém pode ser seis vezes mais rápido ao executar uma maratona de otimização com as calças colocadas dessa maneira, eu ficaria com esta opção Breakout System for Trading the News Esta versão do sistema comercial já foi fornecida para sua consideração no meu artigo em A forma do Exp10.mq4 Expert Advisor. O Exp101.mq4 Expert Advisor com base nas funções LiteEXPERT2.mqh é completamente análogo. É um pouco mais complicado do que a versão original, mas muito mais confiável, pois não é afetado por diferentes casos de Consultor Especializado, Terminal ou Reinício do Sistema Operacional. Para determinar o tempo após o qual uma posição aberta deve ser fechada, este Consultor Especial usa a função TradeTimeLevelCheck (): Esta função retorna verdadeira após o ponto de tempo, cujo valor foi passado como um parâmetro de entrada para a função para colocar ordens pendentes ou Posições de abertura. O valor como tal é obtido pela função a partir da variável global. Agora precisamos alterar o algoritmo do cálculo da ordem pendente. Mas, neste caso, os pedidos de parada também devem ser calculados dinamicamente, além de Stop Loss e Take Profit. Essencialmente, isso não muda nada para nós e tudo é implementado da mesma maneira. Além disso, o Trailing Stop no Expert Advisor original funciona em todos os tiques, enquanto precisamos movê-lo em cada mudança de barra. O código final do Expert Advisor (Exp18.mq4) certamente não é tão simples quanto o original, mas a lógica do programa é bastante concisa e direta. Exp18R. mq4 é um analógico completo do último Expert Advisor implementado na forma de um arquivo completo e autônomo. Conclusão Eu acredito, as funções personalizadas LiteEXPERT2.mqh não são nada de novo quando comparadas às funções LiteEXPERT1.mqh em termos de abordagem de programação. Eles simplesmente aumentam a funcionalidade de programação, enquanto permanecem essencialmente os mesmos em termos de aplicação. Então, depois de um estudo cuidadoso das funções LiteEXPERT1.mqh, você não deve encontrar nenhuma dificuldade em aprender a funcionalidade de LiteEXPERT2.mqh rapidamente e facilmente. Indicador de Instalação do Scanner 8211 para o MetaTrader 4 A idéia por trás dos pedaços de código anexados é esta: você sonha Até um (conjunto de) condição (s). Você escreve o código para testar suas condições. Você incorpora seu código dentro desses fragmentos de código. Você faz alguns mods fáceis. Você acaba com alguns indicadores. Um deles indicará historicamente o gráfico atual em que suas condições surgiram. O outro mostrará em um painel se, para todos os instrumentos e prazos em que você está interessado, as condições surgiram. Isso evita que você tenha que verificar manualmente os pares e os cronogramas em busca de suas condições. Para instalar: Copie o conteúdo das quatro pastas (Indicadores, Incluir, Modelos, Perfis) nas pastas equivalentes da sua instalação. Não há nada lá para machucar os indicadores apenas 8211, etc. Saia e volte a inserir o programa MetaQuotes. Para demonstrar o que o scanner pode fazer: Este exemplo é baseado no Power Pro (identificador de configuração 8220PP8221) que estava sendo pressionado pelas armadilhas por Russ Horn. É uma estratégia de break-out de banda onde o limite de banda superior é um ema de altos e o limite inferior é um ema de baixas. Não há nenhum endosso dessas estratégias por mim, isso é puramente como exemplo do que você pode desenvolver. No seu sistema, mude para o perfil cspp. Isso pode levar vários segundos para a primeira exibição, mas doesn8217t usa muito recurso de computador depois disso. Você deve ver uma tela semelhante a esta: O exemplo acima consiste em: um indicador em gráfico com 4 parcelas, um indicador de janela separada mostrando EMA de RSI, um indicador de janela separada mostrando onde condições que sugerem transações longas ou curtas ocorreram historicamente , E um indicador de painel que mostra onde as mesmas condições acabaram de ocorrer ou estão ocorrendo atualmente em uma variedade de pares e prazos. O código comum a todas as varreduras: Utils. mqh contém algumas funções de utilidade que podem ser usadas em qualquer indicador, conselheiro especializado, etc. csChart. mqh contém quase todo o código que passa no indicador do gráfico atual. CsPanel. mqh contém quase todo o código que entra no indicador de exibição do painel. O código específico da estratégia PP (Power Pro): csPP0.mq4 exibe os indicadores relevantes do 8220chart-window8221. CsPP1.mq4 exibe os indicadores 8220separate-window8221 relevantes. CsPPChart. mq4 é o indicador que mostra o que aconteceu historicamente no gráfico atual. CsPPPanel. mq4 é o indicador que mostra a situação atual em todos os pares e prazos nos quais você está interessado. CsPPGetBarFlag. mqh é o código 8220included8221 nos indicadores Gráfico e Painel. É o pouco que decide se existe uma condição de interesse em uma barra particular. Eu incluí outro exemplo menos complexo (identificador MAX). O código específico da estratégia MAX (taxa média em movimento): csMAX0.mq4 é um indicador personalizado que exibe duas médias móveis. É completamente autônomo. Não há csMAX1 equivalente porque, ao contrário do PP acima, não há necessidade de uma exibição de janela separada. CsMAXChart. mq4, csMAXPanel. mq4 e csMAXGetBarFlag. mqh fazem o equivalente como para a estratégia PP acima. O código cujos ids começam com csXXXX: são modelos que podem ser usados ​​ao desenvolver varreduras adicionais. Como faço para codificar uma nova condição: eu decido sobre um identificador de estratégia (por exemplo, PB para pinbars). Coloco minha janela acima como acima em 8220 Para demonstrar o que o scanner pode fazer8221, removendo os indicadores existentes. Se a minha nova verificação se basear em indicadores no gráfico, eu os construo usando csXXXX0.mq4 como padrão. Lembro-me de 8216save as82308217 csPB0.mq4. Eu aplico o meu indicador personalizado no gráfico da mão esquerda. Se eu precisar de um indicador de janela separado, eu também o construo. Lembro-me de 8216save as82308217 csPB1.mq4. Eu o aplico no gráfico da mão esquerda. Eu crio indicadores personalizados ao invés de usar indicadores padrão para que eu possa consultá-los em outro lugar usando a função iCustom. Desta forma, se eu mudar de idéia sobre os parâmetros básicos da minha estratégia (por exemplo, método de média móvel), eu só preciso alterar meus indicadores personalizados. Se eu usei indicadores padrão, eu teria que mudá-los e depois ir cavando nas entranhas do meu código para acomodar minha mudança mental. Pego csXXXXChart. mq4, substitua todas as instâncias do 8216XXXX8217 pelo meu identificador de estratégia 8216PB8217 e salve o código como csPBChart. mq4. Ele não compilará ainda porque há algum código 8220include8221 ainda por escrito. Agora, forneça o código 8220include8221. Se as condições para as quais eu quero testar são mortas, eu apenas uso o arquivo 8220include8221 csXXXXGetBarFlag. mqh, codifique o que eu quero e 8216save as82308217 csPBGetBarFlag. mqh. Mas se a codificação for complicada, volto para o csPBChart. mq4 que eu criei anteriormente, comentei a linha de código que agora lê 8220include ltcsPBGetBarFlag. mqhgt e eu construo o código que eu quero diretamente no arquivo csPBChart. mq4. Quando eu consegui limpar, coloquei o código de condição para o 8220include8221 arquivo 8216csPBGetBarFlag. mqh8217 e descomprime a declaração de inclusão no arquivo 8216csPBChart. mq4. Agora, o arquivo 8216csPBChart. mq48217 pode ser compilado e aplicado ao gráfico de mão esquerda. Neste ponto, eu salve o modelo para o gráfico da mão esquerda como csPB-CHART. tpl. Ele incorpora quaisquer indicadores personalizados gráficos, indicadores personalizados de janelas separadas e o gráfico de resultados conforme eles se aplicam ao gráfico atual. Eu carrego o arquivo 8216csXXXXPanel. mq48217, substitua todas as instâncias de 8220XXXX8221 por 8220PB8221 e, em seguida, 8216save as82308217 8220csPBPanel. mq48221. Este último arquivo é compilado e aplicado ao gráfico da mão direita. Pode ser um pouco lento para ser executado quando aplicado pela primeira vez, mas doesn8217t usa muito recurso ao executar. Eu armazeno csPBpanel. tpl como um modelo para o gráfico de mão direita. Em seguida, eu costumo armazenar csPB como um perfil. NOTA . Ao construir indicadores personalizados e, em seguida, consultando-os com a função iCustom, cuido que os nomes estejam exatamente certos. Você não recebe nenhum aviso se iCustom se refere a um indicador que doesn8217t existe. NOTA . Pode haver um erro de forma que, quando o indicador do painel for carregado pela primeira vez, ele produz resultados que não são consistentes com aqueles no gráfico específico exibido. Eu acho que se eu mudar a escala de tempo na janela do painel (forçando assim uma re-calc), tudo está certo. Agradeceria se alguém pudesse me dirigir diretamente com esse problema. NOTA . No código 8230GetBarFlag. mqh que você desenvolve, você pode retornar qualquer número inteiro ao programa de chamada para ser exibido. À medida que o código se mantém, zero significa 8216no resultado8217 e provoca a exibição de uma bagunça cinza indicando qual barra foi testada. Devolver um inteiro negativo resultará em uma exibição vermelha enquanto um número inteiro positivo resultará em uma exibição verde. Alguns aspectos do software: o código foi escrito como indicadores para que, quando um painel estiver em exibição e você quiser ver um par e um período de tempo específicos, você simplesmente escolhe o par da janela Market Watch, arraste e solte-o no Espaço gráfico atual e alterar o prazo para se adequar. O modelo cuida do resto. Em um esforço para reduzir a sobrecarga do computador, fiz duas coisas. Em primeiro lugar, ao lidar com matrizes de séries temporais, na maior parte só volto 200 bares. Em segundo lugar, o software de exibição do painel doesn8217t testar as condições do user8217s em cada marca. Ele usa um mecanismo de temporizador de modo que o teste é aplicado ao bar0 somente se o bar0 for formado em 90, caso contrário, o teste é aplicado à barra1. Se a barra 1 tiver o foco (isto é, bar0 é inferior a 90), é testado uma vez e calcula-se uma hora de transição para bar0. Para cada tique subsequente que vem até o tempo de transição é atingido, nada acontece. Não tenho certeza de ter obtido este codificado até agora, mas parece funcionar muito bem. Além do mecanismo do temporizador mencionado acima, a linha superior do painel mostra a data e a hora em que ocorreu o evento de avaliação de condição mais recente. Além disso, nos exemplos fornecidos aqui, os wingdings neutros mostrarão um zero se bar0 estiver em foco e 821618217 se bar1 estiver focado. Esta entrada foi postada por hamdouch em 30 de junho de 2014 às 10:30 da manhã e está arquivada sob Ea Robot. Siga as respostas a esta publicação através do RSS 2.0. Você pode pular para o final e deixar uma resposta. Pinging atualmente não é permitido. Tag: commonfunctions. mqh MQL é realmente 100 C. Quando você está acostumado com C, você está praticamente acostumado ao MQL. Dentro do meu ponto de vista verdadeiro, quando você está começando, com o MQL5 em vez do MQL4. Assim que você cumprir a energia elétrica com codificação objetiva focada e você é capaz de fazê-lo, você estará pronto para completar os itens com o MQL5 que, muitas vezes, os desenvolvedores MQL4 nunca devem estar prontos para concluir. Clique aqui para baixar uma NOVA ferramenta de negociação e estratégia GRATUITAMENTE O MQL4 (C) geralmente é codec8221 de 8220spaghetti, embora o MQL5 (C) seja apenas a melhor forma de você praticá-lo, mas não apenas considerando que o MQL5 é geralmente revelado, considerando realmente que C é feito . Uma mente de livreto excelente você geralmente é 8220C em relação a Dummies8221. Como descobri a questão da ideia dessa maneira. Foi o resultado antes de gerar 400. Hoje, essas disparidades geralmente são uma quantidade menor. Eu posso afirmar que muitos dos princípios que serão acessíveis com o mql5 podem ser instalados com o mql4. As pessoas podem, no entanto, concluir os itens que envelhecem processo com o mql4 se you8217re sofá ou apenas não tem ideia. Como eu realmente gostei da direção, eles fizeram essas palavras mql4. Qualquer um pode completar os itens realmente mesmo, embora, no entanto, recebendo a energia elétrica com oop perto. Últimas solicitações Publicações recentes Solicitações populares

No comments:

Post a Comment