- CustomSymbolCreate
- CustomSymbolDelete
- CustomSymbolSetInteger
- CustomSymbolSetDouble
- CustomSymbolSetString
- CustomSymbolSetMarginRate
- CustomSymbolSetSessionQuote
- CustomSymbolSetSessionTrade
- CustomRatesDelete
- CustomRatesReplace
- CustomRatesUpdate
- CustomTicksAdd
- CustomTicksDelete
- CustomTicksReplace
- CustomBookAdd
CustomTicksAdd
添加MqlTick类型的数组数据到自定义交易品种的价格历史。自定义交易品种一定要在市场报价窗口来选择。
int CustomTicksAdd(
|
参数
交易品种
[in] 自定义交易品种的名称。
ticks[]
[in] MqlTick类型的报价数据数组按照从早期到最近的顺序排列,例如ticks[k].time_msc <= ticks[n].time_msc,if k<n。
count=WHOLE_ARRAY
[in] 即将用于添加的ticks[]数组元素的数量。WHOLE_ARRAY意味着所有ticks[]数组元素都应被使用。
返回值
添加报价的数量,错误情况下为-1。
进一步注释
CustomTicksAdd函数只能用于在市场报价窗口打开的自定义交易品种。如果没有在市场报价窗口选择交易品种,您应该使用CustomTicksReplace添加报价。
CustomTicksAdd函数允许按照在交易商服务器上交付的模式传递报价。数据发送至市场报价来代替直接写入报价数据库。然后程序端将来自市场报价的价格保存到数据库。如果函数调用期间传递的数据量过于庞大,函数处理会发生变化以减少资源使用率。如果传递超过256个报价,数据将被分为两个部分。第一部分,即数据量大的部分直接写入报价数据库(如同CustomTicksReplace函数的操作)。第二部分包含128个报价,被传递到市场报价窗口,程序端在这里将报价保存到数据库。
MqlTick结构有两个时间值字段:time (以秒表示的报价时间)和 time_msc (以毫秒表示的报价时间),从1970年1月1日开始计算。添加报价的这些字段按照以下顺序进行处理:
- 如果ticks[k].time_msc!=0,我们用它来填写ticks[k].time字段,例如为报价设置 ticks[k].time=ticks[k].time_msc/1000(整除)
- 如果ticks[k].time_msc==0 并且 ticks[k].time!=0,那么将乘以1000来获得毫秒表示的时间,例如ticks[k].time_msc=ticks[k].time*1000
- 如果ticks[k].time_msc==0和ticks[k].time==0,那么将调用CustomTicksAdd函数时当前交易服务器的毫秒时间写入这些字段。
如果ticks[k].bid,ticks[k].ask,ticks[k].last或ticks[k].volume的数值大于零,那么将适当的标识组合写入ticks[k].flags 字段:
- TICK_FLAG_BID 报价已更改卖价
- TICK_FLAG_ASK 报价已更改买价
- TICK_FLAG_LAST 报价已更改最后交易价
- TICK_FLAG_VOLUME 报价已更改交易量
如果字段的值小于或等于零,对应的标识将不写入ticks[k].flags字段。
自定义交易品种历史记录不添加TICK_FLAG_BUY and TICK_FLAG_SELL标识。
另见
CustomRatesDelete,CustomRatesUpdate,CustomTicksReplace, CopyTicks,CopyTicksRange