PDF下载 下载

策略类简介

策略类集成了行情、交易和事件的接口,用户的策略都从此类继承实现自己的业务逻辑。每个进程只能实例化一个策略类对象。

策略类定义

  1. class Strategy
  2. {
  3. public:
  4. Strategy(const char *token, const char *strategy_id, int mode);
  5. Strategy();
  6. virtual ~Strategy();
  7. public: //基础函数
  8. //运行策略
  9. int run();
  10. //停止策略
  11. void stop();
  12. //设置策略ID
  13. void set_strategy_id(const char *strategy_id);
  14. //设置用户token
  15. void set_token(const char *token);
  16. //设置策略运行模式
  17. void set_mode(int mode);
  18. //定时任务
  19. int schedule(const char *data_rule, const char *time_rule);
  20. //当前时间
  21. long long now();
  22. public: //数据函数
  23. // 订阅行情
  24. int subscribe(const char *symbols, const char * frequency, bool unsubscribe_previous = false);
  25. // 退订行情
  26. int unsubscribe(const char *symbols, const char * frequency);
  27. public: //交易函数
  28. //查询交易账号
  29. DataArray<Account>* get_accounts();
  30. //按指定量委托
  31. Order order_volume(const char *symbol, int volume, int side, int order_type, int position_effect, double price = 0, const char *account = NULL);
  32. //按指定价值委托
  33. Order order_value(const char *symbol, double value, int side, int order_type, int position_effect, double price = 0, const char *account = NULL);
  34. //按总资产指定比例委托
  35. Order order_percent(const char *symbol, double percent, int side, int order_type, int position_effect, double price = 0, const char *account = NULL);
  36. //调仓到目标持仓量
  37. Order order_target_volume(const char *symbol, int volume, int position_side, int order_type, double price = 0, const char *account = NULL);
  38. //调仓到目标持仓额
  39. Order order_target_value(const char *symbol, double value, int position_side, int order_type, double price = 0, const char *account = NULL);
  40. //调仓到目标持仓比例(总资产的比例)
  41. Order order_target_percent(const char *symbol, double percent, int position_side, int order_type, double price = 0, const char *account = NULL);
  42. //平当前所有可平持仓
  43. DataArray<Order>* order_close_all();
  44. //委托撤单
  45. int order_cancel(const char *cl_ord_id, const char *account = NULL);
  46. //撤销所有委托
  47. int order_cancel_all();
  48. //查询委托
  49. DataArray<Order>* get_orders(const char *account = NULL);
  50. //查询未结委托
  51. DataArray<Order>* get_unfinished_orders(const char *account = NULL);
  52. //查询成交
  53. DataArray<ExecRpt>* get_execution_reports(const char *account = NULL);
  54. //查询资金
  55. DataArray<Cash>* get_cash(const char *accounts = NULL);
  56. //查询持仓
  57. DataArray<Position>* get_position(const char *account = NULL);
  58. public: //策略参数类函数
  59. //添加参数
  60. int add_parameters(Parameter *params, int count);
  61. //删除参数
  62. int del_parameters(const char *keys);
  63. //设置参数
  64. int set_parameters(Parameter *params, int count);
  65. //获取参数
  66. DataArray<Parameter>* get_parameters();
  67. //设置标的
  68. int set_symbols(const char *symbols);
  69. //获取标的
  70. DataArray<Symbol>* get_symbols();
  71. public: //事件函数
  72. //初始化完成
  73. virtual void on_init();
  74. //收到Tick行情
  75. virtual void on_tick(Tick *tick);
  76. //收到bar行情
  77. virtual void on_bar(Bar *bar);
  78. //委托变化
  79. virtual void on_order_status(Order *order);
  80. //执行回报
  81. virtual void on_execution_report(ExecRpt *rpt);
  82. //参数变化
  83. virtual void on_parameter(Parameter *param);
  84. //定时任务触发
  85. virtual void on_schedule(const char *data_rule, const char *time_rule);
  86. //回测完成
  87. virtual void on_backtest_finished();
  88. //回测完成后收到绩效报告
  89. virtual void on_indicator(Indicator *indicator);
  90. //实盘账号状态变化
  91. virtual void on_account_status(AccountStatus *account_status);
  92. //错误产生
  93. virtual void on_error(int error_code, const char *error_msg);
  94. //收到策略停止信号
  95. virtual void on_stop();
  96. //数据已经连接上
  97. virtual void on_market_data_connected();
  98. //交易已经连接上
  99. virtual void on_trade_data_connected();
  100. //数据连接断开了
  101. virtual void on_market_data_disconnected();
  102. //交易连接断开了
  103. virtual void on_trade_data_disconnected();
  104. };
0 篇笔记