Mira cómo descargar robots gratis
¡Búscanos en Facebook!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Librerías

RegularExpressions en MQL4 para trabajar con expresiones frecuentes - librería para MetaTrader 4

Publicado por:
MetaQuotes
Visualizaciones:
1120
Ranking:
(30)
Publicado:
2017.10.09 09:08
Actualizado:
2018.09.12 09:59
\MQL4\Experts\RegExpressions Demo\
TableListView.mqh (60.38 KB) ver
Tests.mq4 (139.5 KB) ver
\MQL4\Include\Internal\
Array.mqh (22.36 KB) ver
DynamicMatrix.mqh (22.04 KB) ver
IComparable.mqh (4.98 KB) ver
Wrappers.mqh (17.96 KB) ver
\MQL4\Include\Internal\Generic\
Collection.mqh (12.54 KB) ver
Dictionary.mqh (42.58 KB) ver
ICollection.mqh (6.15 KB) ver
IComparer.mqh (6.62 KB) ver
IDictionary.mqh (6.88 KB) ver
IEnumerable.mqh (5.31 KB) ver
IEnumerator.mqh (10.39 KB) ver
IList.mqh (5.7 KB) ver
KeyValuePair.mqh (6.34 KB) ver
LinkedList.mqh (28.29 KB) ver
List.mqh (38.77 KB) ver
\MQL4\Include\Internal\TimeSpan\
TimeSpan.mqh (31.7 KB) ver
TimeSpanFormat.mqh (30.28 KB) ver
\MQL4\Include\RegularExpressions\
Regex.mqh (57.05 KB) ver
RegexCapture.mqh (7.86 KB) ver
RegexCharClass.mqh (97.97 KB) ver
RegexCode.mqh (22.25 KB) ver
RegexFCD.mqh (31.25 KB) ver
RegexGroup.mqh (8.72 KB) ver
RegexMatch.mqh (22.94 KB) ver
RegexNode.mqh (32.45 KB) ver
RegexOptions.mqh (14.82 KB) ver
RegexParser.mqh (93.16 KB) ver
RegexRunner.mqh (31.1 KB) ver
RegexTree.mqh (8.47 KB) ver
RegexWriter.mqh (24.26 KB) ver
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Autor real: Microsoft Corporation. Los códigos fuente se han tomado de .Net Framework 4.6.1

Advertencia: la Biblioteca funciona en MetaTrader 4 build 1384 y superior.

Para que funcione, es necesario descomprimir el archivo en la carpeta catálogo_de_datos_del_terminal.
Los códigos de la biblioteca se ubican en la carpeta: <catálogo_de_datos_del_terminal>\MQL4\Include\RegularExpressions\
Podrá encontrar ejemplos de scripts de texto en la carpeta: <catálogo_de_datos_del_terminal>\MQL4\Scripts\RegularExpressionsExamples\

Aquí se presenta la traducción de RegularExpressions con .Net Framework 4.6.1.

Para trabajar con la biblioteca es necesario conectar a su código el archivo Regex.mqh del directorio \MQL4\Include\RegularExpressions\.

Además, junto con la biblioteca existen varios ejemplos demostrativos que a la vez cumplen el papel de casos ejemplares. Todos los jemplos han sido tomados de la página oficial de Microsoft Corporation, y muestran de forma muy clara las diferencias principales de las expresiones regulares en C#, así como las peculiaridades de su uso en MQL4.

Obtenga más información sobre los paquetes de la biblioteca portada RegularExpressions MQL4:

Paquetes
Descripción
CharUnicodeInfo.mqh
txt archivado para determinar las categorías Unicode para todos los caracteres (incluyendo los caracteres no latinos).
RegexCapture.mqh
Representa los resultados de un registro con éxito de parte de la expresión.
RegexCaptureCollection.mqh
Representa un conjunto de registros hechos de un grupo de registros.
RegexGroup.mqh
Representa los resultados de un grupo de registro aparte.
RegexGroupCollections.mqhRetorna un conjunto de grupos registrados en la misma yuxtaposición.
RegexMatch.mqhRepresenta los resultados de una correspondencia separada de una expresión regular.
RegexMatchCollection.mqhRepresenta un conjunto de coincidencias exitosas detectadas mediante la aplicación iterativa de un patrón de expresión regular para la secuencia de entrada.
Regex.mqhRepresenta una expresión regular inmutable.
RegexOptions.mqh Representa valores enumerados que luego se usarán al definir los parámetros de las expresiones regulares.

Parámetros de expresiones regulares a partir del archivo RegexOptions.mqh:

Parámetro
Descripción
None
Parámetros no establecidos.
IgnoreCase
El registro no se tiene en cuenta al buscar coincidencias.
MultilineRepresenta el modo multilínea.
ExplicitCaptureNo abarcar grupos sin nombre. Las únicas selecciones admitidas son grupos claramente denominados o numerados en el formato (?<nombre> parte de la expresión).
SinglelineIndica el modo de línea única.
IgnorePatternWhitespaceQuita del patrón los separadores sin la secuencia escape y activa los comentarios marcados con el símbolo "#".
RightToLeftIndica que la búsqueda se realizará de derecha a izquierda, y no izquierda a derecha.
DebugIndica que el programa funciona en el modo depuración.
ECMAScriptActiva el comportamiento compatible ECMAScript para la expresión. Este valor puede ser utilizado solo de forma conjunta con los valores IgnoreCase y Multiline.


Características del trabajo con RegularExpressions para MQL4:

  1. Como en la versión .Net, en esta biblioteca se ha implementado un repositorio (memoria cache estática) de las expresiones regulares. Todas las expresiones regulares creadas de forma implícita (ejemplares de la clase Regex) se insertan en este repositorio. Este enfoque acelera el funcionamiento de los scripts, con lo que desaparece la necesidad de construir de nuevo las expresiones regulares, si su patrón coincide con uno de los ya existentes. Por defecto, el tamaño del repositorio es igual a 15. El método Regex::CacheSize() retorna o establece la cantidad máxima de entradas en la actual memoria cache invariable de las expresiones regulares compiladas.
  2. La segunda característica a la hora de trabajar con expresiones regulares en MQL4 surge directamente de la primera. Y se trata de la necesidad de limpiar el repositorio mencionado más arriba. Para ello es imprescindible llamar a la función invariable Regex::ClearCache(). Es recomendable llamar a esta función solo cuando finalice el trabajo con las expresiones regulares, de lo contrario, la probabilidad de eliminar indicadores necesarios será muy elevada.
  3. A diferencia de .Net, en MQL4 no se ha implementado el ciclo foreach, y por consiguiente, el trabajo con las enumeraciones será diferente. Ejemplo:
    //--- Código en 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) 
      {
       //--- procesamiento
      }
    
    //--- Código en 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();
       //--- procesamiento
      }
    delete rx;
    delete matches;
    delete en;
    Regex::ClearCache();
    
  4. Como se puede ver en el ejemplo de más arriba, el lenguaje C# permite introducir delante de las líneas el símbolo '@' para ignorar todas las señales de formateo en ella. En MQL4 este enfoque no está previsto, por eso todos los símbolos de сontrol en el patrón de expresiones regulares deben escribirse con claridad.

Al trabajar con esta forma, elegimos el recuadro que nos interese, seleccionamos una columna y el valor de la misma conforme al que se filtrará el recuadro. Pulsamos el botón Find y el recuadro filtrado se representará más abajo, junto con algunas estadísticas sobre el mismo. El botón Save guarda el recuadro representado actual en un archivo csv. El archivo guardado se ubicará igualmente en el área local y tendrá el nombre Result.csv.

Para obtener más información sobre la biblioteca RegularExpressions para MQL4 y sus posibilidades, se ha creado el experto Tests.mqh. En él se ha implementado una mayor cantidad de ejemplos de uso de expresiones regulares que tocan la funcionalidad principal de la biblioteca al completo.

Traducción del ruso realizada por MetaQuotes Ltd
Artículo 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.