Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5

RegularExpressions en MQL4 para trabajar con expresiones frecuentes - librería para MetaTrader 4
- Publicado por:
- MetaQuotes
- Visualizaciones:
- 1308
- Ranking:
- Publicado:
- 2017.10.09 09:08
- Actualizado:
- 2018.09.12 09:59
-
¿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.mqh | Retorna un conjunto de grupos registrados en la misma yuxtaposición. |
RegexMatch.mqh | Representa los resultados de una correspondencia separada de una expresión regular. |
RegexMatchCollection.mqh | Representa 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.mqh | Representa 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. |
Multiline | Representa el modo multilínea. |
ExplicitCapture | No abarcar grupos sin nombre. Las únicas selecciones admitidas son grupos claramente denominados o numerados en el formato (?<nombre> parte de la expresión). |
Singleline | Indica el modo de línea única. |
IgnorePatternWhitespace | Quita del patrón los separadores sin la secuencia escape y activa los comentarios marcados con el símbolo "#". |
RightToLeft | Indica que la búsqueda se realizará de derecha a izquierda, y no izquierda a derecha. |
Debug | Indica que el programa funciona en el modo depuración. |
ECMAScript | Activa 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:
- 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.
- 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.
- 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();
- 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

Not really profitable but the code fits on one page.

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

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.

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