输入/搜索内容
欢迎使用优宽量化交易平台
编程语言
JavaScript
TypeScript
Python
C++
My语言(麦语言)
PINE语言
Blockly可视化
Workflow工作流
支持的协议
密钥安全性
实盘
策略库
托管者
部署托管者
一键租用托管者
手动部署托管者
托管者操作注意事项
全局指定IP地址
命令行版本托管者程序的参数
实盘数据迁移
托管者监控
交易所
策略编辑器
回测系统
策略入口函数
策略框架与API函数
模板类库
策略参数
交互控件
商品期货
期权交易
股票证券
C++策略编写说明
JavaScript策略编写说明
内置库
扩展API接口
MCP 服务
交易终端
数据探索
Alpha因子分析工具
调试工具
远程编辑
完整策略的导入与导出
多语言支持
实盘、策略分组
实盘展示
策略分享与出租
实盘消息推送
实盘报错、异常退出的常见原因
交易所特殊说明、兼容记录

传统商品期货API获取更多信息时,需要注意策略程序启动运行时必须确保与期货公司前置机服务器连接成功后(通过调用exchange.IO("status")函数的返回值判断账号登录验证是否成功),才能调用行情、交易等接口与期货公司前置机服务器进行通信。

参考:exchange.IO(...)函数

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)明确下单方向。

    javascript
    function 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) }
    python
    def 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报错
    期货交易所对象相关的报错信息说明如下:

    错误函数显示触发函数描述
    0Futures_OP 0exchange.SetMarginLevel调用杠杆函数时报错,商品期货不支持SetMarginLevel函数,因此不会报Futures_OP 0错误
    1Futures_OP 1exchange.SetDirection设置期货交易方向函数报错
    2Futures_OP 2exchange.SetContractType设置合约函数报错
    3Futures_OP 3exchange.GetPositions获取持仓函数报错
    4Futures_OP 4exchange.IO调用IO函数报错