- Alert
- CheckPointer
- Comment
- CryptEncode
- CryptDecode
- DebugBreak
- ExpertRemove
- GetPointer
- GetTickCount
- GetTickCount64
- GetMicrosecondCount
- MessageBox
- PeriodSeconds
- PlaySound
- PrintFormat
- ResetLastError
- ResourceCreate
- ResourceFree
- ResourceReadImage
- ResourceSave
- SetReturnError
- SetUserError
- Sleep
- TerminalClose
- TesterHideIndicators
- TesterStatistics
- TesterStop
- TesterDeposit
- TesterWithdrawal
- TranslateKey
- ZeroMemory
PrintFormat
Formatea e imprime juegos de símbolos y valores en el registro histórico del Asesor Experto conforme al formato predefinido.
void PrintFormat(
|
Parámetros
format_string
[in] Una línea de formato se compone de símbolos simples y si los argumentos siguen la línea de formato, también contiene la especificación de formato.
...
[in] Cualquieres valores de tipos simples separados por comas. El número total de parámetros no puede superar 64, inclusive la línea de formato.
Valor devuelto
Una cadena.
Nota
Durante el trabajo en el Probador de Estrategias en el modo de optimización, la función PrintFormat() no se ejecuta.
La cantidad, orden y tipo de parámetros tiene que corresponder exactamente a la composición de los especificadores, en caso contrario el resultado de la impresión estará indefinida. En vez de la función PrintFormat() se puede usar la función printf().
Si después de la línea de formato siguen los parámetros, esta línea debe contener las especificaciones del formato que denotan el formato de salida de estos parámetros. La especificación del formato siempre se empieza con el signo del porcentaje (%).
Una línea de formato se lee de izquierda a derecha. Al encontrar la primera especificación del formato (si hay), el valor del primer parámetro después de la línea de formato se transforma y se saca conforme a la especificación establecida. La segunda especificación provoca la transformación y salida del segundo parámetro, y así sucesivamente hasta el fin de la línea de formato.
La especificación del formato tiene la siguiente forma:
%[flags][width][.precision][{h | l | ll | I32 | I64}]type
Cada campo de la especificación de formato es un símbolo simple o un número que denota una opción de formato corriente. La especificación de formato más simple contiene sólo el signo de porcentaje (%) y un símbolo que define el tipo de parámetro de salida (por ejemplo %s). Si en la línea de formato hay que mostrar el signo de porcentaje, es necesario usar la especificación de formato %%.
flags
Bandera |
Descripción |
Comportamiento por defecto |
---|---|---|
(menos) |
Alineación por el lado izquierdo dentro del ancho establecido |
Alineación por el lado derecho |
+ (más) |
Muestra de signos + o - para los tipos con signos |
El signo se muestra sólo si el valor es negativo |
0 (cero) |
Antes de un valor de salida se añaden los ceros dentro del ancho establecido. Si la bandera 0 está especificada con un formato entero (i, u, x, X, o, d) y está determinada la especificación de precisión (por ejemplo, %04.d), entonces 0 se ignora. |
Nada se añade |
espacio |
Antes de un valor de salida se pone un espacio, si el valor es de signo o positivo |
Los espacios no se insertan |
# |
Si se usa junto con el formato o, x o X, entonces antes del valor de salida se añade 0, 0x o 0X respectivamente. |
Nada se añade |
|
Si se usa junto con el formato e, E, a o A, el valor siempre se muestra con punto decimal. |
El punto decimal se muestra sólo si hay una parte fraccionaria no nula |
|
Si se usa junto con el formato g o G, la bandera determina la presencia del punto decimal en el valor de salida e impide el recorte de ceros principales. La bandera # se ignora durante el uso compartido con los formatos c, d, i, u, s. |
El punto decimal se muestra sólo si hay una parte fraccionaria no nula. Los ceros principales se cortan |
width #
El número decimal no negativo que establece el número mínimo de símbolos de salida del valor formateado. Si el número de símbolos de salida es menos que el ancho especificado, entonces se añade la cantidad correspondiente de espacios a la izquierda o a la derecha dependiendo de la alineación (bandera ). Si hay bandera cero (0), se añade la cantidad correspondiente de ceros antes del valor de salida. Si el número de símbolos de salida es más que el ancho especificado, entonces el valor de salida nunca se corta.
Si el asterisco (*) está especificado como el ancho, el valor del tipo int tiene que estar en la lista de parámetros pasados en el lugar correspondiente. Este valor va a ser usado para especificar el ancho del valor de salida.
precision #
El número decimal no negativo que determina la precisión de salida, es decir, el número de cifras después del punto decimal. A diferencia de la especificación del ancho, la especificación de precisión puede recortar parte del valor fraccionario con redondeo o sin él.
Para diferentes tipos (type) de formato la especificación de precisión se aplica de diferentes maneras.
Tipos |
descripción |
Comportamiento por defecto |
---|---|---|
a, A |
La especificación de precisión fija el número de dígitos después del punto decimal. |
Precisión por defecto 6. |
c, C |
No se usa. |
|
d, i, u, o, x, X |
Fija el número mínimo de cifras de salida. Si el número de cifras en el parámetro correspondiente es menos de la precisión indicada, el valor de salida se completa con ceros por la izquierda. El valor de salida no se recorta, si el número de cifras de salida es más de la precisión indicada. |
Precisión por defecto 1. |
e, E, f |
Fija el número de dígitos después del punto decimal. La última cifra se redondea. |
Precisión por defecto 6. Si está especificada la precisión 0 o falta la parte fraccionaria, el punto decimal no se muestra. |
g, G |
Fija el número máximo de cifras significantes. |
Se muestran 6 cifras significantes. |
s |
Fija el número de símbolos de salida de una línea. Si el largo de una línea supera el valor de la precisión, esta línea se recorta en la salida. |
Se muestra toda la línea. |
PrintFormat("1. %s", _Symbol);
|
h | l | ll | I32 | I64
Especificación de tamaños de datos pasados como parámetros.
Tipo de parámetro |
Prefijo utilizado |
Especificador compartido del tipo |
---|---|---|
int |
l (L minúscula) |
d, i, o, x, or X |
uint |
l (L minúscula) |
o, u, x, or X |
long |
ll (dos L minúsculas) |
d, i, o, x, or X |
short |
h |
d, i, o, x, or X |
ushort |
h |
o, u, x, or X |
int |
I32 |
d, i, o, x, or X |
uint |
I32 |
o, u, x, or X |
long |
I64 |
d, i, o, x, or X |
ulong |
I64 |
o, u, x, or X |
type #
El especificador del tipo es el único campo obligatorio para la salida formateada.
Símbolo |
Tipo |
Formato de salida |
---|---|---|
c |
int |
Símbolo del tipo short (Unicode) |
C |
int |
Símbolo del tipo char (ANSI) |
d |
int |
Entero decimal con signo |
i |
int |
Entero decimal con signo |
o |
int |
Entero octal sin signo |
u |
int |
Entero decimal sin signo |
x |
int |
Entero hexadecimal sin signo, utilizando "abcdef" |
X |
int |
Entero hexadecimal sin signo, utilizando "ABCDEF" |
e |
double |
Valor real en formato [ ]d.dddd e [sign]ddd, donde la d es una cifra decimal, dddd una o más cifras decimales, ddd número de tres cifras que determina el tamaño de exponente, sign signo más o menos |
E |
double |
Similar al formato e, salvo que el signo de exponente se imprime con mayúscula (E en vez de e) |
f |
double |
Valor real en formato [ ]dddd.dddd, donde dddd una o más cifras decimales. El número de dígitos antes del punto decimal depende de la magnitud del valor del número. El número de dígitos después del punto decimal depende la precisión necesaria. |
g |
double |
Valor real mostrado en el formato f o e, dependiendo de cuál de las salidas va a ser más compacta. |
G |
double |
Valor real mostrado en el formato f o E, dependiendo de cuál de las salidas va a ser más compacta. |
a |
double |
Valor real en el formato [−]0xh.hhhh p±dd, donde h.hhhh es la mantisa en forma de cifras hexadecimales, usando "abcdef", dd una o más cifras de la exponente. El número de dígitos después del punto decimal se determina por laespecificación de precisión |
A |
double |
Valor real en el formato [−]0xh.hhhh P±dd, donde h.hhhh es la mantisa en forma de cifras hexadecimales, usando "ABCDEF", dd una o más cifras de la exponente. El número de dígitos después del punto decimal se determina por la especificación de precisión |
s |
string |
Muestra de línea |
En vez de la función PrintFormat() se puede usar la función printf().
Ejemplo:
void OnStart() |
Véase también