资源加载中... loading...

C++策略编写说明

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

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

    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来区别。

    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类型。

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));
}
股票证券 JavaScript策略编写说明