策略基类
基类原型
策略类简介
策略类集成了行情、交易和事件的接口,用户的策略都从此类继承实现自己的业务逻辑。每个进程只能实例化一个策略类对象。
策略类定义
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 "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();
};
基本成员函数
Strategy - 构造函数
构造策略对象。
函数原型:
//带参数的构造函数
Strategy(const char *token, const char *strategy_id, int mode);
//不带参数的构造函数
Strategy();
参数:
参数名 | 类型 | 说明 |
---|---|---|
token | const char * | 系统权限密钥,可在终端系统设置-密钥管理中生成 |
strategy_id | const char * | 策略 ID,在终端中获取 |
mode | int | 实时模式: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_id | const char * | 策略 ID,在终端中获取 |
注意事项:
不管是从构造函数传入还成员函数传入,token
, strategy_id
, mode
都是必须要设置的参数。
set_token
- 设置用户 token
函数原型:
void set_token(const char *token);
参数:
参数名 | 类型 | 说明 |
---|---|---|
token | const char * | 系统权限密钥,可在终端系统设置-密钥管理中生成 |
注意事项:
不管是从构造函数传入还成员函数传入,token
, strategy_id
, mode
都是必须要设置的参数。
set_mode
- 设置策略运行模式
函数原型:
void set_mode(int mode);
参数:
参数名 | 类型 | 说明 |
---|---|---|
mode | int | 实时模式:MODE_LIVE, 回测模式:MODE_BACKTEST |
注意事项:
不管是从构造函数传入还成员函数传入,token
, strategy_id
, mode
都是必须要设置的参数。
schedule - 预设定时任务
在指定时间自动执行策略算法, 通常用于选股类型策略。schedule 一般在 on_init 中调用。如果 schedule 预设成功,那么达成预设时间条件时,on_schedule 会被调用,并在 on_schedule 的参数中返回设置的data_rule
和time_rule
。schedule 可以调用多次,设置多个不同定时任务。
函数原型:
int schedule(const char *data_rule, const char *time_rule);
参数:
参数名 | 类型 | 说明 |
---|---|---|
data_rule | const char * | n + 时间单位, 可选’d/w/m’ 表示 n 天/n 周/n 月 |
time_rule | const 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_time | const char * | 回测开始时间 (%Y-%m-%d %H:%M:%S 格式) |
end_time | const char * | 回测结束时间 (%Y-%m-%d %H:%M:%S 格式) |
initial_cash | double | 回测初始资金, 默认 1000000 |
transaction_ratio | double | 回测成交比例, 默认 1.0, 即下单 100%成交 |
commission_ratio | double | 回测佣金比例, 默认 0 |
slippage_ratio | double | 回测滑点比例, 默认 0 |
adjust | int | 回测复权方式(默认不复权) ADJUST_NONE(不复权)=0 ADJUST_PREV(前复权)=1 ADJUST_POST(后复权)=2 |
check_cache | int | 回测是否使用缓存: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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbols | const char * | 订阅标的代码列表, 字符串格式,如有多个代码, 中间用, (英文逗号) 隔开 |
frequency | const char * | 频率, 支持 ‘tick’, ‘1d’, ‘60s’, ‘300s’ 等, 实时行情支持的频率 |
unsubscribe_previous | bool | 是否取消过去订阅的 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbols | const char * | 退订标的代码列表, 字符串格式,如有多个代码, 中间用, (英文逗号) 隔开 |
frequency | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 委托数量 |
side | int | 委托方向 参见 enum OrderSide |
order_type | int | 委托类型 参见 enum OrderType |
position_effect | int | 开平类型 参见 enum PositionSide |
price | double | 委托价格, (限价委托的委托价格,市价委托的保护价) |
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | const char * | 标的代码,只能单个标的 |
value | int | 股票价值 |
side | int | 委托方向 参见 enum OrderSide |
order_type | int | 委托类型 参见 enum OrderType |
position_effect | int | 开平类型 参见 enum PositionSide |
price | double | 委托价格, (限价委托的委托价格,市价委托的保护价) |
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | const char * | 标的代码,只能单个标的 |
percent | double | 委托占总资产比例 |
side | int | 委托方向 参见 enum OrderSide |
order_type | int | 委托类型 参见 enum OrderType |
position_effect | int | 开平类型 参见 enum PositionSide |
price | double | 委托价格, (限价委托的委托价格,市价委托的保护价) |
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 期望的最终数量 |
position_side | int | 持仓方向 参见 enum PositionSide |
order_type | int | 委托类型 参见 enum OrderType |
price | double | 委托价格, (限价委托的委托价格,市价委托的保护价) |
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | const char * | 标的代码,只能单个标的 |
value | int | 期望的股票最终价值 |
position_side | int | 持仓方向 参见 enum PositionSide |
order_type | int | 委托类型 参见 enum OrderType |
price | double | 委托价格, (限价委托的委托价格,市价委托的保护价) |
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | const char * | 标的代码,只能单个标的 |
percent | double | 期望的最终占总资产比例 |
position_side | int | 持仓方向 参见 enum PositionSide |
order_type | int | 委托类型 参见 enum OrderType |
price | double | 委托价格, (限价委托的委托价格,市价委托的保护价) |
account | const 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_id | const char * | 委托单的客户 id, 可以在下单或查单时获得 |
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 委托数量 |
side | int | 委托方向 参见 enum OrderSide |
order_type | int | 委托类型 参见 enum OrderType |
position_effect | int | 开平类型 参见 enum PositionSide |
price | double | 委托价格, (限价委托的委托价格,市价委托的保护价) |
order_duration | int | 委托时间属性 参见 enum OrderDuration |
order_qualifier | int | 委托成交属性 参见 enum OrderQualifier |
stop_price | double | 止损价 |
order_business | int | 委托业务类型 参见 enum OrderBusiness |
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | const char * | 账号 IDaccount_id , 如果输入为 NULL, 则返回所有账号的委托 |
返回值 | DataArray<Order>* | 一个 Order 结构数组 |
get_unfinished_orders
- 查询未结委托
查询所有未结委托
函数原型:
DataArray<Order>* get_unfinished_orders(const char *account = NULL);
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | const char * | 账号 IDaccount_id , 如果输入为 NULL, 则返回所有账号的委托 |
返回值 | DataArray<Order>* | 一个 Order 结构数组 |
get_execution_reports
- 查询成交
查询所有成交
函数原型:
DataArray<ExecRpt>* get_execution_reports(const char *account = NULL);
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | const char * | 账号 IDaccount_id , 如果输入为 NULL, 则返回所有账号的成交 |
返回值 | DataArray<ExecRpt>* | 一个 ExecRpt 结构数组 |
get_cash
- 查询资金
查询资金
函数原型:
DataArray<Cash>* get_cash(const char *accounts = NULL);
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | const char * | 账号 IDaccount_id , 如果输入为 NULL, 则返回所有账号的资金 |
返回值 | DataArray<Cash>* | 一个 Cash 结构数组 |
get_position
- 查询持仓
查询所有持仓
函数原型:
DataArray<Position>* get_position(const char *account = NULL);
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | const 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_src | int | 头寸来源 参见 enum PositionSrc , 部分柜台不区分普通与专项时填PositionSrc_Unknown |
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 委托数量 |
price | double | 委托价格 |
order_type | int | 委托类型 参见 enum OrderType |
order_duration | int | 委托时间属性 参见 enum OrderDuration |
order_qualifier | int | 委托成交属性 参见 enum OrderQualifier |
account | const 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_src | int | 头寸来源 参见 enum PositionSrc , 部分柜台不区分普通与专项时填PositionSrc_Unknown |
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 委托数量 |
price | double | 委托价格 |
order_type | int | 委托类型 参见 enum OrderType |
order_duration | int | 委托时间属性 参见 enum OrderDuration |
order_qualifier | int | 委托成交属性 参见 enum OrderQualifier |
account | const 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_src | int | 头寸来源 参见 enum PositionSrc , 部分柜台不区分普通与专项时填PositionSrc_Unknown |
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 委托数量 |
price | double | 委托价格 |
order_type | int | 委托类型 参见 enum OrderType |
order_duration | int | 委托时间属性 参见 enum OrderDuration |
order_qualifier | int | 委托成交属性 参见 enum OrderQualifier |
account | const 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_src | int | 头寸来源 参见 enum PositionSrc , 部分柜台不区分普通与专项时填PositionSrc_Unknown |
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 委托数量 |
price | double | 委托价格 |
debtsno | const char * | 负债合约编号 |
order_type | int | 委托类型 参见 enum OrderType |
order_duration | int | 委托时间属性 参见 enum OrderDuration |
order_qualifier | int | 委托成交属性 参见 enum OrderQualifier |
account | const 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_src | int | 头寸来源 参见 enum PositionSrc , 部分柜台不区分普通与专项时填PositionSrc_Unknown |
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 委托数量 |
price | double | 委托价格 |
order_type | int | 委托类型 参见 enum OrderType |
order_duration | int | 委托时间属性 参见 enum OrderDuration |
order_qualifier | int | 委托成交属性 参见 enum OrderQualifier |
account | const 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_src | int | 头寸来源 参见 enum PositionSrc , 部分柜台不区分普通与专项时填PositionSrc_Unknown |
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 委托数量 |
price | double | 委托价格 |
debtsno | const char * | 负债合约编号, 可以不指定,此时可传NULL |
bond_fee_only | int | 是否只偿还利息1-是,0-否 |
order_type | int | 委托类型 参见 enum OrderType |
order_duration | int | 委托时间属性 参见 enum OrderDuration |
order_qualifier | int | 委托成交属性 参见 enum OrderQualifier |
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 委托数量 |
price | double | 委托价格, (限价委托的委托价格,市价委托的保护价) |
order_type | int | 委托类型 参见 enum OrderType |
order_duration | int | 委托时间属性 参见 enum OrderDuration |
order_qualifier | int | 委托成交属性 参见 enum OrderQualifier |
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 委托数量 |
price | double | 委托价格, (限价委托的委托价格,市价委托的保护价) |
order_type | int | 委托类型 参见 enum OrderType |
order_duration | int | 委托时间属性 参见 enum OrderDuration |
order_qualifier | int | 委托成交属性 参见 enum OrderQualifier |
account | const 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_src | int | 头寸来源 参见 enum PositionSrc , 部分柜台不区分普通与专项时填PositionSrc_Unknown |
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 委托数量 |
account | const 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_src | int | 头寸来源 参见 enum PositionSrc , 部分柜台不区分普通与专项时填PositionSrc_Unknown |
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 委托数量 |
debtsno | const char * | 负债合约编号 |
account | const 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_src | int | 头寸来源 参见 enum PositionSrc , 部分柜台不区分普通与专项时填PositionSrc_Unknown |
amount | double | 还款金额 |
account | const char * | 实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL |
actual_repay_amount | double* | 出参,返回值,如果还款成功,返回实际的还款金额 |
error_msg_buf | char * | 出参,返回值,如果还款失败,返回错误信息,内存需要用户分配 |
buf_len | int | 指定 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_src | int | 头寸来源 参见 enum PositionSrc , 部分柜台不区分普通与专项时填PositionSrc_Unknown |
amount | double | 还款金额 |
debtsno | const char * | 负债合约编号 |
bond_fee_only | int | 是否只偿还利息1-是,0-否 |
account | const char * | 实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL |
actual_repay_amount | double* | 出参,返回值,如果还款成功,返回实际的还款金额 |
error_msg_buf | char * | 出参,返回值,如果还款失败,返回错误信息,内存需要用户分配 |
buf_len | int | 指定 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 委托数量 |
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 委托数量 |
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | const 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_src | int | 头寸来源 参见 enum PositionSrc , 部分柜台不区分普通与专项时填PositionSrc_Unknown |
account | const 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_src | int | 头寸来源 参见 enum PositionSrc , 部分柜台不区分普通与专项时填PositionSrc_Unknown |
account | const char * | 账号 IDaccount_id , 如果输入为 NULL, 则返回所有账号的委托 |
返回值 | DataArray<BorrowableInstrumentPosition>* | 一个 BorrowableInstrumentPosition 结构数组 |
credit_get_contracts
- 查询融资融券合约
注:融资融券暂时仅支持实盘委托,不支持仿真交易
查询融资融券合约,负债
函数原型:
DataArray<CreditContract>* credit_get_contracts(int position_src, const char *account = NULL);
参数:
参数名 | 类型 | 说明 |
---|---|---|
position_src | int | 头寸来源 参见 enum PositionSrc , 部分柜台不区分普通与专项时填PositionSrc_Unknown |
account | const char * | 账号 IDaccount_id , 如果输入为 NULL, 则返回所有账号的委托 |
返回值 | DataArray<CreditContract>* | 一个 CreditContract 结构数组 |
credit_get_cash
- 查询融资融券资金
注:融资融券暂时仅支持实盘委托,不支持仿真交易
函数原型:
int credit_get_cash(CreditCash &cash, const char *account = NULL);
参数:
参数名 | 类型 | 说明 |
---|---|---|
cash | CreditCash | 出参,返回资金信息 |
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 委托数量 |
position_effect | int | 开平类型 参见 enum PositionSide |
side | int | 委托方向 参见 enum OrderSide |
order_type | int | 委托类型 参见 enum OrderType |
price | double | 委托价格 |
algo_param | struct | 算法参数 参见 struct AlgoParam |
account | const char * | 实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL |
返回值 | AlgoOrder | AlgoOrder, 如果函数调用失败, 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_id | const char * | 委托单的客户 id, 可以在下单或查单时获得 |
account | const 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_id | const char * | 委托单的客户 id, 可以在下单或查单时获得 |
status | int | 参考 AlgoOrderStatus |
account | const char * | 实盘账号 id, 关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL |
返回值 | int | 成功返回 0, 失败返回错误码 |
get_algo_orders
- 查询算法委托
注:仅支持实时模式,部分券商版本可用
查询所有算法委托单
函数原型:
DataArray<AlgoOrder>* get_algo_orders(const char *account = NULL);
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | const 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_id | const char * | 母单 ID |
account | const char * | 账号 IDaccount_id , 如果输入为 NULL, 则返回所有账号的委托 |
返回值 | DataArray<Order>* | 一个 AlgoOrder 结构数组 |
新股业务成员函数
ipo_buy
- 新股新债申购
注:仅在实盘中可以使用
函数原型:
Order ipo_buy(const char *symbol, int volume, double price, const char *account = NULL);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 委托数量 |
price | double | 申购价 |
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | const 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_type | int | 指定要查询的品种,参见枚举SecurityType |
account | const char * | 实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL |
返回值 | DataArray<IPOInstruments>* | 一个 IPOInstruments 结构数组 |
ipo_get_match_number
- 配号查询
注:仅在实盘中可以使用
函数原型:
DataArray<IPOMatchNumber>* ipo_get_match_number(const char *account = NULL);
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | const char * | 实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL |
返回值 | DataArray<IPOMatchNumber>* | 一个 IPOMatchNumber 结构数组 |
ipo_get_lot_info
- 中签查询
注:仅在实盘中可以使用
函数原型:
DataArray<IPOLotInfo>* ipo_get_lot_info(const char *account = NULL);
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 申购份额 |
price | double | 申购价 |
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 赎回份额 |
price | double | 赎回价 |
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 认购份额 |
price | double | 认购价 |
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 申购份额 |
price | double | 申购价 |
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 赎回份额 |
price | double | 赎回价 |
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 委托数量 |
price | double | 委托价格 |
order_type | int | 委托类型 参见 enum OrderType |
order_duration | int | 委托时间属性 参见 enum OrderDuration |
order_qualifier | int | 委托成交属性 参见 enum OrderQualifier |
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 委托数量 |
price | double | 转股价(大部分柜台忽略,可填 0) |
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 委托数量 |
price | double | 回售价(大部分柜台忽略,可填 0) |
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | const char * | 标的代码,只能单个标的 |
volume | int | 委托数量 |
account | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
params | Parameter * | 指向一个 Parameter 结构数据的指针 |
count | int | 数组长度 |
返回值 | int | 成功返回 0, 失败返回错误码 |
del_parameters
- 删除参数
注:动态参数仅在仿真交易和实盘交易下生效
删除动态参数
函数原型:
int del_parameters(const char *keys);
参数:
参数名 | 类型 | 说明 |
---|---|---|
keys | const char * | 对应参数的键值 |
返回值 | int | 成功返回 0, 失败返回错误码 |
set_parameters
- 设置参数
注:动态参数仅在仿真交易和实盘交易下生效
设置参数值
函数原型:
int set_parameters(Parameter *params, int count);
参数:
参数名 | 类型 | 说明 |
---|---|---|
params | Parameter * | 指向一个 Parameter 结构数据的指针 |
count | int | 数组长度 |
返回值 | int | 成功返回 0, 失败返回错误码 |
get_parameters
- 获取参数
注:动态参数仅在仿真交易和实盘交易下生效
获取参数值
函数原型:
DataArray<Parameter>* get_parameters();
参数:
参数名 | 类型 | 说明 |
---|---|---|
返回值 | DataArray | 一个 Parameter 数组 |
set_symbols
- 设置标的
设置交易标的, 设置成功后, 标的将在终端上显示。
函数原型:
int set_symbols(const char *symbols);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbols | const 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);
参数:
参数名 | 类型 | 说明 |
---|---|---|
tick | Tick * | 收到的 Tick 行情 |
on_bar
- 收到 bar 行情
收到 bar 行情时触发
函数原型:
virtual void on_bar(Bar *bar);
参数:
参数名 | 类型 | 说明 |
---|---|---|
bar | Bar* | 收到的 Bar 行情 |
on_l2transaction
- 收到逐笔成交
收到逐笔成交(L2 行情时有效)
函数原型:
virtual void on_l2transaction(L2Transaction *l2transaction);
参数:
参数名 | 类型 | 说明 |
---|---|---|
l2transaction | L2Transaction* | 收到的逐笔成交行情 |
on_l2order
- 收到逐笔委托
收到逐笔委托(深交所 L2 行情时有效)
函数原型:
virtual void on_l2order(L2Order *l2order);
参数:
参数名 | 类型 | 说明 |
---|---|---|
l2order | L2Order * | 收到的逐笔委托行情 |
on_l2order_queue
- 收到委托队列
收到委托队列, L2 行情时有效,最优价最大 50 笔委托量
函数原型:
virtual void on_l2order_queue(L2OrderQueue *l2queue);
参数:
参数名 | 类型 | 说明 |
---|---|---|
l2queue | L2OrderQueue * | 收到的委托队列行情 |
on_order_status
- 委托变化
响应委托状态更新事情,下单后及委托状态更新时被触发。 注意:交易账户重连后,会重新推送一遍交易账户登录成功后查询回来的所有委托
函数原型:
virtual void on_order_status(Order *order);
参数:
参数名 | 类型 | 说明 |
---|---|---|
order | Order* | 发生变化的委托 |
注意:
- 交易服务连接断开重连后, 会自动重新推送一次所有委托(包含近期委托).
- 交易账号错误断开到"已登陆"状态后, 会自动重新推送一次所有委托(包含近期委托).
- 交易服务连接断开重连事件通过 on_trade_data_connected()回调通知.
- 交易账号错误断开到"已登陆"事件通过 on_account_status()回调通知.
- 主动查询日内全部委托记录和未结委托的方式为 get_orders()和 get_unfinished_orders()函数.
on_execution_report
- 执行回报
响应委托被执行事件,委托成交或者撤单拒绝后被触发。 注意:交易账户重连后,会重新推送一遍交易账户登录成功后查询回来的所有执行回报
函数原型:
virtual void on_execution_report(ExecRpt *rpt);
参数:
参数名 | 类型 | 说明 |
---|---|---|
rpt | ExecRpt* | 收到的回报 |
注意:
- 交易服务连接断开重连后, 会自动重新推送一次所有成交(包含近期成交).
- 交易账号错误断开到"已登陆"状态后, 会自动重新推送一次所有成交(包含近期成交).
- 交易服务连接断开重连事件通过 on_trade_data_connected()回调通知.
- 交易账号错误断开到"已登陆"事件通过 on_account_status()回调通知.
- 主动查询日内全部执行回报的方式为 get_execution_reports()函数.
on_parameter
- 参数变化
参数变化时触发, 一般是终端修了动态参数
函数原型:
virtual void on_parameter(Parameter *param);
参数:
参数名 | 类型 | 说明 |
---|---|---|
param | Parameter* | 变化的参数 |
on_schedule
- 定时任务触发
预设任务时间条件符合时触发
函数原型:
virtual void on_schedule(const char *data_rule, const char *time_rule);
参数:
参数名 | 类型 | 说明 |
---|---|---|
data_rule | const char * | 设置的 data_rule |
time_rule | const char * | 设置的 time_rule |
on_backtest_finished
- 回测完成
回测完成时触发
函数原型:
virtual void on_backtest_finished();
on_indicator
- 回测完成后收到绩效报告
回测完成后收到绩效报告时触发
函数原型:
virtual void on_indicator(Indicator *indicator);
参数:
参数名 | 类型 | 说明 |
---|---|---|
data_rule | Indicator * | 设置的 data_rule |
on_account_status
- 实盘账号状态变化
实盘账号状态变化时触发, 比如实盘账号登录,退出登录等
函数原型:
virtual void on_account_status(AccountStatus *account_status);
参数:
参数名 | 类型 | 说明 |
---|---|---|
account_status | AccountStatus * | 对应变化的账号 |
on_error
- 错误产生
有错误产生时触发, 比如网络断开。
函数原型:
virtual void on_error(int error_code, const char *error_msg);
参数:
参数名 | 类型 | 说明 |
---|---|---|
error_code | int | 错误码 |
error_msg | const 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论