跳至内容

Symbol Properties

符号属性

市场信息标识符,用于与MarketInfo()函数配合使用。它可以是以下值之一:

ID描述
MODE_LOW1低日价格
MODE_HIGH2高日价格
MODE_TIME5最后传入的 tick 时间(最后已知的服务器时间)
MODE_BID9最后传入的买入价。对于当前符号,存储在预定义变量 Bid 中
MODE_ASK10最后传入的卖出价。对于当前符号,存储在预定义变量 Ask 中
MODE_POINT11报价货币中的点数大小。对于当前符号,存储在预定义变量 Point 中
MODE_DIGITS12符号价格中小数点后的位数。对于当前符号,存储在预定义变量 Digits 中
MODE_SPREAD13点数形式的价差值
MODE_STOPLEVEL14点数形式的止损水平

MODE_STOPLEVEL 的零值意味着没有对止损/获利盘最小距离的限制,或者交易服务器使用某些外部机制进行动态水平控制,这些机制无法在客户端终端中转换。在第二种情况下,GetLastError() 可以返回错误 130,因为 MODE_STOPLEVEL 在这里实际上是“浮动”的。
MODE_LOTSIZE15基础货币中的手数大小
MODE_TICKVALUE16存款货币中的 tick 值
MODE_TICKSIZE17点数形式的 tick 大小
MODE_SWAPLONG18买入订单的 Swap
MODE_SWAPSHORT19卖出订单的 Swap
MODE_STARTING20市场开始日期(通常用于期货)
MODE_EXPIRATION21市场到期日期(通常用于期货)
MODE_TRADEALLOWED22允许对该符号进行交易
MODE_MINLOT23允许的最小手数金额
MODE_LOTSTEP24更改手数的步长
MODE_MAXLOT25允许的最大手数金额
MODE_SWAPTYPE26Swap 计算方式。0 - 以点数计算;1 - 以符号基础货币计算;2 - 通过利息计算;3 - 以保证金货币计算
MODE_PROFITCALCMODE27利润计算模式。0 - 外汇;1 - CFD;2 - 期货
MODE_MARGINCALCMODE28保证金计算模式。0 - 外汇;1 - CFD;2 - 期货;3 - 指数 CFD
MODE_MARGININITIAL291手订单的初始保证金要求
MODE_MARGINMAINTENANCE30为1手订单计算的维持未平仓订单的保证金
MODE_MARGINHEDGED31为1手订单计算的对冲保证金
MODE_MARGINREQUIRED32开仓买入1手订单所需的自由保证金
MODE_FREEZELEVEL33订单冻结水平(以点数计)。如果执行价格位于冻结水平定义的范围内,则无法修改、取消或关闭订单
MODE_CLOSEBY_ALLOWED34允许使用OrderCloseBy()来关闭指定符号上的相反订单

示例:

//+------------------------------------------------------------------+
//| The script prints information on symbol                          |
//+------------------------------------------------------------------+
void OnStart()
  {
   Print("Symbol=",Symbol());
   Print("Low day price=",MarketInfo(Symbol(),MODE_LOW));
   Print("High day price=",MarketInfo(Symbol(),MODE_HIGH));
   Print("The last incoming tick time=",(MarketInfo(Symbol(),MODE_TIME)));
   Print("Last incoming bid price=",MarketInfo(Symbol(),MODE_BID));
   Print("Last incoming ask price=",MarketInfo(Symbol(),MODE_ASK));
   Print("Point size in the quote currency=",MarketInfo(Symbol(),MODE_POINT));
   Print("Digits after decimal point=",MarketInfo(Symbol(),MODE_DIGITS));
   Print("Spread value in points=",MarketInfo(Symbol(),MODE_SPREAD));
   Print("Stop level in points=",MarketInfo(Symbol(),MODE_STOPLEVEL));
   Print("Lot size in the base currency=",MarketInfo(Symbol(),MODE_LOTSIZE));
   Print("Tick value in the deposit currency=",MarketInfo(Symbol(),MODE_TICKVALUE));
   Print("Tick size in points=",MarketInfo(Symbol(),MODE_TICKSIZE));
   Print("Swap of the buy order=",MarketInfo(Symbol(),MODE_SWAPLONG));
   Print("Swap of the sell order=",MarketInfo(Symbol(),MODE_SWAPSHORT));
   Print("Market starting date (for futures)=",MarketInfo(Symbol(),MODE_STARTING));
   Print("Market expiration date (for futures)=",MarketInfo(Symbol(),MODE_EXPIRATION));
   Print("Trade is allowed for the symbol=",MarketInfo(Symbol(),MODE_TRADEALLOWED));
   Print("Minimum permitted amount of a lot=",MarketInfo(Symbol(),MODE_MINLOT));
   Print("Step for changing lots=",MarketInfo(Symbol(),MODE_LOTSTEP));
   Print("Maximum permitted amount of a lot=",MarketInfo(Symbol(),MODE_MAXLOT));
   Print("Swap calculation method=",MarketInfo(Symbol(),MODE_SWAPTYPE));
   Print("Profit calculation mode=",MarketInfo(Symbol(),MODE_PROFITCALCMODE));
   Print("Margin calculation mode=",MarketInfo(Symbol(),MODE_MARGINCALCMODE));
   Print("Initial margin requirements for 1 lot=",MarketInfo(Symbol(),MODE_MARGININIT));
   Print("Margin to maintain open orders calculated for 1 lot=",MarketInfo(Symbol(),MODE_MARGINMAINTENANCE));
   Print("Hedged margin calculated for 1 lot=",MarketInfo(Symbol(),MODE_MARGINHEDGED));
   Print("Free margin required to open 1 lot for buying=",MarketInfo(Symbol(),MODE_MARGINREQUIRED));
   Print("Order freeze level in points=",MarketInfo(Symbol(),MODE_FREEZELEVEL));
  }

要获取当前市场信息,有几种函数:SymbolInfoInteger()SymbolInfoDouble()SymbolInfoString()。第一个参数是符号名称,第二个函数的参数值可以是ENUM_SYMBOL_INFO_INTEGER、ENUM_SYMBOL_INFO_DOUBLE和ENUM_SYMBOL_INFO_STRING的标识符之一。

对于函数SymbolInfoInteger()

ENUM_SYMBOL_INFO_INTEGER

标识符描述类型
SYMBOL_SELECT符号在Market Watch中被选中。

一些符号可以在Market Watch中隐藏,但仍被视为已选中。
bool
SYMBOL_VISIBLE符号在Market Watch中可见。

一些符号(主要是用于计算保证金要求或存款货币利润的交叉汇率)会自动选中,但通常不在Market Watch中显示。要显示这些符号,必须显式选择。
bool
SYMBOL_SESSION_DEALS不支持long
SYMBOL_SESSION_BUY_ORDERS不支持long
SYMBOL_SESSION_SELL_ORDERS不支持long
SYMBOL_VOLUME不支持long
SYMBOL_VOLUMEHIGH不支持long
SYMBOL_VOLUMELOW不支持long
SYMBOL_TIME最后报价的时间datetime
SYMBOL_DIGITS小数点后的位数int
SYMBOL_SPREAD_FLOAT浮动差价的指示bool
SYMBOL_SPREAD点数形式的价差值int
SYMBOL_TRADE_CALC_MODE合约价格计算模式int
SYMBOL_TRADE_MODE订单执行类型ENUM_SYMBOL_TRADE_MODE
SYMBOL_START_TIME符号交易开始的日期(通常用于期货)datetime
SYMBOL_EXPIRATION_TIME符号交易结束的日期(通常用于期货)datetime
SYMBOL_TRADE_STOPS_LEVEL从当前收盘价到放置止损订单的最小距离(以点数计)int
SYMBOL_TRADE_FREEZE_LEVEL冻结交易操作的距离(以点数计)int
SYMBOL_TRADE_EXEMODE交易执行模式ENUM_SYMBOL_TRADE_EXECUTION
SYMBOL_SWAP_MODESwap 计算模型int
SYMBOL_SWAP_ROLLOVER3DAYS收取3天 Swap 滚动的星期几ENUM_DAY_OF_WEEK
SYMBOL_EXPIRATION_MODE不支持int
SYMBOL_FILLING_MODE不支持int
SYMBOL_ORDER_MODE不支持int

对于函数SymbolInfoDouble():

ENUM_SYMBOL_INFO_DOUBLE

标识符描述类型
SYMBOL_BID买入价 - 最佳卖出报价double
SYMBOL_BIDHIGH不支持double
SYMBOL_BIDLOW不支持double
SYMBOL_ASK卖出价 - 最佳买入报价double
SYMBOL_ASKHIGH不支持double
SYMBOL_ASKLOW不支持double
SYMBOL_LAST不支持double
SYMBOL_LASTHIGH不支持double
SYMBOL_LASTLOW不支持double
SYMBOL_POINT符号点数值double
SYMBOL_TRADE_TICK_VALUE_PROFITSYMBOL_TRADE_TICK_VALUE_PROFIT的值double
SYMBOL_TRADE_TICK_VALUE_PROFIT不支持double
SYMBOL_TRADE_TICK_VALUE_LOSS不支持double
SYMBOL_TRADE_TICK_SIZE最小价格变化double
SYMBOL_TRADE_CONTRACT_SIZE交易合约大小double
SYMBOL_VOLUME_MIN交易的最小量double
SYMBOL_VOLUME_MAX交易的最大量double
SYMBOL_VOLUME_STEP交易执行的最小量变化步长double
SYMBOL_VOLUME_LIMIT不支持double
SYMBOL_SWAP_long买入订单的 Swap值double
SYMBOL_SWAP_short卖出订单的 Swap值double
SYMBOL_MARGIN_INITIAL初始保证金是指以保证金货币开单1手所需的金额。用于检查客户进入市场时的资产状况。double
SYMBOL_MARGIN_MAINTENANCE维护保证金。如果设置了,则设置符号的保证金金额,从1手收取。用于检查客户账户状态变化时的资产状况。如果维护保证金等于0,则使用初始保证金。double
SYMBOL_MARGIN_long不支持double
SYMBOL_MARGIN_short不支持double
SYMBOL_MARGIN_LIMIT不支持double
SYMBOL_MARGIN_STOP不支持double
SYMBOL_MARGIN_STOPLIMIT不支持double
SYMBOL_SESSION_VOLUME不支持double
SYMBOL_SESSION_TURNOVER不支持double
SYMBOL_SESSION_INTEREST不支持double
SYMBOL_SESSION_BUY_ORDERS_VOLUME不支持double
SYMBOL_SESSION_SELL_ORDERS_VOLUME不支持double
SYMBOL_SESSION_OPEN不支持double
SYMBOL_SESSION_CLOSE不支持double
SYMBOL_SESSION_AW不支持double
SYMBOL_SESSION_PRICE_SETTLEMENT不支持double
SYMBOL_SESSION_PRICE_LIMIT_MIN不支持double
SYMBOL_SESSION_PRICE LIMIT_MAX不支持double

对于函数SymbolInfoString():

ENUM_SYMBOL_INFO_STRING

标识符描述类型
SYMBOL_CURRENCY_BASE符号的基础货币string
SYMBOL_CURRENCY_PROFIT利润货币string
SYMBOL_CURRENCY_MARGIN保证金货币string
SYMBOL_DESCRIPTION符号描述string
SYMBOL_PATH符号树中的路径string

有几种符号交易模式。特定符号的交易模式信息反映在ENUM_SYMBOL_TRADE_MODE枚举的值中。

ENUM_SYMBOL_TRADE_MODE

标识符描述
SYMBOL_TRADE_MODE_DISABLED该符号的交易被禁用
SYMBOL_TRADE_MODE_LONGONLY*仅允许长仓
SYMBOL_TRADE_MODE_SHORTONLY*仅允许短仓
SYMBOL_TRADE_MODE_CLOSEONLY仅允许关闭持仓操作
SYMBOL_TRADE_MODE_FULL没有交易限制

特定符号的可能交易执行模式在ENUM_SYMBOL_TRADE_EXECUTION枚举中定义。

ENUM_SYMBOL_TRADE_EXECUTION

标识符描述
SYMBOL_TRADE_EXECUTION_REQUEST请求执行
SYMBOL_TRADE_EXECUTION_INSTANT即时执行
SYMBOL_TRADE_EXECUTION_MARKET市场执行
SYMBOL_TRADE_EXECUTION_EXCHANGE*交易所执行

*这些值在MQL4中不使用(为与MQL5兼容而添加)。

ENUM_DAY_OF_WEEK枚举的值用于指定星期几。

ENUM_DAY_OF_WEEK

标识符描述
SUNDAY星期日
MONDAY星期一
TUESDAY星期二
WEDNESDAY星期三
THURSDAY星期四
FRIDAY星期五
SATURDAY星期六
最后更新于