C++策略编写说明

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

  
  ```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来区别。
  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策略编写说明