StringFormat

该函数格式包括参量和字符串的返回

string  StringFormat(

   string  format,     // 带有格式描述的字符串

   ...     ...         // 参量

   );

参数

format

[in]  字符串包含格式化办法,格式化规则与 PrintFormat 函数相同。

...

[in]  参量,被逗号分开。

返回值

字符串。

示例:

void OnStart()

  {

//--- 字符串变量

   string output_string;

   string temp_string;

   string format_string;

//--- 准备规范标题

   temp_string=StringFormat("Contract specification for %s:\n",_Symbol);

   StringAdd(output_string,temp_string);

//--- 整型值输出

   int digits=(int)SymbolInfoInteger(_Symbol,SYMBOL_DIGITS);

   temp_string=StringFormat("   SYMBOL_DIGITS = %d (number of digits after the decimal point)\n",

                            digits);

   StringAdd(output_string,temp_string);

//--- 小数点后可变数位的双精度值输出

   double point_value=SymbolInfoDouble(_Symbol,SYMBOL_POINT);

   format_string=StringFormat("   SYMBOL_POINT = %%.%df (point value)\n",

                              digits);

   temp_string=StringFormat(format_string,point_value);

   StringAdd(output_string,temp_string);

//--- 整型值输出

   int spread=(int)SymbolInfoInteger(_Symbol,SYMBOL_SPREAD);

   temp_string=StringFormat("   SYMBOL_SPREAD = %d (current spread in points)\n",

                            spread);

   StringAdd(output_string,temp_string);

//--- 整型值输出

   int min_stop=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);

   temp_string=StringFormat("   SYMBOL_TRADE_STOPS_LEVEL = %d (minimal indention in points for Stop orders)\n",

                            min_stop);

   StringAdd(output_string,temp_string);

//--- 无小数部分的双精度值输出

   double contract_size=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_CONTRACT_SIZE);

   temp_string=StringFormat("   SYMBOL_TRADE_CONTRACT_SIZE = %.f (contract size)\n",

                            contract_size);

   StringAdd(output_string,temp_string);

//--- 默认精度的双精度值输出

   double tick_size=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);

   temp_string=StringFormat("   SYMBOL_TRADE_TICK_SIZE = %f (minimal price change)\n",

                            tick_size);

   StringAdd(output_string,temp_string);

//--- 决定库存费计算模式

   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 swaps)"; break;

      case SYMBOL_SWAP_MODE_POINTS: str_swap_mode="SYMBOL_SWAP_MODE_POINTS (in points)"; break;

      case SYMBOL_SWAP_MODE_CURRENCY_SYMBOL: str_swap_mode="SYMBOL_SWAP_MODE_CURRENCY_SYMBOL (in money, in base currency of the symbol)"; break;

      case SYMBOL_SWAP_MODE_CURRENCY_MARGIN: str_swap_mode="SYMBOL_SWAP_MODE_CURRENCY_MARGIN (in money, in margin currency of the symbol)"; break;

      case SYMBOL_SWAP_MODE_CURRENCY_DEPOSIT: str_swap_mode="SYMBOL_SWAP_MODE_CURRENCY_DEPOSIT (in money, in client deposit currency)"; break;

      case SYMBOL_SWAP_MODE_INTEREST_CURRENT: str_swap_mode="SYMBOL_SWAP_MODE_INTEREST_CURRENT (as the specified annual interest from the instrument price at calculation of swap)"; break;

      case SYMBOL_SWAP_MODE_INTEREST_OPEN: str_swap_mode="SYMBOL_SWAP_MODE_INTEREST_OPEN (as the specified annual interest from the position open price)"; break;

      case SYMBOL_SWAP_MODE_REOPEN_CURRENT: str_swap_mode="SYMBOL_SWAP_MODE_REOPEN_CURRENT (by reopening positions by the close price +/- specified number of points)"; break;

      case SYMBOL_SWAP_MODE_REOPEN_BID: str_swap_mode="SYMBOL_SWAP_MODE_REOPEN_BID (by reopening positions by the current Bid price +/- specified number of points)"; break;

     }

//--- 字符串值输出

   temp_string=StringFormat("   SYMBOL_SWAP_MODE = %s\n",

                            str_swap_mode);

   StringAdd(output_string,temp_string);

//--- 默认精度的双精度值输出

   double swap_long=SymbolInfoDouble(_Symbol,SYMBOL_SWAP_LONG);

   temp_string=StringFormat("   SYMBOL_SWAP_LONG = %f (long swap value)\n",

                            swap_long);

   StringAdd(output_string,temp_string);

//--- 默认精度的双精度值输出

   double swap_short=SymbolInfoDouble(_Symbol,SYMBOL_SWAP_SHORT);

   temp_string=StringFormat("   SYMBOL_SWAP_SHORT = %f (short swap value)\n",

                            swap_short);

   StringAdd(output_string,temp_string);

//--- 决定交易模式

   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 (trade is disabled for the symbol)"; break;

      case SYMBOL_TRADE_MODE_LONGONLY: str_trade_mode="SYMBOL_TRADE_MODE_LONGONLY (only long positions are allowed)"; break;

      case SYMBOL_TRADE_MODE_SHORTONLY: str_trade_mode="SYMBOL_TRADE_MODE_SHORTONLY (only short positions are allowed)"; break;

      case SYMBOL_TRADE_MODE_CLOSEONLY: str_trade_mode="SYMBOL_TRADE_MODE_CLOSEONLY (only position close operations are allowed)"; break;

      case SYMBOL_TRADE_MODE_FULL: str_trade_mode="SYMBOL_TRADE_MODE_FULL (no trade restrictions)"; break;

     }

//--- 字符串值输出

   temp_string=StringFormat("   SYMBOL_TRADE_MODE = %s\n",

                            str_trade_mode);

   StringAdd(output_string,temp_string);

//--- 压缩格式的双精度值输出

   double volume_min=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);

   temp_string=StringFormat("   SYMBOL_VOLUME_MIN = %g (minimal volume for a deal)\n",volume_min);

   StringAdd(output_string,temp_string);

//--- 压缩格式的双精度值输出

   double volume_step=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);

   temp_string=StringFormat("   SYMBOL_VOLUME_STEP = %g (minimal volume change step)\n",volume_step);

   StringAdd(output_string,temp_string);

//--- 压缩格式的双精度值输出

   double volume_max=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);

   temp_string=StringFormat("   SYMBOL_VOLUME_MAX = %g (maximal volume for a deal)\n",volume_max);

   StringAdd(output_string,temp_string);

//--- 确定合约价格计算模式

   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 (futures)";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 for indices)";break;

      case SYMBOL_CALC_MODE_CFDLEVERAGE:str_calc_mode="SYMBOL_CALC_MODE_CFDLEVERAGE (CFD at leverage trading)";break;

      case SYMBOL_CALC_MODE_EXCH_STOCKS:str_calc_mode="SYMBOL_CALC_MODE_EXCH_STOCKS (trading securities on a stock exchange)";break;

      case SYMBOL_CALC_MODE_EXCH_FUTURES:str_calc_mode="SYMBOL_CALC_MODE_EXCH_FUTURES (trading futures contracts on a stock exchange)";break;

      case SYMBOL_CALC_MODE_EXCH_FUTURES_FORTS:str_calc_mode="SYMBOL_CALC_MODE_EXCH_FUTURES_FORTS (trading futures contracts on FORTS)";break;

     }

//--- 字符串值输出

   temp_string=StringFormat("   SYMBOL_TRADE_CALC_MODE = %s\n",

                            str_calc_mode);

   StringAdd(output_string,temp_string);

//--- 小数点后两位的双精度值输出

   double margin_initial=SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL);

   temp_string=StringFormat("   SYMBOL_MARGIN_INITIAL = %.2f (initial margin)\n",

                            margin_initial);

   StringAdd(output_string,temp_string);

//--- 小数点后两位的双精度值输出

   double margin_maintenance=SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_MAINTENANCE);

   temp_string=StringFormat("   SYMBOL_MARGIN_MAINTENANCE = %.2f (maintenance margin)\n",

                            margin_maintenance);

   StringAdd(output_string,temp_string);

//--- 整型值输出

   int freeze_level=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_FREEZE_LEVEL);

   temp_string=StringFormat("   SYMBOL_TRADE_FREEZE_LEVEL = %d (order freeze level in points)",

                            freeze_level);

   StringAdd(output_string,temp_string);

   Print(output_string);

   Comment(output_string);

/* 执行结果

    EURUSD的合约规范:

     SYMBOL_DIGITS = 5 (小数点后的数位)

     SYMBOL_POINT = 0.00001 (点值)

     SYMBOL_SPREAD = 10 (当前点差的点)

     SYMBOL_TRADE_STOPS_LEVEL = 18 (止损订单的最小缩进点)

     SYMBOL_TRADE_CONTRACT_SIZE = 100000 (合约大小)

     SYMBOL_TRADE_TICK_SIZE = 0.000010 (最小价格变动)

     SYMBOL_SWAP_MODE = SYMBOL_SWAP_MODE_POINTS (点)

     SYMBOL_SWAP_LONG = -0.700000 (买入订单的库存费的值)

     SYMBOL_SWAP_SHORT = -1.000000 (卖出订单的库存费的值)

     SYMBOL_TRADE_MODE = SYMBOL_TRADE_MODE_FULL (无交易限制)

     SYMBOL_VOLUME_MIN = 0.01 (一笔成交的最小交易量)

     SYMBOL_VOLUME_STEP = 0.01 (最小交易量变化步骤)

     SYMBOL_VOLUME_MAX = 500 (一笔成交的最大交易量)

     SYMBOL_TRADE_CALC_MODE = SYMBOL_CALC_MODE_FOREX (外汇)

     SYMBOL_MARGIN_INITIAL = 0.00 (初始预付款)

     SYMBOL_MARGIN_MAINTENANCE = 0.00 (维持预付款)

     SYMBOL_TRADE_FREEZE_LEVEL = 0 (订单冻结水平点)

*/

  }

另见

PrintFormat, DoubleToString,ColorToString, TimeToString