商品期货
传统商品期货API获取更多信息时,需要注意策略程序启动运行时必须确保与期货公司前置机服务器连接成功后(通过调用exchange.IO("status")函数的返回值判断账号登录验证是否成功),才能调用行情、交易等接口与期货公司前置机服务器进行通信。
javascript
function main() {
while (!exchange.IO("status")) {
LogStatus("正在等待与交易服务器连接, " + new Date())
Sleep(1000)
}
exchange.GetAccount()
}
python
def main():
while not exchange.IO("status"):
LogStatus("正在等待与交易服务器连接, " + _D())
Sleep(1000)
exchange.GetAccount()
c++
void main() {
while(exchange.IO("status") == 0) {
LogStatus("正在等待与交易服务器连接, " + _D());
Sleep(1000);
}
exchange.GetAccount();
}
-
期货交易中
exchange.Buy(Price, Amount)、exchange.Sell(Price, Amount)、exchange.CancelOrder(Id)与现货交易的区别:
在调用exchange.Buy(Price, Amount)或exchange.Sell(Price, Amount)之前,需要先调用exchange.SetDirection(Direction)明确下单方向。javascriptfunction main() { while (!exchange.IO("status")) { LogStatus("正在等待与交易服务器连接, " + new Date()) Sleep(1000) } // 设置合约 exchange.SetContractType("MA888") // 设置为开空头仓位,调用exchange.Sell(...)函数下单开空头仓位 exchange.SetDirection("sell") var id = exchange.Sell(1000, 2) exchange.CancelOrder(id) }pythondef main(): while not exchange.IO("status"): LogStatus("正在等待与交易服务器连接, " + _D()) Sleep(1000) exchange.SetContractType("MA888") exchange.SetDirection("sell") id = exchange.Sell(1000, 2) exchange.CancelOrder(id)c++void main() { while(exchange.IO("status") == 0) { LogStatus("正在等待与交易服务器连接, " + _D()); Sleep(1000); } exchange.SetContractType("MA888"); exchange.SetDirection("sell"); auto id = exchange.Sell(1000, 2); exchange.CancelOrder(id); } -
商品期货支持自定义订单类型(支持实盘,回测暂不支持)。
以后缀方式指定,附加在_后面,例如:CTP协议:
exchange.SetDirection("buy_ioc")
交易所暂不支持此类型:exchange.SetDirection("sell_gtd-20170111")。CTP协议:
后缀 意义 对应CTP原始值 ioc 立即完成,否则撤销 THOST_FTDC_TC_IOC gfs 本节有效 THOST_FTDC_TC_GFS gfd 当日有效 THOST_FTDC_TC_GFD gtd 指定日期前有效 THOST_FTDC_TC_GTD gtc 撤销前有效 THOST_FTDC_TC_GTC gfa 集合竞价有效 THOST_FTDC_TC_GFA fak 部分成交,撤销剩余部分 THOST_FTDC_TC_IOC fok 未能完全成交,全部撤销 THOST_FTDC_TC_IOC 易盛协议:
后缀 意义 对应易盛协议原始值 gfd 当日有效 TAPI_ORDER_TIMEINFORCE_GFD gtc 撤销前有效 TAPI_ORDER_TIMEINFORCE_GTC gtd 指定日期前有效 TAPI_ORDER_TIMEINFORCE_GTD fak 部分成交,撤销剩余部分 TAPI_ORDER_TIMEINFORCE_FAK ioc 立即完成,否则撤销 TAPI_ORDER_TIMEINFORCE_FAK fok 未能完全成交,全部撤销 TAPI_ORDER_TIMEINFORCE_FOK -
易盛协议
- 部分接口调用时立即返回
执行exchange.GetOrder(id)、exchange.GetOrders()、exchange.GetPositions()、exchange.GetAccount()接口时立即返回。当交易所对象配置为易盛协议时,这些接口会立即返回,在本地维护数据,由期货公司前置机推送数据更新,不会产生阻塞。
- 部分接口调用时立即返回
-
Futures_OP报错
期货交易所对象相关的报错信息说明如下:值 错误函数显示 触发函数 描述 0 Futures_OP 0 exchange.SetMarginLevel 调用杠杆函数时报错,商品期货不支持SetMarginLevel函数,因此不会报Futures_OP 0错误 1 Futures_OP 1 exchange.SetDirection 设置期货交易方向函数报错 2 Futures_OP 2 exchange.SetContractType 设置合约函数报错 3 Futures_OP 3 exchange.GetPositions 获取持仓函数报错 4 Futures_OP 4 exchange.IO 调用IO函数报错