Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Facebook!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Bibliotecas

RegularExpressions na MQL4 para trabalhar com expressões regulares - biblioteca para MetaTrader 4

Publicado por:
MetaQuotes
Visualizações:
1328
Avaliação:
(30)
Publicado:
2017.10.04 12:34
Atualizado:
2018.09.12 09:57
\MQL4\Experts\RegExpressions Demo\ \MQL4\Include\Internal\ \MQL4\Include\Internal\Generic\ \MQL4\Include\Internal\TimeSpan\ \MQL4\Include\RegularExpressions\
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Verdadeiro autor:

Microsoft Corporation. Os códigos fonte foram tirados do .Net Framework 4.6.1

Nota: A biblioteca funciona apenas na MetaTrader 4 build 1384 e superior.

Para começar a trabalhar você precisa de descompactar o arquivo para a pasta catálogo_de_dados_do_terminal.
Os códigos da biblioteca ficam localizados na pasta: <catálogo_de_dados_do_terminal>\MQL4\Include\RegularExpressions\
Exemplos de scripts de teste podem ser encontrados na pasta: <catálogo_de_dados_do_terminal>\MQL4\Scripts\RegularExpressionsExamples\

Aqui você dispõe de uma tradução do RegularExpressions com .Net Framework 4.6.1.

Para usar a biblioteca, você deve conectar ao seu código o arquivo Regex.mqh do diretório \MQL4\Include\RegularExpressions\.

Além disso, juntamente com a biblioteca existem várias demonstrações que ao mesmo tempo cumprem o papel de casos exemplares. Todos os exemplos são tirados do site oficial Microsoft Corporation, eles mostram claramente as principais diferenças de expressões regulares no C# e as peculiaridades do seu uso na MQL4.

Leia mais sobre os pacotes da biblioteca migrada (portada) RegularExpressions MQL4:

Pacotes
Descrição
CharUnicodeInfo.mqh
txt arquivado para determinar as categorias Unicode para todos os caracteres (incluindo caracteres não latinos).
RegexCapture.mqh
Apresenta os resultados de um registro bem-sucedido por parte da expressão.
RegexCaptureCollection.mqh
Apresenta um conjunto de registros feitos por um grupo do registro.
RegexGroup.mqh
Apresenta os resultados de um grupo separado do registro.
RegexGroupCollections.mqhRetorna um conjunto de grupos registrados na mesma justaposição.
RegexMatch.mqhApresenta os resultados de uma correspondência separada de uma expressão regular.
RegexMatchCollection.mqhApresenta o conjunto de correspondências bem-sucedidas encontradas aplicando iterativamente um padrão de expressão regular para a seqüência de caracteres de entrada.
Regex.mqhApresenta uma expressão regular imutável.
RegexOptions.mqh Fornece valores enumerados para serem usados ao definir os parâmetros de expressões regulares.

Parâmetros de expressões regulares a partir do arquivo RegexOptions.mqh:

Parâmetros
Descrição
None
Parâmetros não estabelecidos.
IgnoreCase
O registro não é levado em conta, ao pesquisar correspondências.
MultilineIndica o modo multi-linha.
ExplicitCaptureNão abrir grupos sem nome. As únicas seleções válidas pressupõem grupos claramente nomeados ou enumerados no formato (?<nome> parte da expressão).
SinglelineIndica o modo de linha única.
IgnorePatternWhitespaceRemove do padrão os separadores e habilita os comentários marcados com o símbolo "#".
RightToLeftIndica que a pesquisa será realizada da direita para a esquerda, em vez de esquerda para a direita.
DebugIndica que o programa funciona sob o depurador.
ECMAScriptHabilita o comportamento compatível ECMAScript para a expressão. Este valor pode ser utilizado apenas em conjunto com os valores IgnoreCase e Multiline.


Características do trabalho com RegularExpressions para MQL4:

  1. Como na versão .Net, nesta biblioteca foi empregue um repositório (memória cache invariável) de expressões regulares. Todas as expressões regulares criadas implicitamente (modelos da classe Regex) são inseridas neste repositório. Esta abordagem acelera o trabalho dos scripts, pois desaparece a necessidade de construir de novo expressões regulares, já que o seu padrão corresponde a um dos já existentes. O tamanho do repositório é por defeito 15. O método Regex::CacheSize() retorna ou define o número máximo de entradas na atual memória cache invariável das expressões regulares compiladas.
  2. A segunda característica, quando se trabalha com expressões regulares na MQL4, resulta diretamente a partir da primeira. E trata-se do fato de que o repositório acima mencionado deve ser limpo. Para fazer isso, é preciso chamar a função invariável Regex::ClearCache(). É recomendável chamar essa função somente após terminar de trabalhar com expressões regulares, caso contrário, é muito provável que se esteja removendo indicadores necessários.
  3. Ao contrario do .Net, na MQL4 não está empregue o ciclo foreach e, conseqüentemente, o trabalho com enumerações é diferente. Exemplo:
    //--- Código em C #
    Regex rx = new Regex(@"\b(?<word>\w+)\s+(\k<word>)\b", RegexOptions.IgnoreCase);   
    string text = "The the quick brown fox  fox jumped over the lazy dog dog.";
    MatchCollection matches = rx.Matches(text);
    foreach (Match match in matches) 
      {
       //--- processamento
      }
    
    //--- Código para MQL4
    Regex *rx = new Regex("\\b(?<word>\\w+)\\s+(\\k<word>)\\b", RegexOptions::IgnoreCase);        
    string text = "The the quick brown fox  fox jumped over the lazy dog dog.";
    MatchCollection *matches = rx.Matches(text);
    IEnumerator<Match*> *en = matches.GetEnumerator();
    while(en.MoveNext()) 
      {
       Match *match = en.Current();
       //--- processamento
      }
    delete rx;
    delete matches;
    delete en;
    Regex::ClearCache();
    
  4. Como você pode ver no exemplo acima, a sintaxe da linguagem C# permite colocar diante das linhas o caractere '@' para ignorar todas as marcas de formatação nele. Na MQL4, tal abordagem ainda não tem sido coberta, de modo que todos os caracteres de controle, num padrão de expressão regular, devem ser descritos claramente.

Ao trabalhar com esta forma, nós escolhemos a tabela do nosso interesse, selecionamos a coluna e o valor nela, de acordo com o qual a tabela será filtrada. Clicamos no botão Find e a tabela filtrada será mostrada abaixo, juntamente com algumas estatísticas sobre ela. O botão Save salva a tabela, que está sendo exibida atualmente, num arquivo csv. O arquivo salvo será também colocado na área local com o nome Result.csv.

Para saber mais sobre a biblioteca RegularExpressions para MQL4 foi criado o conselheiro Tests.mqh. Ele contem exemplos para utilizar expressões regulares que atingem toda a funcionalidade básica da biblioteca.

Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/16566

Engulfing with RSI Engulfing with RSI

Not really profitable but the code fits on one page.

Previous Candle Hi-Lo Previous Candle Hi-Lo

Previous Candle Hi-Lo is used to check the last candle multi-timeframe position relative to the current price.

Symbol Movement Symbol Movement

This custom indicator will show you 28 pair's daily candle range, High-Low range, candle bullishness or bearishness from real tick market. So you can understand the overall market situation very short time. You can change the default timeframe from Daily to any period and default candle (bar) number from 0 to any previous number. Also you can open the required symbol by clicking the symbol button.

BarNumbers BarNumbers

Displays the number of each bar - both, relative to the most current bar and in absolute terms from the beginning of the chart.