策略类简介
策略类集成了行情、交易和事件的接口,用户的策略都从此类继承实现自己的业务逻辑。每个进程只能实例化一个策略类对象。
策略类定义
class GM_CLASS Strategy{public:Strategy(const char *token, const char *strategy_id, int mode);Strategy();virtual ~Strategy();public: //基础函数//运行策略int run();//停止策略void stop();//设置策略IDvoid set_strategy_id(const char *strategy_id);//设置用户tokenvoid set_token(const char *token);//设置策略运行模式void set_mode(int mode);//定时任务int schedule(const char *data_rule, const char *time_rule);//当前时间double now();//设置回测参数int set_backtest_config(const char *start_time,const char *end_time,double initial_cash = 1000000,double transaction_ratio = 1,double commission_ratio = 0,double slippage_ratio = 0,int adjust = 0,int check_cache = 1);public: //数据函数// 订阅行情int subscribe(const char *symbols, const char * frequency, bool unsubscribe_previous = false);// 退订行情int unsubscribe(const char *symbols, const char * frequency);public: //交易函数//查询交易账号DataArray<Account>* get_accounts();//查询指定交易账号状态int get_account_status(const char *account, AccountStatus &as);//查询所有交易账号状态DataArray<AccountStatus>* get_all_account_status();//按指定量委托Order order_volume(const char *symbol, int volume, int side, int order_type, int position_effect, double price = 0, const char *account = NULL);//按指定价值委托Order order_value(const char *symbol, double value, int side, int order_type, int position_effect, double price = 0, const char *account = NULL);//按总资产指定比例委托Order order_percent(const char *symbol, double percent, int side, int order_type, int position_effect, double price = 0, const char *account = NULL);//调仓到目标持仓量Order order_target_volume(const char *symbol, int volume, int position_side, int order_type, double price = 0, const char *account = NULL);//调仓到目标持仓额Order order_target_value(const char *symbol, double value, int position_side, int order_type, double price = 0, const char *account = NULL);//调仓到目标持仓比例(总资产的比例)Order order_target_percent(const char *symbol, double percent, int position_side, int order_type, double price = 0, const char *account = NULL);//平当前所有可平持仓DataArray<Order>* order_close_all();//委托撤单int order_cancel(const char *cl_ord_id, const char *account = NULL);//撤销所有委托int order_cancel_all();//委托下单Order place_order(const char *symbol, int volume, int side, int order_type, int position_effect, double price = 0, int order_duration = 0, int order_qualifier = 0, double stop_price = 0, int order_business = 0, const char *account = NULL);//盘后定价交易Order order_after_hour(const char *symbol, int volume, int side, double price, const char *account = NULL);//查询委托DataArray<Order>* get_orders(const char *account = NULL);//查询未结委托DataArray<Order>* get_unfinished_orders(const char *account = NULL);//查询成交DataArray<ExecRpt>* get_execution_reports(const char *account = NULL);//查询资金DataArray<Cash>* get_cash(const char *accounts = NULL);//查询持仓DataArray<Position>* get_position(const char *account = NULL);//委托算法单AlgoOrder order_algo(const char *symbol, int volume, int position_effect, int side, int order_type, double price, AlgoParam &algo_param, const char *account = NULL);//撤单算法委托int algo_order_cancel(const char *cl_ord_id, const char *account = NULL);//暂停/恢复算法单int algo_order_pause(const char *cl_ord_id, int status, const char *account = NULL);//查询算法委托DataArray<AlgoOrder>* get_algo_orders(const char *account = NULL);//查询算法子委托DataArray<Order>* get_algo_child_orders(const char *cl_ord_id, const char *account = NULL);//功能号调用int raw_func(const char *account, const char *func_id, const char *func_args, char*&rsp);/* 两融业务 *///融资买入Order credit_buying_on_margin(int position_src, const char *symbol, int volume, double price, int order_type = OrderType_Limit, int order_duration = OrderDuration_Unknown, int order_qualifier = OrderQualifier_Unknown, const char *account = NULL);//融券卖出Order credit_short_selling(int position_src, const char *symbol, int volume, double price, int order_type = OrderType_Limit, int order_duration = OrderDuration_Unknown, int order_qualifier = OrderQualifier_Unknown, const char *account = NULL);//买券还券Order credit_repay_share_by_buying_share(const char *symbol, int volume, double price, int order_type = OrderType_Limit, int order_duration = OrderDuration_Unknown, int order_qualifier = OrderQualifier_Unknown, const char *account = NULL);//卖券还款Order credit_repay_cash_by_selling_share(const char *symbol, int volume, double price, int order_type = OrderType_Limit, int order_duration = OrderDuration_Unknown, int order_qualifier = OrderQualifier_Unknown, const char *account = NULL);//担保品买入Order credit_buying_on_collateral(const char *symbol, int volume, double price, int order_type = OrderType_Limit, int order_duration = OrderDuration_Unknown, int order_qualifier = OrderQualifier_Unknown, const char *account = NULL);//担保品卖出Order credit_selling_on_collateral(const char *symbol, int volume, double price, int order_type = OrderType_Limit, int order_duration = OrderDuration_Unknown, int order_qualifier = OrderQualifier_Unknown, const char *account = NULL);//直接还券Order credit_repay_share_directly(const char *symbol, int volume, const char *account = NULL);//直接还款int credit_repay_cash_directly(double amount, const char *account = NULL, double *actual_repay_amount = NULL, char *error_msg_buf = NULL, int buf_len = 0);//担保品转入Order credit_collateral_in(const char *symbol, int volume, const char *account = NULL);//担保品转出Order credit_collateral_out(const char *symbol, int volume, const char *account = NULL);//查询担保证券DataArray<CollateralInstrument>* credit_get_collateral_instruments(const char *account = NULL);//查询标的证券,可做融券标的股票列表DataArray<BorrowableInstrument>* credit_get_borrowable_instruments(int position_src, const char *account = NULL);//查询券商融券账户头寸,可用融券的数量DataArray<BorrowableInstrumentPosition>* credit_get_borrowable_instruments_positions(int position_src, const char *account = NULL);//查询融资融券合约DataArray<CreditContract>* credit_get_contracts(int position_src, const char *account = NULL);//查询融资融券资金int credit_get_cash(CreditCash &cash, const char *account = NULL);/* 新股业务 *///新股申购Order ipo_buy(const char *symbol, int volume, double price, const char *account = NULL);//查询客户新股申购额度int ipo_get_quota(double "a, const char *account = NULL);//查询当日新股清单DataArray<IPOInstruments>* ipo_get_instruments(const char *account = NULL);//配号查询DataArray<IPOMatchNumber>* ipo_get_match_number(const char *account = NULL);//中签查询DataArray<IPOLotInfo>* ipo_get_lot_info(const char *account = NULL);/* 基金业务 *///ETF申购Order fund_etf_buy(const char *symbol, int volume, double price, const char *account = NULL);//ETF赎回Order fund_etf_redemption(const char *symbol, int volume, double price, const char *account = NULL);//基金认购Order fund_subscribing(const char *symbol, int volume, const char *account = NULL);//基金申购Order fund_buy(const char *symbol, int volume, const char *account = NULL);//基金赎回Order fund_redemption(const char *symbol, int volume, const char *account = NULL);/* 债券业务 *///国债逆回购Order bond_reverse_repurchase_agreement(const char *symbol, int volume, double price, int order_type = OrderType_Limit, int order_duration = OrderDuration_Unknown, int order_qualifier = OrderQualifier_Unknown, const char *account = NULL);public: //策略参数类函数//添加参数int add_parameters(Parameter *params, int count);//删除参数int del_parameters(const char *keys);//设置参数int set_parameters(Parameter *params, int count);//获取参数DataArray<Parameter>* get_parameters();//设置标的int set_symbols(const char *symbols);//获取标的DataArray<Symbol>* get_symbols();public: //事件函数//初始化完成virtual void on_init();//收到Tick行情virtual void on_tick(Tick *tick);//收到bar行情virtual void on_bar(Bar *bar);//收到逐笔成交(L2行情时有效)virtual void on_l2transaction(L2Transaction *l2transaction);//收到逐笔委托(深交所L2行情时有效)virtual void on_l2order(L2Order *l2order);//收到委托队列(上交所L2行情时有效)virtual void on_l2order_queue(L2OrderQueue *l2queue);//委托变化virtual void on_order_status(Order *order);//执行回报virtual void on_execution_report(ExecRpt *rpt);//算法委托变化virtual void on_algo_order_status(AlgoOrder *order);//参数变化virtual void on_parameter(Parameter *param);//定时任务触发virtual void on_schedule(const char *data_rule, const char *time_rule);//回测完成后收到绩效报告virtual void on_backtest_finished(Indicator *indicator);//实盘账号状态变化virtual void on_account_status(AccountStatus *account_status);//错误产生virtual void on_error(int error_code, const char *error_msg);//收到策略停止信号virtual void on_stop();//数据已经连接上virtual void on_market_data_connected();//交易已经连接上virtual void on_trade_data_connected();//数据连接断开了virtual void on_market_data_disconnected();//交易连接断开了virtual void on_trade_data_disconnected();};