¡¡¡¡Si estos artículos se convierten en una serie, será simplemente genial!!!!
Cuánto echaba de menos este tipo de artículos hace unos cuatro años, cuando empecé a aprender a escribir código.
Y ahora sigo encontrando cosas en ellos que aún no sabía.
Especialmente el anterior sobre StringFormat y PrintFormat es muy informativo, teniendo en cuenta que la ayuda sobre estas funciones es muy pobre.
¡Gracias al autor por artículos tan interesantes y necesarios!
- www.mql5.com
Muy buen artículo. ¿Dónde está el archivo mqh para que lo descarguemos?
Los archivos no se adjuntan al artículo, ya que fue concebido como una especie de información de referencia ampliada. Usted puede simplemente utilizar Copy-Paste códigos del artículo en el editor de código MetaEditor.
Los archivos no se adjuntan al artículo, ya que fue concebido como una especie de información de referencia ampliada. Usted puede simplemente utilizar Copy-Paste códigos del artículo en el editor de código MetaEditor.
Foro sobre trading, sistemas automatizados de trading y prueba de estrategias de trading
Vladimir Karputov, 2016.10.15 08:38 AM
Por favor, escriba en ruso en la parte rusa del foro.Lo olvidé, supongo. Gracias.
//+------------------------------------------------------------------+ //| Registra la descripción de todos los campos de la estructura MqlRates. //+------------------------------------------------------------------+ void MqlRatesPrint(const string symbol,const ENUM_TIMEFRAMES timeframe,const MqlRates &rates, const bool short_entry=true,const uint header_width=0,const uint indent=0,int index=WRONG_VALUE) { //--- Declara una variable para almacenar el resultado string res=""; //--- Obtener el número de decimales y el valor de la cadena de tiempo int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS); string tf=StringSubstr(EnumToString(timeframe==PERIOD_CURRENT ? Period() : timeframe),7); string num=(index==WRONG_VALUE ? ":" : StringFormat("[%ld]:",index)); //--- Si el registro es corto - salida de datos de barras al registro en formato Symbol TF[index]: Time, O, H, L, C, S, V/VR if(short_entry) { res=StringFormat("%s %s%s %s, O: %.*f, H: %.*f, L: %.*f, C: %.*f, S: %2ld, V: %5lld, RV: %lld", symbol,tf,num,(string)rates.time,dg,rates.open,dg,rates.high,dg,rates.low,dg,rates.close,rates.spread,rates.tick_volume,rates.real_volume); Print(res); } /* Ejemplo de salida: GBPUSD H1: 2023.07.21 08:00:00, O: 1.28794, H: 1.28848, L: 1.28772, C: 1.28772, S: 4, V: 448, RV: 0 */ //--- De lo contrario. else { //--- crear una cadena que describa todos los datos de la estructura con sangría y anchura especificada del campo de cabecera res=StringFormat("%s %s%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s",symbol,tf,num, MqlRatesTime(rates,header_width,indent), MqlRatesOpen(symbol,rates,header_width,indent), MqlRatesHigh(symbol,rates,header_width,indent), MqlRatesLow(symbol,rates,header_width,indent), MqlRatesClose(symbol,rates,header_width,indent), MqlRatesTickVolume(rates,header_width,indent), MqlRatesSpread(rates,header_width,indent), MqlRatesRealVolume(rates,header_width,indent) ); //--- Envía la cadena recibida al libro de registro Print(res); } /* Ejemplo de salida (si Last no es null): Hora: 2023.07.20 14:42:33 Oferta: 1.28958 Demanda: 1.28962 Último: 1.28947 Volumen: 33 Hora msc: 2023.07.20 14:42:33.401 Flags: BID|ASK Volumen Real: 33.45 Ejemplo de salida (si Last es null): Hora: 2023.07.20 14:42:33 Oferta: 1.28958 Ask: 1.28962 Hora msc: 2023.07.20 14:42:33.401 Flags: BID|ASK */ } //+------------------------------------------------------------------+
Propongo completar la funcionalidad.
string GetPrintSource( const string Source );
Devuelve la fuente de la función de impresión por la fuente de la estructura.
string GetPrintSource( const string Source ) { return("string ToString( const STRUCT &Data ) { return(\"i = \" + (string)Data.i); }"); } void OnStart() { Print(GetPrintSource("struct STRUCT { int i; };")); }Hice algo similar aquí, pero con entradas.
- www.mql5.com
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado Estructuras en MQL5 y métodos para imprimir sus datos:
En este artículo veremos las estructuras MqlDateTime, MqlTick, MqlRates, MqlBookInfo y los métodos para imprimir datos desde estas estructuras. Para imprimir todos los campos de una estructura, existe la función estándar ArrayPrint(), que muestra en un cómodo formato tabular los datos contenidos en un array con el tipo de estructura que se está procesando.
Las estructuras MqlParam y MqlTradeRequest se utilizan para transmitir información técnica para crear indicadores y enviar solicitudes comerciales al servidor. Nosotros mismos completaremos los campos obligatorios de las estructuras según el resultado requerido del envío de datos en la estructura rellenada. Es decir, estas estructuras no necesitan especialmente imprimir los datos con los que el programador ha rellanado los campos de dichas estructuras de forma independiente.
Sin embargo, las estructuras restantes retornarán el resultado de las consultas, mientras que el subsistema del terminal o el servidor comercial completará cada campo. Obtener los datos de estas estructuras, analizar los campos de las estructuras completados de forma programática o imprimirlos en un registro para su posterior análisis manual resulta muy cómodo y necesario tanto para tomar decisiones de forma programática como para comprender y encontrar la ubicación de un error lógico.

Para imprimir todos los campos de una estructura, existe la función estándar ArrayPrint(), que muestra en un cómodo formato tabular los datos contenidos en un array con el tipo de estructura procesada. Pero a veces necesitamos imprimir los datos de la estructura en otro formato, lo cual puede resultar más cómodo que una representación tabular. Por ejemplo, mostrar todos los campos de la estructura en una línea, con los encabezados y datos correspondientes. Esto puede resultar más cómodo al analizar grandes cantidades de datos. Al mismo tiempo, a veces necesitamos tener una representación más detallada, con una descripción de los campos de la estructura y una representación diferente de los datos correspondientes.Autor: Artyom Trishkin