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

1、使用C++编写策略与JavaScript编写策略的主要区别在于优宽量化交易平台的API函数返回数据的差异,例如exchange.GetTicker()函数:

  • JavaScript
    exchange.GetTicker()调用成功时返回一个对象,如果调用失败(交易所服务器问题、网络问题等)返回null

    javascript
    function main() { // 鉴于测试代码,不使用商品期货策略一般架构,这里仅判断exchange.IO("status")函数,判断连接期货公司前置机成功后立即执行测试代码。股票证券无需使用exchange.IO("status")判断连接状态 while(!exchange.IO("status")) { Sleep(1000) } // 设置合约为rb888即螺纹钢主力连续合约,或者设置股票代码 exchange.SetContractType("rb888") var ticker = exchange.GetTicker() // 判断exchange.GetTicker函数是否调用失败,返回null if (ticker){ Log(ticker) } }
  • C++
    exchange.GetTicker()调用成功时返回一个对象,如果调用失败返回的仍是一个对象。与成功调用时返回的对象通过Valid属性来区分。

    c++
    void main() { while(exchange.IO("status") == 0) { Sleep(1000); } exchange.SetContractType("rb888"); auto ticker = exchange.GetTicker(); // 判断exchange.GetTicker()函数是否调用失败,返回的对象中Valid属性是否为false if (ticker.Valid) { Log(ticker); } }

2、C++策略中的main()函数与标准C11中main()函数的区别:

C11中的C++程序入口函数main()返回值为int类型,在优宽量化的C++策略中,策略的启动函数也是main()函数。

不过这两者并非同一个函数,只是同名而已。并且优宽量化的C++策略中main()函数的返回值为void类型。

c++
void main() { while(exchange.IO("status") == 0) { Sleep(1000); } exchange.SetContractType("rb888"); // 使用Test函数测试 if (!Test("c++")) { // 抛出异常,让程序停止 Panic("请下载最新版本托管者"); } // 所有的对象返回用Valid来判断是否有效 LogProfitReset(); LogReset(); Log(_N(9.12345, 2)); Log("use _C", _C(exchange.GetTicker), _C(exchange.GetAccount)); }