返回介绍

开始入门

操作指引

SDK

数据文档

常见问题

量化工具

其他

其他

策略基类

发布于 2024-06-22 12:53:28 字数 89369 浏览 0 评论 0 收藏 0

基类原型

策略类简介

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

策略类定义


class GM_CLASS Strategy
{
public:
	Strategy(const char *token, const char *strategy_id, int mode);
	Strategy();
	virtual ~Strategy();

public: //基础函数

	//运行策略
	int run();

	//停止策略
	void stop();

	//设置策略ID
	void set_strategy_id(const char *strategy_id);

	//设置用户token
	void 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(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_on_debt(int position_src, const char *symbol, int volume, double price, const char *debtsno, 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(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_cash_by_selling_share_on_debt(int position_src, const char *symbol, int volume, double price, const char *debtsno, int bond_fee_only, 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(int position_src, const char *symbol, int volume, const char *account = NULL);
	//直接还券(指定合约)
	Order credit_repay_share_directly_on_debt(int position_src, const char *symbol, int volume, const char *debtsno, const char *account = NULL);
	//直接还款
	int credit_repay_cash_directly(int position_src, double amount, const char *account = NULL, double *actual_repay_amount = NULL, char *error_msg_buf = NULL, int buf_len = 0);
	//直接还款(指定合约与利息偿还)
	int credit_repay_cash_directly_ex(int position_src, double amount, const char *debtsno, int bond_fee_only, 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);
	//查询融资融券合约与资金信息
	DataSet* credit_get_report(const char *func_id, const char *account = NULL);

	/* 新股业务 */

	//新股申购
	Order ipo_buy(const char *symbol, int volume, double price, const char *account = NULL);
	//查询客户新股申购额度
	int ipo_get_quota(double &quota, 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();

};



基本成员函数

Strategy - 构造函数

构造策略对象。

函数原型:

	//带参数的构造函数
	Strategy(const char *token, const char *strategy_id, int mode);

	//不带参数的构造函数
	Strategy();

参数:

参数名类型说明
tokenconst char *系统权限密钥,可在终端系统设置-密钥管理中生成
strategy_idconst char *策略 ID,在终端中获取
modeint实时模式:MODE_LIVE, 回测模式:MODE_BACKTEST

注意事项:

  • 一个进程只能构造一个策略对象。
  • 如用 Strategy() 构造对象时,token,strategy_id,mode三个参数可以从set_token,set_strategy_id,set_mode成员函数传入。

run - 运行策略

运行策略。只有调用 run 后,才会驱动所有的事件,如行情接入与交易事件。

函数原型:

int run();

参数:

参数名类型说明
返回值int如果策略正常退出返回 0, 非正常退出返回错误码

注意事项:

调用 run 会阻塞线程,策略进入事件驱动状态,所以所有初始操作(如读配置文件,分配缓冲区等)都应该在 run 之前完成,如果 run 退出,意味着策略运行结束,整个进程应该就此退出。

stop - 停止策略

用于停止策略, 也就是如果调用 run()之后, 在某个事件响应中调用 stop, 这是 run 就是退出,并返回 0。

函数原型:

void stop();

set_strategy_id - 设置策略 ID

函数原型:

void set_strategy_id(const char *strategy_id);

参数:

参数名类型说明
strategy_idconst char *策略 ID,在终端中获取

注意事项:

不管是从构造函数传入还成员函数传入,token, strategy_id, mode 都是必须要设置的参数。

set_token - 设置用户 token

函数原型:

void set_token(const char *token);

参数:

参数名类型说明
tokenconst char *系统权限密钥,可在终端系统设置-密钥管理中生成

注意事项:

不管是从构造函数传入还成员函数传入,token, strategy_id, mode 都是必须要设置的参数。

set_mode - 设置策略运行模式

函数原型:

void set_mode(int mode);

参数:

参数名类型说明
modeint实时模式:MODE_LIVE, 回测模式:MODE_BACKTEST

注意事项:

不管是从构造函数传入还成员函数传入,token, strategy_id, mode 都是必须要设置的参数。

schedule - 预设定时任务

在指定时间自动执行策略算法, 通常用于选股类型策略。schedule 一般在 on_init 中调用。如果 schedule 预设成功,那么达成预设时间条件时,on_schedule 会被调用,并在 on_schedule 的参数中返回设置的data_ruletime_rule。schedule 可以调用多次,设置多个不同定时任务。

函数原型:

int schedule(const char *data_rule, const char *time_rule);

参数:

参数名类型说明
data_ruleconst char *n + 时间单位, 可选’d/w/m’ 表示 n 天/n 周/n 月
time_ruleconst char *执行算法的具体时间 (%H:%M:%S 格式)
返回值int预设成功返回 0, 预设失败返回错误码

事例:


    #每天的19:06:20执行
    schedule(date_rule='1d', time_rule='19:06:20')

    #每月的第一个交易日的09:40:00执行
    schedule(date_rule='1m', time_rule='9:40:00')

注意事项:

  • 现在data_rule暂只支持 1d,1w,1m, 任意 n 后续会支持。
  • 1w,1m 只在回测中支持,实盘模式中不支持。

now - 获取当前时间

实时模式下,返回当前的系统时间。回测模式下,返回当前的回测时间点。格式是 utc 时间戳。

函数原型:

double now();

参数:

参数名类型说明
返回值double当前 utc 时间戳

set_backtest_config - 设置回测参数

如果 mode 设置为回测模式,则在调用 run 之前,需要先设置本函数设置回测参数。在实时模式下,该调用被忽略。

函数原型:

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
);

参数:

参数名类型说明
start_timeconst char *回测开始时间
(%Y-%m-%d %H:%M:%S 格式)
end_timeconst char *回测结束时间
(%Y-%m-%d %H:%M:%S 格式)
initial_cashdouble回测初始资金, 默认 1000000
transaction_ratiodouble回测成交比例, 默认 1.0, 即下单 100%成交
commission_ratiodouble回测佣金比例, 默认 0
slippage_ratiodouble回测滑点比例, 默认 0
adjustint回测复权方式(默认不复权)
ADJUST_NONE(不复权)=0
ADJUST_PREV(前复权)=1
ADJUST_POST(后复权)=2
check_cacheint回测是否使用缓存:1 - 使用, 0 - 不使用;默认使用

注意: start_time 和 end_time 中月,日,时,分,秒均可以只输入个位数,例:'2016-6-7 9:55:0''2017-8-1 14:6:0',但若对应位置为零,则 0 不可被省略,比如不能输入"2017-8-1 14:6: "


行情成员函数

subscribe - 订阅行情

订阅行情推送,实时模式下订阅实时行情推送,回测模式下订阅历史行情推送。订阅 tick 会触发 on_tick 回调,订阅 bar 则触发 on_bar 回调。

函数原型:

int subscribe(const char *symbols, const char * frequency, bool unsubscribe_previous = false);

参数:

参数名类型说明
symbolsconst char *订阅标的代码列表, 字符串格式,如有多个代码, 中间用,(英文逗号) 隔开
frequencyconst char *频率, 支持 ‘tick’, ‘1d’, ‘60s’, ‘300s’ 等, 实时行情支持的频率
unsubscribe_previousbool是否取消过去订阅的 symbols, 默认 false 不取消, 输入 true 则取消所有原来的订阅。
返回值int订阅成功返回 0, 订阅失败返回错误码

示例:

//订阅 SHSE.600000和 SZSE.000001 两个标的的tick行情
subscribe(symbols="SHSE.600000,SHSE.600004", frequency="tick");

//订阅 SHSE.600000和 SZSE.000001 两个标的的1分钟bar
subscribe(symbols="SHSE.600000,SHSE.600004", frequency="60s");

unsubscribe - 退订行情

退订已经订阅行情推送, 与 subscribe 作用相返。

函数原型:

int unsubscribe(const char *symbols, const char * frequency);

参数:

参数名类型说明
symbolsconst char *退订标的代码列表, 字符串格式,如有多个代码, 中间用,(英文逗号) 隔开
frequencyconst char *频率, 支持 ‘tick’, ‘1d’, ‘60s’, ‘300s’ 等, 实时行情支持的频率
返回值int退订成功返回 0, 退订失败返回错误码

示例:

//退订 SHSE.600000和 SZSE.000001 两个标的的tick行情
unsubscribe(symbols="SHSE.600000,SHSE.600004", frequency="tick");


普通交易成员函数

get_accounts - 查询交易账号

用于查询交易账号配置信息。多用于实盘时,策略同时关联多个交易账号的时候,获取所有交易账号的信息,所返回的账号 id(account_id)用于后续各个交易 api 的入参, 即指定操作某个交易账户。 如果关联的交易账号只有一个, 一般用不到此函数。

函数原型:

DataArray<Account>* get_accounts();

参数:

参数名类型说明
返回值DataArray<Account>*一个 Account 结构数组

order_volume - 按指定量委托

按指定量委托, 如果调用成功,后续委托单状态变化将会触发 on_order_status 回调。

函数原型:

Order order_volume(const char *symbol, int volume, int side, int order_type, int position_effect, double price = 0, const char *account = NULL);

参数:

参数名类型说明
symbolconst char *标的代码,只能单个标的
volumeint委托数量
sideint委托方向 参见 enum OrderSide
order_typeint委托类型 参见 enum OrderType
position_effectint开平类型 参见 enum PositionSide
pricedouble委托价格, (限价委托的委托价格,市价委托的保护价)
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

示例:

//以11块的价格限价买入10000股浦发银行
Order o = order_volume("SHSE.600000", 10000, OrderSide_Buy, OrderType_Limit, PositionEffect_Open, 11);

注意:

1. 仅支持一个标的代码,若交易代码输入有误,终端会拒绝此单,并显示委托代码不正确

2. 若下单数量输入有误,终端会拒绝此单,并显示委托量不正确。股票买入最小单位为100,卖出最小单位为1,如存在不足 100 股的持仓一次性卖出;期货买卖最小单位为1向下取整

3. 若仓位不足,终端会拒绝此单,显示仓位不足。平仓时股票默认平昨仓,期货默认平今仓。应研究需要,股票也支持卖空操作

4. 函数调用成功并不意味着委托已经成功,只是意味委托单已经成功发出去, 委托是否成功根据 on_order_status,或 get_order 来判断。

order_value - 按指定价值委托

按指定价值委托, 如果调用成功,后续委托单状态变化将会触发 on_order_status 回调。

函数原型:

Order order_value(const char *symbol, double value, int side, int order_type, int position_effect, double price = 0, const char *account = NULL);

参数:

参数名类型说明
symbolconst char *标的代码,只能单个标的
valueint股票价值
sideint委托方向 参见 enum OrderSide
order_typeint委托类型 参见 enum OrderType
position_effectint开平类型 参见 enum PositionSide
pricedouble委托价格, (限价委托的委托价格,市价委托的保护价)
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

示例:

//下限价单,以11元每股的价格买入价值为100000元的SHSE.600000, 根据volume = value / price,计算并取整得到volume = 9000
Order o = order_value("SHSE.600000", 100000, OrderSide_Buy, OrderType_Limit, PositionEffect_Open, 11);

注意:

1. 仅支持一个标的代码,若交易代码输入有误,终端会拒绝此单,并显示委托代码不正确

2. 根据指定价值计算购买标的数量,即value/price。股票买卖最小单位为100,不足 100 部分向下取整,如存在不足 100 的持仓一次性卖出;期货买卖最小单位为1向下取整

3. 若仓位不足,终端会拒绝此单,显示仓位不足。平仓时股票默认平昨仓,期货默认平今仓。应研究需要,股票也支持卖空操作

4. 函数调用成功并不意味着委托已经成功,只是意味委托单已经成功发出去, 委托是否成功根据 on_order_status,或 get_order 来判断。

order_percent - 按总资产指定比例委托

按总资产指定比例委托, 如果调用成功,后续委托单状态变化将会触发 on_order_status 回调。

函数原型:

Order order_percent(const char *symbol, double percent, int side, int order_type, int position_effect, double price = 0, const char *account = NULL);

参数:

参数名类型说明
symbolconst char *标的代码,只能单个标的
percentdouble委托占总资产比例
sideint委托方向 参见 enum OrderSide
order_typeint委托类型 参见 enum OrderType
position_effectint开平类型 参见 enum PositionSide
pricedouble委托价格, (限价委托的委托价格,市价委托的保护价)
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

示例:

//当前总资产为1000000。下限价单,以11元每股的价格买入SHSE.600000,期望买入比例占总资产的10%,根据volume = nav * precent / price 计算取整得出volume = 9000

Order o = order_percent("SHSE.600000", 0.1, OrderSide_Buy, OrderType_Limit, PositionEffect_Open, 11);

注意:

1. 仅支持一个标的代码,若交易代码输入有误,终端会拒绝此单,并显示委托代码不正确

2. 根据指定比例计算购买标的数量,即(nav*precent)/price,股票买卖最小单位为100,不足 100 部分向下取整,如存在不足 100 的持仓一次性卖出;期货买卖最小单位为1向下取整

3. 若仓位不足,终端会拒绝此单,显示仓位不足。平仓时股票默认平昨仓,期货默认平今仓。应研究需要,股票也支持卖空操作

4. 函数调用成功并不意味着委托已经成功,只是意味委托单已经成功发出去, 委托是否成功根据 on_order_status,或 get_order 来判断。

order_target_volume - 调仓到目标持仓量

调仓到目标持仓量, 如果调用成功,后续委托单状态变化将会触发 on_order_status 回调。

函数原型:

Order order_target_volume(const char *symbol, int volume, int position_side, int order_type, double price = 0, const char *account = NULL);

参数:

参数名类型说明
symbolconst char *标的代码,只能单个标的
volumeint期望的最终数量
position_sideint持仓方向 参见 enum PositionSide
order_typeint委托类型 参见 enum OrderType
pricedouble委托价格, (限价委托的委托价格,市价委托的保护价)
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

示例:

//当前SHSE.600000多方向持仓量为0,期望持仓量为10000,下单量为期望持仓量 - 当前持仓量 = 10000

Order o = order_target_volume("SHSE.600000", 10000, PositionSide_Long, OrderType_Limit, 11);

注意:

1. 仅支持一个标的代码,若交易代码输入有误,终端会拒绝此单,并显示委托代码不正确

2. 根据目标数量计算下单数量,系统判断开平仓类型。若下单数量有误,终端拒绝此单,并显示委托量不正确。若实际需要买入数量为 0,则订单会被拒绝,终端无显示,无回报。股票买卖最小单位为100,不足 100 部分向下取整,如存在不足 100 的持仓一次性卖出;期货买卖最小单位为1向下取整

3. 若仓位不足,终端会拒绝此单,显示仓位不足。平仓时股票默认平昨仓,期货默认平今仓。应研究需要,股票也支持卖空操作

4. 函数调用成功并不意味着委托已经成功,只是意味委托单已经成功发出去, 委托是否成功根据 on_order_status,或 get_order 来判断。

order_target_value - 调仓到目标持仓额

调仓到目标持仓额, 如果调用成功,后续委托单状态变化将会触发 on_order_status 回调。

函数原型:

Order order_target_value(const char *symbol, double value, int position_side, int order_type, double price = 0, const char *account = NULL);

参数:

参数名类型说明
symbolconst char *标的代码,只能单个标的
valueint期望的股票最终价值
position_sideint持仓方向 参见 enum PositionSide
order_typeint委托类型 参见 enum OrderType
pricedouble委托价格, (限价委托的委托价格,市价委托的保护价)
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

示例:

//当前SHSE.600000多方向当前持仓量为0,目标持有价值为100000的该股票,根据value / price 计算取整得出目标持仓量volume为9000,目标持仓量 - 当前持仓量 = 下单量为9000

Order o = order_target_value("SHSE.600000", 100000, PositionSide_Long, OrderType_Limit, 11);

注意:

1. 仅支持一个标的代码,若交易代码输入有误,终端会拒绝此单,并显示委托代码不正确

2. 根据目标数量计算下单数量,系统判断开平仓类型。若下单数量有误,终端拒绝此单,并显示委托量不正确。若实际需要买入数量为 0,则订单会被拒绝,终端无显示,无回报。股票买卖最小单位为100,不足 100 部分向下取整,如存在不足 100 的持仓一次性卖出;期货买卖最小单位为1向下取整

3. 若仓位不足,终端会拒绝此单,显示仓位不足。平仓时股票默认平昨仓,期货默认平今仓。应研究需要,股票也支持卖空操作

4. 函数调用成功并不意味着委托已经成功,只是意味委托单已经成功发出去, 委托是否成功根据 on_order_status,或 get_order 来判断。

order_target_percent - 调仓到目标持仓比例(总资产的比例)

调仓到目标持仓比例(总资产的比例), 如果调用成功,后续委托单状态变化将会触发 on_order_status 回调。

函数原型:

Order order_target_percent(const char *symbol, double percent, int position_side, int order_type, double price = 0, const char *account = NULL);

参数:

参数名类型说明
symbolconst char *标的代码,只能单个标的
percentdouble期望的最终占总资产比例
position_sideint持仓方向 参见 enum PositionSide
order_typeint委托类型 参见 enum OrderType
pricedouble委托价格, (限价委托的委托价格,市价委托的保护价)
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

示例:

//当前总资产价值为1000000,目标为以11元每股的价格买入SHSE.600000的价值占总资产的10%,根据volume = nav * percent / price 计算取整得出应持有9000股。当前该股持仓量为零,因此买入量为9000

Order o = order_target_percent("SHSE.600000", 0.1, PositionSide_Long, OrderType_Limit, 11);

注意:

1. 仅支持一个标的代码,若交易代码输入有误,终端会拒绝此单,并显示委托代码不正确

2. 根据目标比例计算下单数量,为占总资产(nav)比例,系统判断开平仓类型。若下单数量有误,终端拒绝此单,并显示委托量不正确。若实际需要买入数量为 0,则本地拒绝此单,终端无显示,无回报。股票买卖最小单位为100,不足 100 部分向下取整,如存在不足 100 的持仓一次性卖出;期货买卖最小单位为1向下取整

3. 若仓位不足,终端会拒绝此单,显示仓位不足。平仓时股票默认平昨仓,期货默认平今仓。应研究需要,股票也支持卖空操作

4. 函数调用成功并不意味着委托已经成功,只是意味委托单已经成功发出去, 委托是否成功根据 on_order_status,或 get_order 来判断。

order_close_all - 平当前所有可平持仓

平当前所有可平持仓, 如果调用成功,后续委托单状态变化将会触发 on_order_status 回调

函数原型:

DataArray<Order>* order_close_all();

参数:

参数名类型说明
返回值DataArray<Order>*一个 Order 结构数组

order_cancel - 委托撤单

撤销单个委托单, 如果调用成功,后续委托单状态变化将会触发 on_order_status 回调

函数原型:

int order_cancel(const char *cl_ord_id, const char *account = NULL);

参数:

参数名类型说明
cl_ord_idconst char *委托单的客户 id, 可以在下单或查单时获得
accountconst char *实盘账号 id, 关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值int成功返回 0, 失败返回错误码

order_close_all - 平当前所有可平持仓

平当前所有可平持仓, 如果调用成功,后续委托单状态变化将会触发 on_order_status 回调

函数原型:

DataArray<Order>* order_close_all();

参数:

参数名类型说明
返回值DataArray<Order>*一个 Order 结构数组

order_cancel_all - 撤销所有委托

撤销所有委托, 如果调用成功,后续委托单状态变化将会触发 on_order_status 回调

函数原型:

int order_cancel_all();

参数:

参数名类型说明
返回值int成功返回 0, 失败返回错误码

place_order - 按指定量委托

按指定量委托, 如果调用成功,后续委托单状态变化将会触发 on_order_status 回调。

函数原型:

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);

参数:

参数名类型说明
symbolconst char *标的代码,只能单个标的
volumeint委托数量
sideint委托方向 参见 enum OrderSide
order_typeint委托类型 参见 enum OrderType
position_effectint开平类型 参见 enum PositionSide
pricedouble委托价格, (限价委托的委托价格,市价委托的保护价)
order_durationint委托时间属性 参见 enum OrderDuration
order_qualifierint委托成交属性 参见 enum OrderQualifier
stop_pricedouble止损价
order_businessint委托业务类型 参见 enum OrderBusiness
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

示例:

//以市价类型“五档即成剩撤”买入10000股浦发银行
Order o = place_order("SHSE.600000", 10000, OrderSide_Buy, OrderType_Market, PositionEffect_Open, 0, OrderDuration_Unknown, OrderQualifier_B5TL);

注意:

1. 仅支持一个标的代码,若交易代码输入有误,终端会拒绝此单,并显示委托代码不正确

2. 若下单数量输入有误,终端会拒绝此单,并显示委托量不正确。股票买入最小单位为100,卖出最小单位为1,如存在不足 100 股的持仓一次性卖出;期货买卖最小单位为1向下取整

3. 若仓位不足,终端会拒绝此单,显示仓位不足。平仓时股票默认平昨仓,期货默认平今仓。应研究需要,股票也支持卖空操作

4. 函数调用成功并不意味着委托已经成功,只是意味委托单已经成功发出去, 委托是否成功根据 on_order_status,或 get_order 来判断。

get_orders - 查询所有委托

查询所有委托单

函数原型:

DataArray<Order>* get_orders(const char *account = NULL);

参数:

参数名类型说明
accountconst char *账号 IDaccount_id, 如果输入为 NULL, 则返回所有账号的委托
返回值DataArray<Order>*一个 Order 结构数组

get_unfinished_orders - 查询未结委托

查询所有未结委托

函数原型:

DataArray<Order>* get_unfinished_orders(const char *account = NULL);

参数:

参数名类型说明
accountconst char *账号 IDaccount_id, 如果输入为 NULL, 则返回所有账号的委托
返回值DataArray<Order>*一个 Order 结构数组

get_execution_reports - 查询成交

查询所有成交

函数原型:

DataArray<ExecRpt>* get_execution_reports(const char *account = NULL);

参数:

参数名类型说明
accountconst char *账号 IDaccount_id, 如果输入为 NULL, 则返回所有账号的成交
返回值DataArray<ExecRpt>*一个 ExecRpt 结构数组

get_cash - 查询资金

查询资金

函数原型:

DataArray<Cash>* get_cash(const char *accounts = NULL);

参数:

参数名类型说明
accountconst char *账号 IDaccount_id, 如果输入为 NULL, 则返回所有账号的资金
返回值DataArray<Cash>*一个 Cash 结构数组

get_position - 查询持仓

查询所有持仓

函数原型:

DataArray<Position>* get_position(const char *account = NULL);

参数:

参数名类型说明
accountconst char *账号 IDaccount_id, 如果输入为 NULL, 则返回所有账号的持仓
返回值DataArray<Position>*一个 Position 结构数组

两融业务成员函数

credit_buying_on_margin - 融资买入

注:融资融券暂时仅支持实盘委托,不支持仿真交易

函数原型:

	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);

参数:

参数名类型说明
position_srcint头寸来源 参见 enum PositionSrc, 部分柜台不区分普通与专项时填PositionSrc_Unknown
symbolconst char *标的代码,只能单个标的
volumeint委托数量
pricedouble委托价格
order_typeint委托类型 参见 enum OrderType
order_durationint委托时间属性 参见 enum OrderDuration
order_qualifierint委托成交属性 参见 enum OrderQualifier
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

示例:

//以价格11.9融资买入10000股浦发银行
Order o = credit_buying_on_margin(PositionSrc_Unknown, "SHSE.600000", 10000, 11.9);

credit_short_selling - 融券卖出

注:融资融券暂时仅支持实盘委托,不支持仿真交易

函数原型:

	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);

参数:

参数名类型说明
position_srcint头寸来源 参见 enum PositionSrc, 部分柜台不区分普通与专项时填PositionSrc_Unknown
symbolconst char *标的代码,只能单个标的
volumeint委托数量
pricedouble委托价格
order_typeint委托类型 参见 enum OrderType
order_durationint委托时间属性 参见 enum OrderDuration
order_qualifierint委托成交属性 参见 enum OrderQualifier
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

示例:

//以价格11.9融券卖出10000股浦发银行
Order o = credit_short_selling(PositionSrc_Unknown, "SHSE.600000", 10000, 11.9);

注意: 融券卖出一般不支持市价单,以柜台为准

credit_repay_share_by_buying_share - 买券还券

注:融资融券暂时仅支持实盘委托,不支持仿真交易

函数原型:

	Order credit_repay_share_by_buying_share(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);

参数:

参数名类型说明
position_srcint头寸来源 参见 enum PositionSrc, 部分柜台不区分普通与专项时填PositionSrc_Unknown
symbolconst char *标的代码,只能单个标的
volumeint委托数量
pricedouble委托价格
order_typeint委托类型 参见 enum OrderType
order_durationint委托时间属性 参见 enum OrderDuration
order_qualifierint委托成交属性 参见 enum OrderQualifier
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

示例:

//以价格11.9买入10000股浦发银行还券
Order o = credit_repay_share_by_buying_share(PositionSrc_Unknown,"SHSE.600000", 10000, 11.9);

credit_repay_share_by_buying_share_on_debt - 买券还券(指定合约)

注:融资融券暂时仅支持实盘委托,不支持仿真交易

函数原型:

	Order credit_repay_share_by_buying_share_on_debt(int position_src, const char *symbol, int volume, double price, const char *debtsno, int order_type = OrderType_Limit, int order_duration = OrderDuration_Unknown, int order_qualifier = OrderQualifier_Unknown, const char *account = NULL);

参数:

参数名类型说明
position_srcint头寸来源 参见 enum PositionSrc, 部分柜台不区分普通与专项时填PositionSrc_Unknown
symbolconst char *标的代码,只能单个标的
volumeint委托数量
pricedouble委托价格
debtsnoconst char *负债合约编号
order_typeint委托类型 参见 enum OrderType
order_durationint委托时间属性 参见 enum OrderDuration
order_qualifierint委托成交属性 参见 enum OrderQualifier
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

示例:

//以价格11.9买入10000股浦发银行还券, 指定合约编号为 "AA000111222"
Order o = credit_repay_share_by_buying_share_on_debt(PositionSrc_Unknown,"SHSE.600000", 10000, 11.9, "AA000111222");

credit_repay_cash_by_selling_share - 卖券还款

注:融资融券暂时仅支持实盘委托,不支持仿真交易

函数原型:

	Order credit_repay_cash_by_selling_share(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);

参数:

参数名类型说明
position_srcint头寸来源 参见 enum PositionSrc, 部分柜台不区分普通与专项时填PositionSrc_Unknown
symbolconst char *标的代码,只能单个标的
volumeint委托数量
pricedouble委托价格
order_typeint委托类型 参见 enum OrderType
order_durationint委托时间属性 参见 enum OrderDuration
order_qualifierint委托成交属性 参见 enum OrderQualifier
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

示例:

//以价格11.9卖出10000股浦发银行还款
Order o = credit_repay_cash_by_selling_share(PositionSrc_Unknown, "SHSE.600000", 10000, 11.9);

credit_repay_cash_by_selling_share_on_debt - 卖券还款(指定合约与利息偿还)

注:融资融券暂时仅支持实盘委托,不支持仿真交易

函数原型:

	Order credit_repay_cash_by_selling_share_on_debt(int position_src, const char *symbol, int volume, double price, const char *debtsno, int bond_fee_only, int order_type = OrderType_Limit, int order_duration = OrderDuration_Unknown, int order_qualifier = OrderQualifier_Unknown, const char *account = NULL);

参数:

参数名类型说明
position_srcint头寸来源 参见 enum PositionSrc, 部分柜台不区分普通与专项时填PositionSrc_Unknown
symbolconst char *标的代码,只能单个标的
volumeint委托数量
pricedouble委托价格
debtsnoconst char *负债合约编号, 可以不指定,此时可传NULL
bond_fee_onlyint是否只偿还利息1-是,0-否
order_typeint委托类型 参见 enum OrderType
order_durationint委托时间属性 参见 enum OrderDuration
order_qualifierint委托成交属性 参见 enum OrderQualifier
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

示例:

//以价格11.9卖出10000股浦发银行还款, 指定合约编号为 "AA000111222", 并且只还利息
Order o = credit_repay_cash_by_selling_share_on_debt(PositionSrc_Unknown, "SHSE.600000", 10000, 11.9, "AA000111222", 1);

credit_buying_on_collateral - 担保品买入

注:融资融券暂时仅支持实盘委托,不支持仿真交易

函数原型:

	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);

参数:

参数名类型说明
symbolconst char *标的代码,只能单个标的
volumeint委托数量
pricedouble委托价格, (限价委托的委托价格,市价委托的保护价)
order_typeint委托类型 参见 enum OrderType
order_durationint委托时间属性 参见 enum OrderDuration
order_qualifierint委托成交属性 参见 enum OrderQualifier
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

示例:

//以价格11.9买入10000股浦发银行
Order o = credit_buying_on_collateral("SHSE.600000", 10000, 11.9);

credit_selling_on_collateral - 担保品卖出

注:融资融券暂时仅支持实盘委托,不支持仿真交易

函数原型:

	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);

参数:

参数名类型说明
symbolconst char *标的代码,只能单个标的
volumeint委托数量
pricedouble委托价格, (限价委托的委托价格,市价委托的保护价)
order_typeint委托类型 参见 enum OrderType
order_durationint委托时间属性 参见 enum OrderDuration
order_qualifierint委托成交属性 参见 enum OrderQualifier
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

示例:

//以价格11.9卖出10000股浦发银行
Order o = credit_selling_on_collateral("SHSE.600000", 10000, 11.9);

credit_repay_share_directly - 直接还券

注:融资融券暂时仅支持实盘委托,不支持仿真交易

函数原型:

	Order credit_repay_share_directly(int position_src, const char *symbol, int volume, const char *account = NULL);

参数:

参数名类型说明
position_srcint头寸来源 参见 enum PositionSrc, 部分柜台不区分普通与专项时填PositionSrc_Unknown
symbolconst char *标的代码,只能单个标的
volumeint委托数量
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

示例:

//还券10000股浦发银行
Order o = credit_repay_share_directly(PositionSrc_Unknown, "SHSE.600000", 10000);

credit_repay_share_directly_on_debt - 直接还券(指定合约)

注:融资融券暂时仅支持实盘委托,不支持仿真交易

函数原型:

	Order credit_repay_share_directly_on_debt(int position_src, const char *symbol, int volume, const char *debtsno, const char *account = NULL);

参数:

参数名类型说明
position_srcint头寸来源 参见 enum PositionSrc, 部分柜台不区分普通与专项时填PositionSrc_Unknown
symbolconst char *标的代码,只能单个标的
volumeint委托数量
debtsnoconst char *负债合约编号
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

示例:

//还券10000股浦发银行, 指定合约编号为 "AA000111222"
Order o = credit_repay_share_directly_on_debt(PositionSrc_Unknown, "SHSE.600000", 10000, "AA000111222");

credit_repay_cash_directly - 直接还款

注:融资融券暂时仅支持实盘委托,不支持仿真交易

函数原型:

	int credit_repay_cash_directly(int position_src, double amount, const char *account = NULL, double *actual_repay_amount = NULL, char *error_msg_buf = NULL, int buf_len = 0);

参数:

参数名类型说明
position_srcint头寸来源 参见 enum PositionSrc, 部分柜台不区分普通与专项时填PositionSrc_Unknown
amountdouble还款金额
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
actual_repay_amountdouble*出参,返回值,如果还款成功,返回实际的还款金额
error_msg_bufchar *出参,返回值,如果还款失败,返回错误信息,内存需要用户分配
buf_lenint指定 error_msg_buf 空间大小
返回值int成功返回 0,否则返回非 0 错误

示例:

//还款 100000块
double actual_repay_amount;
char error_msg_buf[256] = {0};
int ret = credit_repay_cash_directly(PositionSrc_Unknown, "SHSE.600000", 100000, &actual_repay_amount, error_msg_buf, sizeof(error_msg_buf));

credit_repay_cash_directly_ex - 直接还款(指定合约与利息偿还)

注:融资融券暂时仅支持实盘委托,不支持仿真交易

函数原型:

	int credit_repay_cash_directly_ex(int position_src, double amount, const char *debtsno, int bond_fee_only, const char *account = NULL, double *actual_repay_amount = NULL, char *error_msg_buf = NULL, int buf_len = 0);

参数:

参数名类型说明
position_srcint头寸来源 参见 enum PositionSrc, 部分柜台不区分普通与专项时填PositionSrc_Unknown
amountdouble还款金额
debtsnoconst char *负债合约编号
bond_fee_onlyint是否只偿还利息1-是,0-否
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
actual_repay_amountdouble*出参,返回值,如果还款成功,返回实际的还款金额
error_msg_bufchar *出参,返回值,如果还款失败,返回错误信息,内存需要用户分配
buf_lenint指定 error_msg_buf 空间大小
返回值int成功返回 0,否则返回非 0 错误

示例:

//还款 100000块, 指定合约编号为 "AA000111222", 并且只还利息
double actual_repay_amount;
char error_msg_buf[256] = {0};
int ret = credit_repay_cash_directly(PositionSrc_Unknown, "SHSE.600000", 100000, "AA000111222", 1, &actual_repay_amount, error_msg_buf, sizeof(error_msg_buf));

credit_collateral_in - 担保品转入

注:融资融券暂时仅支持实盘委托,不支持仿真交易

函数原型:

	Order credit_collateral_in(const char *symbol, int volume, const char *account = NULL);

参数:

参数名类型说明
symbolconst char *标的代码,只能单个标的
volumeint委托数量
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

示例:

//担保品转入10000股浦发银行
Order o = credit_collateral_in("SHSE.600000", 10000);

credit_collateral_out - 担保品转出

注:融资融券暂时仅支持实盘委托,不支持仿真交易

函数原型:

	Order credit_collateral_out(const char *symbol, int volume, const char *account = NULL);

参数:

参数名类型说明
symbolconst char *标的代码,只能单个标的
volumeint委托数量
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

示例:

//担保品转出10000股浦发银行
Order o = credit_collateral_out("SHSE.600000", 10000);

credit_get_collateral_instruments - 查询担保证券

注:融资融券暂时仅支持实盘委托,不支持仿真交易

函数原型:

DataArray<CollateralInstrument>* credit_get_collateral_instruments(const char *account = NULL);

参数:

参数名类型说明
accountconst char *账号 IDaccount_id, 如果输入为 NULL, 则返回所有账号的委托
返回值DataArray<CollateralInstrument>*一个 CollateralInstrument 结构数组

credit_get_borrowable_instruments - 查询融券标的证券

注:融资融券暂时仅支持实盘委托,不支持仿真交易

查询标的证券,可做融券标的股票列表

函数原型:

	DataArray<BorrowableInstrument>* credit_get_borrowable_instruments(int position_src, const char *account = NULL);

参数:

参数名类型说明
position_srcint头寸来源 参见 enum PositionSrc, 部分柜台不区分普通与专项时填PositionSrc_Unknown
accountconst char *账号 IDaccount_id, 如果输入为 NULL, 则返回所有账号的委托
返回值DataArray<BorrowableInstrument>*一个 BorrowableInstrument 结构数组

credit_get_borrowable_instruments_positions - 查询融券账户头寸

注:融资融券暂时仅支持实盘委托,不支持仿真交易

查询券商融券账户头寸,可用融券的数量

函数原型:

	DataArray<BorrowableInstrumentPosition>* credit_get_borrowable_instruments_positions(int position_src, const char *account = NULL);

参数:

参数名类型说明
position_srcint头寸来源 参见 enum PositionSrc, 部分柜台不区分普通与专项时填PositionSrc_Unknown
accountconst char *账号 IDaccount_id, 如果输入为 NULL, 则返回所有账号的委托
返回值DataArray<BorrowableInstrumentPosition>*一个 BorrowableInstrumentPosition 结构数组

credit_get_contracts - 查询融资融券合约

注:融资融券暂时仅支持实盘委托,不支持仿真交易

查询融资融券合约,负债

函数原型:

	DataArray<CreditContract>* credit_get_contracts(int position_src, const char *account = NULL);

参数:

参数名类型说明
position_srcint头寸来源 参见 enum PositionSrc, 部分柜台不区分普通与专项时填PositionSrc_Unknown
accountconst char *账号 IDaccount_id, 如果输入为 NULL, 则返回所有账号的委托
返回值DataArray<CreditContract>*一个 CreditContract 结构数组

credit_get_cash - 查询融资融券资金

注:融资融券暂时仅支持实盘委托,不支持仿真交易

函数原型:

int credit_get_cash(CreditCash &cash, const char *account = NULL);

参数:

参数名类型说明
cashCreditCash出参,返回资金信息
accountconst char *账号 IDaccount_id, 如果输入为 NULL, 则返回所有账号的委托
返回值int成功返回 0,否则返回非 0 错误

示例:

CreditCash cash;
int ret = credit_get_cash(cash);

算法交易成员函数

order_algo - 委托算法单

注:仅支持实时模式,部分券商版本可用

下算法单

函数原型:

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);

参数:

参数名类型说明
symbolconst char *标的代码,只能单个标的
volumeint委托数量
position_effectint开平类型 参见 enum PositionSide
sideint委托方向 参见 enum OrderSide
order_typeint委托类型 参见 enum OrderType
pricedouble委托价格
algo_paramstruct算法参数 参见 struct AlgoParam
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值AlgoOrderAlgoOrder, 如果函数调用失败, AlgoOrder.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,AlgoOrder.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

示例:

//用算法 `TWAP` 委托买入10000股浦发银行

AlgoParam p{ "TWAP", "2019-1-18 9:30:00", "2019-1-18 11:30:00", 1, 100 };
AlgoOrder o = order_algo("SHSE.600000", 10000, PositionEffect_Open,OrderSide_Buy, OrderType_Market, 0, p);

algo_order_cancel - 撤单算法委托

注:仅支持实时模式,部分券商版本可用

撤销算法单

函数原型:

int algo_order_cancel(const char *cl_ord_id, const char *account = NULL);

参数:

参数名类型说明
cl_ord_idconst char *委托单的客户 id, 可以在下单或查单时获得
accountconst char *实盘账号 id, 关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值int成功返回 0, 失败返回错误码

algo_order_pause - 暂停/恢复算法单

注:仅支持实时模式,部分券商版本可用

暂停/恢复算法单

函数原型:

int algo_order_pause(const char *cl_ord_id, int status, const char *account = NULL);

参数:

参数名类型说明
cl_ord_idconst char *委托单的客户 id, 可以在下单或查单时获得
statusint参考 AlgoOrderStatus
accountconst char *实盘账号 id, 关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值int成功返回 0, 失败返回错误码

get_algo_orders - 查询算法委托

注:仅支持实时模式,部分券商版本可用

查询所有算法委托单

函数原型:

DataArray<AlgoOrder>* get_algo_orders(const char *account = NULL);

参数:

参数名类型说明
accountconst char *账号 IDaccount_id, 如果输入为 NULL, 则返回所有账号的委托
返回值DataArray<AlgoOrder>*一个 AlgoOrder 结构数组

get_algo_child_orders - 查询算法子委托

注:仅支持实时模式,部分券商版本可用

查询子单

函数原型:

DataArray<Order>* get_algo_child_orders(const char *cl_ord_id, const char *account = NULL);

参数:

参数名类型说明
cl_ord_idconst char *母单 ID
accountconst char *账号 IDaccount_id, 如果输入为 NULL, 则返回所有账号的委托
返回值DataArray<Order>*一个 AlgoOrder 结构数组

新股业务成员函数

ipo_buy - 新股新债申购

注:仅在实盘中可以使用

函数原型:

	Order ipo_buy(const char *symbol, int volume, double price, const char *account = NULL);

参数:

参数名类型说明
symbolconst char *标的代码,只能单个标的
volumeint委托数量
pricedouble申购价
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

示例:

//申购1000股的SHSE.688001
Order o = ipo_buy("SHSE.688001", 1000, 42.0);

ipo_get_quota - 查询客户新股新债申购额度

注:仅在实盘中可以使用

函数原型:

	DataArray<IPOQI>* ipo_get_quota(const char *account = NULL);

参数:

参数名类型说明
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值DataArray<IPOQI>*返回每个板块的申购额度

示例:

DataArray<IPOQI>*da = ipo_get_quota();

ipo_get_instruments - 查询当日新股新债清单

注:仅在实盘中可以使用

函数原型:

DataArray<IPOInstruments>* ipo_get_instruments(int security_type, const char *account = NULL);

参数:

参数名类型说明
security_typeint指定要查询的品种,参见枚举SecurityType
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值DataArray<IPOInstruments>*一个 IPOInstruments 结构数组

ipo_get_match_number - 配号查询

注:仅在实盘中可以使用

函数原型:

DataArray<IPOMatchNumber>* ipo_get_match_number(const char *account = NULL);

参数:

参数名类型说明
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值DataArray<IPOMatchNumber>*一个 IPOMatchNumber 结构数组

ipo_get_lot_info - 中签查询

注:仅在实盘中可以使用

函数原型:

DataArray<IPOLotInfo>* ipo_get_lot_info(const char *account = NULL);

参数:

参数名类型说明
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值DataArray<IPOLotInfo>*一个 IPOLotInfo 结构数组

基金业务成员函数

fund_etf_buy - ETF 申购

注:仅在实盘中可以使用

函数原型:

	Order fund_etf_buy(const char *symbol, int volume, double price, const char *account = NULL);

参数:

参数名类型说明
symbolconst char *标的代码,只能单个标的
volumeint申购份额
pricedouble申购价
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

fund_etf_redemption - ETF 赎回

注:仅在实盘中可以使用

函数原型:

	Order fund_etf_redemption(const char *symbol, int volume, double price, const char *account = NULL);

参数:

参数名类型说明
symbolconst char *标的代码,只能单个标的
volumeint赎回份额
pricedouble赎回价
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

fund_subscribing - 基金认购

注:仅在实盘中可以使用

函数原型:

	Order fund_subscribing(const char *symbol, int volume, const char *account = NULL);

参数:

参数名类型说明
symbolconst char *标的代码,只能单个标的
volumeint认购份额
pricedouble认购价
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

fund_buy - 基金申购

注:仅在实盘中可以使用

函数原型:

	Order fund_buy(const char *symbol, int volume, const char *account = NULL);

参数:

参数名类型说明
symbolconst char *标的代码,只能单个标的
volumeint申购份额
pricedouble申购价
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

fund_redemption - 基金赎回

注:仅在实盘中可以使用

函数原型:

	Order fund_redemption(const char *symbol, int volume, const char *account = NULL);

参数:

参数名类型说明
symbolconst char *标的代码,只能单个标的
volumeint赎回份额
pricedouble赎回价
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

债券业务成员函数

bond_reverse_repurchase_agreement - 国债逆回购

注:仅在实盘中可以使用

函数原型:

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);

参数:

参数名类型说明
symbolconst char *标的代码,只能单个标的
volumeint委托数量
pricedouble委托价格
order_typeint委托类型 参见 enum OrderType
order_durationint委托时间属性 参见 enum OrderDuration
order_qualifierint委托成交属性 参见 enum OrderQualifier
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

示例:

//下单1000张1天期的上海国债逆回购
Order o = bond_reverse_repurchase_agreement("SHSE.204001", 1000, 3.00);

bond_convertible_call - 可转债转股

注:仅在实盘中可以使用

函数原型:

Order bond_convertible_call(const char *symbol, int volume, double price, const char *account = NULL);

参数:

参数名类型说明
symbolconst char *标的代码,只能单个标的
volumeint委托数量
pricedouble转股价(大部分柜台忽略,可填 0)
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

bond_convertible_put - 可转债回售

注:仅在实盘中可以使用

函数原型:

Order bond_convertible_put(const char *symbol, int volume, double price, const char *account = NULL);

参数:

参数名类型说明
symbolconst char *标的代码,只能单个标的
volumeint委托数量
pricedouble回售价(大部分柜台忽略,可填 0)
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

bond_convertible_put_cancel - 可转债回售撤销

注:仅在实盘中可以使用

函数原型:

Order bond_convertible_put_cancel(const char *symbol, int volume, const char *account = NULL);

参数:

参数名类型说明
symbolconst char *标的代码,只能单个标的
volumeint委托数量
accountconst char *实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL
返回值Order一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected, Order.ord_rej_reason_detail 为错误原因描述, 其它情况表示函数调用成功,Order.cl_ord_id 为本次委托的标识,可用于追溯订单状态或撤单

动态参数成员函数

add_parameters - 添加参数

注:动态参数仅在仿真交易和实盘交易下生效

添加动态参数, 添加成功后, 参数将在终端上显示。

函数原型:

int add_parameters(Parameter *params, int count);

参数:

参数名类型说明
paramsParameter *指向一个 Parameter 结构数据的指针
countint数组长度
返回值int成功返回 0, 失败返回错误码

del_parameters - 删除参数

注:动态参数仅在仿真交易和实盘交易下生效

删除动态参数

函数原型:

int del_parameters(const char *keys);

参数:

参数名类型说明
keysconst char *对应参数的键值
返回值int成功返回 0, 失败返回错误码

set_parameters - 设置参数

注:动态参数仅在仿真交易和实盘交易下生效

设置参数值

函数原型:

int set_parameters(Parameter *params, int count);

参数:

参数名类型说明
paramsParameter *指向一个 Parameter 结构数据的指针
countint数组长度
返回值int成功返回 0, 失败返回错误码

get_parameters - 获取参数

注:动态参数仅在仿真交易和实盘交易下生效

获取参数值

函数原型:

DataArray<Parameter>* get_parameters();

参数:

参数名类型说明
返回值DataArray*一个 Parameter 数组

set_symbols - 设置标的

设置交易标的, 设置成功后, 标的将在终端上显示。

函数原型:

int set_symbols(const char *symbols);

参数:

参数名类型说明
symbolsconst char *symbol 列表,逗号分隔
返回值int成功返回 0, 失败返回错误码

get_symbols - 获取标的

获取交易标的

函数原型:

DataArray<Symbol>* get_symbols();

参数:

参数名类型说明
返回值DataArray*返加一个 Symbol 数组

事件成员函数

on_init - 初始化完成

sdk 初始化完成时触发, 用户可以改写此成员函数,在些订阅行情,提取历史数据等初始化操作。

函数原型:

virtual void on_init();

on_tick - 收到 Tick 行情

收到 Tick 行情时触发

函数原型:

virtual void on_tick(Tick *tick);

参数:

参数名类型说明
tickTick *收到的 Tick 行情

on_bar - 收到 bar 行情

收到 bar 行情时触发

函数原型:

virtual void on_bar(Bar *bar);

参数:

参数名类型说明
barBar*收到的 Bar 行情

on_l2transaction - 收到逐笔成交

收到逐笔成交(L2 行情时有效)

函数原型:

virtual void on_l2transaction(L2Transaction *l2transaction);

参数:

参数名类型说明
l2transactionL2Transaction*收到的逐笔成交行情

on_l2order - 收到逐笔委托

收到逐笔委托(深交所 L2 行情时有效)

函数原型:

virtual void on_l2order(L2Order *l2order);

参数:

参数名类型说明
l2orderL2Order *收到的逐笔委托行情

on_l2order_queue - 收到委托队列

收到委托队列, L2 行情时有效,最优价最大 50 笔委托量

函数原型:

virtual void on_l2order_queue(L2OrderQueue *l2queue);

参数:

参数名类型说明
l2queueL2OrderQueue *收到的委托队列行情

on_order_status - 委托变化

响应委托状态更新事情,下单后及委托状态更新时被触发。 注意:交易账户重连后,会重新推送一遍交易账户登录成功后查询回来的所有委托

函数原型:

virtual void on_order_status(Order *order);

参数:

参数名类型说明
orderOrder*发生变化的委托

注意:

  1. 交易服务连接断开重连后, 会自动重新推送一次所有委托(包含近期委托).
  2. 交易账号错误断开到"已登陆"状态后, 会自动重新推送一次所有委托(包含近期委托).
  3. 交易服务连接断开重连事件通过 on_trade_data_connected()回调通知.
  4. 交易账号错误断开到"已登陆"事件通过 on_account_status()回调通知.
  5. 主动查询日内全部委托记录和未结委托的方式为 get_orders()和 get_unfinished_orders()函数.

on_execution_report - 执行回报

响应委托被执行事件,委托成交或者撤单拒绝后被触发。 注意:交易账户重连后,会重新推送一遍交易账户登录成功后查询回来的所有执行回报

函数原型:

virtual void on_execution_report(ExecRpt *rpt);

参数:

参数名类型说明
rptExecRpt*收到的回报

注意:

  1. 交易服务连接断开重连后, 会自动重新推送一次所有成交(包含近期成交).
  2. 交易账号错误断开到"已登陆"状态后, 会自动重新推送一次所有成交(包含近期成交).
  3. 交易服务连接断开重连事件通过 on_trade_data_connected()回调通知.
  4. 交易账号错误断开到"已登陆"事件通过 on_account_status()回调通知.
  5. 主动查询日内全部执行回报的方式为 get_execution_reports()函数.

on_parameter - 参数变化

参数变化时触发, 一般是终端修了动态参数

函数原型:

virtual void on_parameter(Parameter *param);

参数:

参数名类型说明
paramParameter*变化的参数

on_schedule - 定时任务触发

预设任务时间条件符合时触发

函数原型:

virtual void on_schedule(const char *data_rule, const char *time_rule);

参数:

参数名类型说明
data_ruleconst char *设置的 data_rule
time_ruleconst char *设置的 time_rule

on_backtest_finished - 回测完成

回测完成时触发

函数原型:

virtual void on_backtest_finished();

on_indicator - 回测完成后收到绩效报告

回测完成后收到绩效报告时触发

函数原型:

virtual void on_indicator(Indicator *indicator);

参数:

参数名类型说明
data_ruleIndicator *设置的 data_rule

on_account_status - 实盘账号状态变化

实盘账号状态变化时触发, 比如实盘账号登录,退出登录等

函数原型:

virtual void on_account_status(AccountStatus *account_status);

参数:

参数名类型说明
account_statusAccountStatus *对应变化的账号

on_error - 错误产生

有错误产生时触发, 比如网络断开。

函数原型:

virtual void on_error(int error_code, const char *error_msg);

参数:

参数名类型说明
error_codeint错误码
error_msgconst char *错误信息

on_stop - 收到策略停止信号

终端点击停止策略时触发

函数原型:

virtual void on_stop();

on_market_data_connected - 数据服务已经连接上

数据服务已经连接时触发

函数原型:

virtual void on_market_data_connected();

on_trade_data_connected - 交易已经连接上

交易已经连接时触发

函数原型:

virtual void on_trade_data_connected();

on_market_data_disconnected - 数据连接断开了

数据连接断开时触发

函数原型:

virtual void on_market_data_disconnected();

on_trade_data_disconnected - 交易连接断开了

交易连接断开时触发

函数原型:

virtual void on_trade_data_disconnected();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文