Descargar MetaTrader 5

StringFormat

Formatea los parámetros obtenidos y devuelve una cadena.

string  StringFormat(
   string  format,     // cadena con descripción de formato
   ...     ...         // parámetros
   );

Parámetros

format

[in]  Cadena que contiene el modo de formatear. Las reglas de formatear son las mismas que para la función PrintFormat

...

[in]  Parámetros separados por coma.

Valor devuelto

Cadena.

Ejemplo:

void OnStart()
 {
//--- variables string
 string output_string;
 string temp_string;
 string format_string;
//--- preparamos encabezado de especificacion
 temp_string=StringFormat("Especificación del contrato en %s:\n",_Symbol);
 StringAdd(output_string,temp_string);
//--- mostrar valor int
 int digits=(int)SymbolInfoInteger(_Symbol,SYMBOL_DIGITS);
 temp_string=StringFormat(" SYMBOL_DIGITS = %d (número de dígitos tras la coma)\n",
 digits);
 StringAdd(output_string,temp_string);
//--- mostrar valor double con el número variable de dígitos tras la coma decimal
 double point_value=SymbolInfoDouble(_Symbol,SYMBOL_POINT);
 format_string=StringFormat(" SYMBOL_POINT = %%.%df (valor de un punto)\n",
 digits);
 temp_string=StringFormat(format_string,point_value);
 StringAdd(output_string,temp_string);
//--- mostrar valor int
 int spread=(int)SymbolInfoInteger(_Symbol,SYMBOL_SPREAD);
 temp_string=StringFormat(" SYMBOL_SPREAD = %d (spread actual en puntos)\n",
 spread);
 StringAdd(output_string,temp_string);
//--- mostrar valor int
 int min_stop=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);
 temp_string=StringFormat(" SYMBOL_TRADE_STOPS_LEVEL = %d (sangría mínima en puntos para las órdenes stop)\n",
 min_stop);
 StringAdd(output_string,temp_string);
//--- mostrar valor double sin parte fraccionada
 double contract_size=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_CONTRACT_SIZE);
 temp_string=StringFormat(" SYMBOL_TRADE_CONTRACT_SIZE = %.f (tamaño del contrato)\n",
 contract_size);
 StringAdd(output_string,temp_string);
//--- mostrar valor double con la precisión predefinida
 double tick_size=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);
 temp_string=StringFormat(" SYMBOL_TRADE_TICK_SIZE = %f (cambio mínimo del precio)\n",
 tick_size);
 StringAdd(output_string,temp_string);
//--- determinar el modo para calcular los swaps
 int swap_mode=(int)SymbolInfoInteger(_Symbol,SYMBOL_SWAP_MODE);
 string str_swap_mode;
 switch(swap_mode)
 {
 case SYMBOL_SWAP_MODE_DISABLED: str_swap_mode="SYMBOL_SWAP_MODE_DISABLED (no hay swaps)"; break;
 case SYMBOL_SWAP_MODE_POINTS: str_swap_mode="SYMBOL_SWAP_MODE_POINTS (en puntos)"; break;
 case SYMBOL_SWAP_MODE_CURRENCY_SYMBOL: str_swap_mode="SYMBOL_SWAP_MODE_CURRENCY_SYMBOL (en dinero, en la divisa base del símbolo)"; break;
 case SYMBOL_SWAP_MODE_CURRENCY_MARGIN: str_swap_mode="SYMBOL_SWAP_MODE_CURRENCY_MARGIN (en dinero, en la divisa del margen del símbolo)"; break;
 case SYMBOL_SWAP_MODE_CURRENCY_DEPOSIT: str_swap_mode="SYMBOL_SWAP_MODE_CURRENCY_DEPOSIT (en dinero, en la divisa del dipósito del cliente)"; break;
 case SYMBOL_SWAP_MODE_INTEREST_CURRENT: str_swap_mode="SYMBOL_SWAP_MODE_INTEREST_CURRENT (en por cientos anuales del precio del instrumento para el momento del cálculo del swap)"; break;
 case SYMBOL_SWAP_MODE_INTEREST_OPEN: str_swap_mode="SYMBOL_SWAP_MODE_INTEREST_OPEN (e por cientos anuales del precio de apertura de la posición para el símbolo)"; break;
 case SYMBOL_SWAP_MODE_REOPEN_CURRENT: str_swap_mode="SYMBOL_SWAP_MODE_REOPEN_CURRENT (reapertura de la posición para el precio del cierre +/- número especificado de puntos)"; break;
 case SYMBOL_SWAP_MODE_REOPEN_BID: str_swap_mode="SYMBOL_SWAP_MODE_REOPEN_BID (reapertura de la posición para el precio actual +/- número especificado de puntos)"; break;
 }
//--- mostrar valor string
 temp_string=StringFormat(" SYMBOL_SWAP_MODE = %s\n",
 str_swap_mode);
 StringAdd(output_string,temp_string);
//--- mostrar valor double con la precisión predefinida
 double swap_long=SymbolInfoDouble(_Symbol,SYMBOL_SWAP_LONG);
 temp_string=StringFormat(" SYMBOL_SWAP_LONG = %f (swap de compra)\n",
 swap_long);
 StringAdd(output_string,temp_string);
//--- mostrar valor double con precisión predefinida
 double swap_short=SymbolInfoDouble(_Symbol,SYMBOL_SWAP_SHORT);
 temp_string=StringFormat(" SYMBOL_SWAP_SHORT = %f (swap de venta)\n",
 swap_short);
 StringAdd(output_string,temp_string);
//--- determinar el modo de trading
 int trade_mode=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_MODE);
 string str_trade_mode;
 switch(trade_mode)
 {
 case SYMBOL_TRADE_MODE_DISABLED: str_trade_mode="SYMBOL_TRADE_MODE_DISABLED (está prohibido tradear con el símbolo)"; break;
 case SYMBOL_TRADE_MODE_LONGONLY: str_trade_mode="SYMBOL_TRADE_MODE_LONGONLY (están permitidas sólo las compras)"; break;
 case SYMBOL_TRADE_MODE_SHORTONLY: str_trade_mode="SYMBOL_TRADE_MODE_SHORTONLY (están permitidas sólo las ventas)"; break;
 case SYMBOL_TRADE_MODE_CLOSEONLY: str_trade_mode="SYMBOL_TRADE_MODE_CLOSEONLY (están permitidas sólo las operaciones del cierre de las posiciones)"; break;
 case SYMBOL_TRADE_MODE_FULL: str_trade_mode="SYMBOL_TRADE_MODE_FULL (no hay limitaciones para las operaciones comerciales)"; break;
 }
//--- mostrar valor string
 temp_string=StringFormat(" SYMBOL_TRADE_MODE = %s\n",
 str_trade_mode);
 StringAdd(output_string,temp_string);
//--- mostrar valor double en modo compacto
 double volume_min=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
 temp_string=StringFormat(" SYMBOL_VOLUME_MIN = %g (volumen mínimo de la transacción)\n",volume_min);
 StringAdd(output_string,temp_string);
//--- mostrar valor double en modo compacto
 double volume_step=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
 temp_string=StringFormat(" SYMBOL_VOLUME_STEP = %g (paso mínimo del cambio del volumen de la transacción)\n",volume_step);
 StringAdd(output_string,temp_string);
//--- mostrar valor double en modo compacto
 double volume_max=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
 temp_string=StringFormat(" SYMBOL_VOLUME_MAX = %g (volumen máximo de la transacción)\n",volume_max);
 StringAdd(output_string,temp_string);
//--- determinar el modo del cálculo de fondos del margen
 int calc_mode=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_CALC_MODE);
 string str_calc_mode;
 switch(calc_mode)
 {
 case SYMBOL_CALC_MODE_FOREX:str_calc_mode="SYMBOL_CALC_MODE_FOREX (Forex)";break;
 case SYMBOL_CALC_MODE_FUTURES:str_calc_mode="SYMBOL_CALC_MODE_FUTURES (futuros)";break;
 case SYMBOL_CALC_MODE_CFD:str_calc_mode="SYMBOL_CALC_MODE_CFD (CFD)";break;
 case SYMBOL_CALC_MODE_CFDINDEX:str_calc_mode="SYMBOL_CALC_MODE_CFDINDEX (CFD de índices)";break;
 case SYMBOL_CALC_MODE_CFDLEVERAGE:str_calc_mode="SYMBOL_CALC_MODE_CFDLEVERAGE (CFD para el trading con apalancamiento)";break;
 case SYMBOL_CALC_MODE_EXCH_STOCKS:str_calc_mode="SYMBOL_CALC_MODE_EXCH_STOCKS (trading con valores en la bolsa)";break;
 case SYMBOL_CALC_MODE_EXCH_FUTURES:str_calc_mode="SYMBOL_CALC_MODE_EXCH_FUTURES (trading con contratos de futuros en la bolsa)";break;
 case SYMBOL_CALC_MODE_EXCH_FUTURES_FORTS:str_calc_mode="SYMBOL_CALC_MODE_EXCH_FUTURES_FORTS (trading con contratos de futuros en FORTS)";break;
 }
//--- mostra valor string
 temp_string=StringFormat(" SYMBOL_TRADE_CALC_MODE = %s\n",
 str_calc_mode);
 StringAdd(output_string,temp_string);
//--- mostrar valor double con 2 dígitos tras la coma decimal
 double margin_initial=SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL);
 temp_string=StringFormat(" SYMBOL_MARGIN_INITIAL = %.2f (margen inicial)\n",
 margin_initial);
 StringAdd(output_string,temp_string);
//--- mostrar valor double con 2 dígitos tras la coma decimal
 double margin_maintenance=SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_MAINTENANCE);
 temp_string=StringFormat(" SYMBOL_MARGIN_MAINTENANCE = %.2f (margen de soporte)\n",
 margin_maintenance);
 StringAdd(output_string,temp_string);
//--- mostrar valor int
 int freeze_level=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_FREEZE_LEVEL);
 temp_string=StringFormat(" SYMBOL_TRADE_FREEZE_LEVEL = %d (distancia de congelación de la operación en puntos)",
 freeze_level);
 StringAdd(output_string,temp_string);
 Print(output_string);
 Comment(output_string);
/* resultado de ejecución
 Especificación del contrato para EURUSD:
 SYMBOL_DIGITS = 5 (número de dígitos tras la coma)
 SYMBOL_POINT = 0.00001 (valor de un punto)
 SYMBOL_SPREAD = 10 (spread actual en puntos)
 SYMBOL_TRADE_STOPS_LEVEL = 18 (sangría mínima en puntos para las órdenes stop)
 SYMBOL_TRADE_CONTRACT_SIZE = 100000 (tamaño del contrato)
 SYMBOL_TRADE_TICK_SIZE = 0.000010 (cambio mínimo del precio)
 SYMBOL_SWAP_MODE = SYMBOL_SWAP_MODE_POINTS (en puntos)
 SYMBOL_SWAP_LONG = -0.700000 (swap de compra)
 SYMBOL_SWAP_SHORT = -1.000000 (swap de venta)
 SYMBOL_TRADE_MODE = SYMBOL_TRADE_MODE_FULL (no hay limitaciones para las operaciones comerciales)
 SYMBOL_VOLUME_MIN = 0.01 (valor mínimo de la transacción)
 SYMBOL_VOLUME_STEP = 0.01 (paso mínimo del cambio del volumen de la transacción)
 SYMBOL_VOLUME_MAX = 500 (valor máximo de la transacción)
 SYMBOL_TRADE_CALC_MODE = SYMBOL_CALC_MODE_FOREX (Forex)
 SYMBOL_MARGIN_INITIAL = 0.00 (margen inicial)
 SYMBOL_MARGIN_MAINTENANCE = 0.00 (margen de soporte)
 SYMBOL_TRADE_FREEZE_LEVEL = 0 (distancia de congelación de las operaciones en puntos)
*/
 }

Véase también

PrintFormat, DoubleToString,ColorToString, TimeToString


Actualizado: 2015.12.03