策略基类
基类原型
策略类简介
策略类集成了行情、交易和事件的接口,用户的策略都从此类继承实现自己的业务逻辑。每个进程只能实例化一个策略类对象。
策略类定义
public class Strategy
{
//策略基类构造函数
//token:
//strategy_id:策略ID
//mode:运行模式
public Strategy(string token, string strategyId, int mode);
//=====================================策略参数类函数=====================================
//添加参数
public int AddParameters(Parameter param);
//删除参数
public int DelParameters(string keys);
//获取标的
public GMDataList<string> GetSymbols();
//设置标的
public int SetSymbols(string symbols);
//设置回测参数
public int SetBacktestConfig(string startTime, string endTime, double initialCash = 1000000, double transactionRatio = 1, double commissionRatio = 0, double slippageRatio = 0, int adjust = 0, int checkCache = 1);
//设置参数
public int SetParameters(List<Parameter> parameters);
//=======================================交易函数================================================
//查询交易账号
public GMDataList<Account> GetAccounts();
//查询资金
public GMDataList<Cash> GetCash(string account = null);
//查询成交
public GMDataList<ExecRpt> GetExecutionReports(string account = null);
//查询委托
public GMDataList<Order> GetOrders(string account = null);
//查询持仓
public GMDataList<Position> GetPosition(string account = null);
//查询未结委托
public GMDataList<Order> GetUnfinishedOrders(string account = null);
//委托撤单,
public int OrderCancel(string clOrdIds);
//撤销所有委托
public void OrderCancelAll();
//平当前所有可平持仓
public GMDataList<Order> OrderCloseAll();
//按总资产指定比例委托
public GMData<Order> OrderPercent(string symbol, double percent, int side, int orderType, int positionEffect, double price = 0, string account = null);
//调仓到目标持仓比例(总资产的比例)
public GMData<Order> OrderTargetPercent(string symbol, double percent, int positionSide, int orderType, double price = 0, string account = null);
//调仓到目标持仓额
public GMData<Order> OrderTargetValue(string symbol, double value, int positionSide, int orderType, double price = 0, string account = null);
//调仓到目标持仓量
public GMData<Order> OrderTargetVolume(string symbol, int volume, int positionSide, int orderType, double price = 0, string account = null);
//按指定价值委托
public GMData<Order> OrderValue(string symbol, double value, int side, int orderType, int positionEffect, double price = 0, string account = null);
//按指定量委托
public GMData<Order> OrderVolume(string symbol, int volume, OrderSide side, OrderType orderType, PositionEffect positionEffect, double price = 0, string account = null);
//=====================================基础函数=================================
//运行策略
public int Run();
//定时任务
public int Schedule(string dataRule, string timeRule);
//停止策略
public int Stop();
//当前事件
public long Now();
//设置token
public int SetToken(string token);
//设置运行模式
public int SetMode(StrategyMode mode);
//设置策略ID
public int SetStrategyId(string strategyId);
//查询指定账户状态
public AccountStatus GetAccountStatus(string accountId);
//查询所有账户状态
public List<AccountStatus> GetAccountStatus()
//====================================数据函数=============================================
//订阅行情
public int Subscribe(string symbols, string frequency, bool unsubscribePrevious = false);
//退订行情
public int Unsubscribe(string symbols, string frequency);
//========================================事件函数==============================================
//初始化完成
public virtual void OnInit();
//实盘账号状态变化
public virtual void OnAccountStatus(AccountStatus accountStatus);
//收到bar行情
public virtual void OnBar(Bar bar);
//cash发生变化
public virtual void OnCashStatus(Cash order);
//错误事件
public virtual void OnError(int errorCode, string errorMsg);
//执行回报
public virtual void OnExecutionReport(ExecRpt rpt);
//回测结束
public virtual void OnBacktestFinished(Indicator indicator);
//数据库已连接
public virtual void OnMarketDataConnected();
//数据库断开
public virtual void OnMarketDataDisconnected();
//委托发生变化
public virtual void OnOrderStatus(Order order);
//运行时参数发生变化
public virtual void OnParameter(List<Parameter> param);
//position发生变化
public virtual void OnPosition(Position position);
//定时任务触发
public virtual void OnSchedule(string dataRule, string timeRule);
//策略结束
public virtual void OnStop();
//收到tick行情
public virtual void OnTick(Tick tick);
//交易已连接
public virtual void OnTradeDataConnected();
//交易断开
public virtual void OnTradeDataDisconnected();
}
基本成员函数
Strategy - 构造函数
构造策略对象。
函数原型:
Strategy();
Strategy(string token, string strategyId, StrategyMode mode);
参数:
参数名 | 类型 | 说明 |
---|---|---|
token | string | 系统权限密钥,可在终端系统设置-密钥管理中生成 |
strategyId | string | 策略 ID,在终端中获取 |
mode | StrategyMode | 策略模式,参见 enum StrategyMode |
注意事项:
- 一个进程只能构造一个策略对象。
Run - 运行策略
运行策略。只有调用 Run 后,才会驱动所有的事件,如行情接入与交易事件。
函数原型:
int Run();
参数:
参数名 | 类型 | 说明 |
---|---|---|
返回值 | int | 如果策略正常退出返回 0, 非正常退出返回错误码 |
注意事项:
调用 Run 会阻塞线程,策略进入事件驱动状态,所以所有初始操作(如读配置文件,分配缓冲区等)都应该在 Run 之前完成,如果 run 退出,意味着策略运行结束,整个进程应该就此退出。
Stop - 停止策略
用于停止策略, 也就是如果调用 Run()之后, 在某个事件响应中调用 Stop, 这是 Run 就是退出,并返回 0。
函数原型:
void Stop();
SetToken - 设置用户 token
函数原型:
int SetToken(string token)
参数:
参数名 | 类型 | 说明 |
---|---|---|
token | string | 系统权限密钥,可在终端系统设置-密钥管理中生成 |
注意事项: 不管是从构造函数传入还成员函数传入,token
, strategyId
, mode
都是必须要设置的参数。
SetMode - 设置运行模式
函数原型:
int SetMode(StrategyMode mode)
参数:
参数名 | 类型 | 说明 |
---|---|---|
mode | StrategyMode | 策略运行模式,参见StrategyMode |
注意事项: 不管是从构造函数传入还成员函数传入,token
, strategyId
, mode
都是必须要设置的参数
SetStrategyId - 设置策略 ID
函数原型:
int SetStrategyId(string strategyId)
注意事项: 不管是从构造函数传入还成员函数传入,token
, strategyId
, mode
都是必须要设置的参数
参数:
参数名 | 类型 | 说明 |
---|---|---|
strategyId | string | 策略 ID,在终端中获取 |
GetAccountStatus - 获取策略所有账户状态
函数原型:
List<AccountStatus> GetAccountStatus()
参数:
参数名 | 类型 | 说明 |
---|---|---|
返回值 | List | AccountStatus 列表 |
示例:
//获取当策略所有账户状态
var status_l = GetAccountStatus();
//遍历账户
foreach (var status in status_l)
{
//打印 AccountStatus 字段
System.Console.WriteLine("accountId: {0}, accountName: {1}, state: {2}, errorCode: {3}, errorMsg: {4}", status.accountId, status.accountName, status.state, status.errorCode, status.errorMsg);
}
GetAccountStatus - 获取指定账户状态
函数原型:
AccountStatus GetAccountStatus(string accountId)
参数:
参数名 | 类型 | 说明 |
---|---|---|
返回值 | AccountStatus | 账户状态结构 |
Schedule - 预设定时任务
在指定时间自动执行策略算法, 通常用于选股类型策略。Schedule 一般在 OnInit 中调用。如果 Schedule 预设成功,那么达成预设时间条件时,OnSchedule 会被调用,并在 OnSchedule 的参数中返回设置的dataRule
和timeRule
。Schedule 可以调用多次,设置多个不同定时任务。
函数原型:
int Schedule(string dataRule, string timeRule);
参数:
参数名 | 类型 | 说明 |
---|---|---|
dataRule | string | n + 时间单位, 可选’d/w/m’ 表示 n 天/n 周/n 月 |
timeRule | string | 执行算法的具体时间 (%H:%M:%S 格式) |
返回值 | int | 预设成功返回 0, 预设失败返回错误码 |
示例:
#每天的19:06:20执行
Schedule(dateRule="1d", timeRule="19:06:20")
#每月的第一个交易日的09:40:00执行
Schedule(dateRule="1m", time_rule="9:40:00")
注意事项:
- 现在
dataRule
暂只支持 1d,1w,1m, 任意 n 后续会支持。 - 1w,1m 只在回测中支持,实盘模式中不支持。
Now - 获取当前时间
函数原型:
DateTime Now();
参数:
参数名 | 类型 | 说明 |
---|---|---|
返回值 | DateTime | 当前时间 |
注意事项:
- 实时模式下,返回当前的系统时间。回测模式下,返回当前的回测时间点。格式是 DateTime。
SetBacktestConfig - 设置回测参数
如果 mode 设置为回测模式,则在调用 Run 之前,需要先设置本函数设置回测参数。在实时模式下,该调用被忽略。
函数原型:
int SetBacktestConfig(
string startTime,
string endTime,
double initialCash = 1000000,
double transactionRatio = 1,
double commissionRatio = 0,
double slippageRatio = 0,
Adjust adjust = 0,
int checkCache = 1
);
参数:
参数名 | 类型 | 说明 |
---|---|---|
startTime | string | 回测开始时间 (%Y-%m-%d %H:%M:%S 格式) |
endTime | string | 回测结束时间 (%Y-%m-%d %H:%M:%S 格式) |
initialCash | double | 回测初始资金, 默认 1000000 |
transactionRatio | double | 回测成交比例, 默认 1.0, 即下单 100%成交 |
commissionRatio | double | 回测佣金比例, 默认 0 |
slippageRatio | double | 回测滑点比例, 默认 0 |
adjust | Adjust | 复权方式,参见 enum Adjust |
checkCache | int | 回测是否使用缓存:1 - 使用, 0 - 不使用;默认使用 |
注意: startTime 和 endTime 中月,日,时,分,秒均可以只输入个位数,例:"2016-6-7 9:55:0"
或"2017-8-1 14:6:0"
,但若对应位置为零,则 0 不可被省略,比如不能输入"2017-8-1 14:6: "
行情成员函数
subscribe - 订阅行情
订阅行情推送,实时模式下订阅实时行情推送,回测模式下订阅历史行情推送。订阅 tick 会触发 OnTick 回调,订阅 bar 则触发 OnBar 回调。
函数原型:
int Subscribe(string symbols, string frequency, bool unsubscribePrevious = false);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbols | string | 订阅标的代码列表, 字符串格式,如有多个代码, 中间用, (英文逗号) 隔开 |
frequency | string | 频率, 支持 "tick", "1d", "15s", "30s" 等 |
unsubscribePrevious | 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(string symbols, string frequency);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbols | string | 退订标的代码列表, 字符串格式,如有多个代码, 中间用, (英文逗号) 隔开 |
frequency | string | 频率, 支持 "tick", "1d", "15s", "30s" 等 |
返回值 | int | 退订成功返回 0, 退订失败返回错误码 |
示例:
//退订 SHSE.600000和 SZSE.000001 两个标的的tick行情
Unsubscribe(symbols="SHSE.600000,SHSE.600004", frequency="tick");
普通交易成员函数
GetAccounts - 查询交易账号
用于查询交易账号配置信息。多用于实盘时,策略同时关联多个交易账号的时候,获取所有交易账号的信息,所返回的账号 id(accounId
)用于后续各个交易 api 的入参, 即指定操作某个交易账户。 如果关联的交易账号只有一个, 一般用不到此函数。
函数原型:
GMDataList<Account> GetAccounts();
参数:
参数名 | 类型 | 说明 |
---|---|---|
返回值 | GMDataList<Account> | 一个 GMDataList 结构 |
PlaceOrder - 按指定量委托
按指定量委托, 如果调用成功,后续委托单状态变化将会触发 on_order_status 回调。
函数原型:
GMData<Order> PlaceOrder(PlaceOrderReq oreq)
参数:
参数名 | 类型 | 说明 |
---|---|---|
oreq | PlaceOrderReq | 下单参数结构 |
注意:
1. 仅支持一个标的代码,若交易代码输入有误,终端会拒绝此单,并显示委托代码不正确
。
2. 若下单数量输入有误,终端会拒绝此单,并显示委托量不正确
。股票买入最小单位为100
,卖出最小单位为1
,如存在不足 100 股的持仓一次性卖出;期货买卖最小单位为1
,向下取整
。
3. 若仓位不足,终端会拒绝此单,显示仓位不足
。平仓时股票默认平昨仓
,期货默认平今仓
。应研究需要,股票也支持卖空操作
。
4. 函数调用成功并不意味着委托已经成功,只是意味委托单已经成功发出去, 委托是否成功根据 OnOrderStatus,或 GetOrder 来判断。
OrderVolume - 按指定量委托
按指定量委托, 如果调用成功,后续委托单状态变化将会触发 on_order_status 回调。
函数原型:
GMData<Order> OrderVolume(string symbol, int volume, OrderSide side, OrderType orderType, PositionEffect positionEffect, double price = 0, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
volume | int | 委托数量 |
side | OrderSide | 委托方向 参见 enum OrderSide |
orderType | OrderType | 委托类型 参见 enum OrderType |
positionEffect | PositionEffect | 开平类型 参见 enum PositionSide |
price | double | 委托价格, (限价委托的委托价格,市价委托的保护价) |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | Order | 一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected , Order.ordRejReasonDetail 为错误原因描述, 其它情况表示函数调用成功,Order.clOrdId 为本次委托的标识,可用于追溯订单状态或撤单 |
示例:
//以11块的价格限价买入10000股浦发银行
GMData<Order> o = orderVolume("SHSE.600000", 10000, OrderSide.OrderSide_Buy, OrderType.OrderType_Limit, PositionEffect.PositionEffect_Open, 11);
注意:
1. 仅支持一个标的代码,若交易代码输入有误,终端会拒绝此单,并显示委托代码不正确
。
2. 若下单数量输入有误,终端会拒绝此单,并显示委托量不正确
。股票买入最小单位为100
,卖出最小单位为1
,如存在不足 100 股的持仓一次性卖出;期货买卖最小单位为1
,向下取整
。
3. 若仓位不足,终端会拒绝此单,显示仓位不足
。平仓时股票默认平昨仓
,期货默认平今仓
。应研究需要,股票也支持卖空操作
。
4. 函数调用成功并不意味着委托已经成功,只是意味委托单已经成功发出去, 委托是否成功根据 OnOrderStatus,或 GetOrder 来判断。
OrderValue - 按指定价值委托
按指定价值委托, 如果调用成功,后续委托单状态变化将会触发 OnOrderStatus 回调。
函数原型:
GMData<Order> OrderValue(string symbol, double value, OrderSide side, OrderType orderType, PositionEffect positionEffect, double price = 0, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
value | int | 股票价值 |
side | OrderSide | 委托方向 参见 enum OrderSide |
orderType | OrderType | 委托类型 参见 enum OrderType |
positionEffect | PositionEffect | 开平类型 参见 enum PositionSide |
price | double | 委托价格, (限价委托的委托价格,市价委托的保护价) |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | Order | 一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected , Order.ordRejReasonDetail 为错误原因描述, 其它情况表示函数调用成功,Order.clOrdId 为本次委托的标识,可用于追溯订单状态或撤单 |
示例:
//下限价单,以11元每股的价格买入价值为100000元的SHSE.600000, 根据volume = value / price,计算并取整得到volume = 9000
GMData<Order> o = order_value("SHSE.600000", 100000, OrderSide.OrderSide_Buy, OrderType.OrderType_Limit, positionEffect.PositionEffect_Open, 11);
注意:
1. 仅支持一个标的代码,若交易代码输入有误,终端会拒绝此单,并显示委托代码不正确
。
2. 根据指定价值计算购买标的数量,即value/price
。股票买卖最小单位为100
,不足 100 部分向下取整
,如存在不足 100 的持仓一次性卖出;期货买卖最小单位为1
,向下取整
。
3. 若仓位不足,终端会拒绝此单,显示仓位不足
。平仓时股票默认平昨仓
,期货默认平今仓
。应研究需要,股票也支持卖空操作
。
4. 函数调用成功并不意味着委托已经成功,只是意味委托单已经成功发出去, 委托是否成功根据 OnOrderStatus,或 GetOrder 来判断。
OrderPercent - 按总资产指定比例委托
按总资产指定比例委托, 如果调用成功,后续委托单状态变化将会触发 OnOrderStatus 回调。
函数原型:
GMData<Order> OrderPercent(string symbol, double percent, OrderSide side, OrderType orderType, PositionEffect positionEffect, double price = 0, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
percent | double | 委托占总资产比例 |
side | OrderSide | 委托方向 参见 enum OrderSide |
orderType | OrderType | 委托类型 参见 enum OrderType |
positionEffect | PositionEffect | 开平类型 参见 enum PositionSide |
price | double | 委托价格, (限价委托的委托价格,市价委托的保护价) |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | Order | 一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected , Order.ordRejReasonDetail 为错误原因描述, 其它情况表示函数调用成功,Order.clOrdId 为本次委托的标识,可用于追溯订单状态或撤单 |
示例:
//当前总资产为1000000。下限价单,以11元每股的价格买入SHSE.600000,期望买入比例占总资产的10%,根据volume = nav * precent / price 计算取整得出volume = 9000
GMData<Order> o = OrderPercent("SHSE.600000", 0.1, OrderSide.OrderSide_Buy, OrderType.OrderType_Limit, PositionEffect.PositionEffect_Open, 11);
注意:
1. 仅支持一个标的代码,若交易代码输入有误,终端会拒绝此单,并显示委托代码不正确
。
2. 根据指定比例计算购买标的数量,即(nav*precent)/price
,股票买卖最小单位为100
,不足 100 部分向下取整
,如存在不足 100 的持仓一次性卖出;期货买卖最小单位为1
,向下取整
。
3. 若仓位不足,终端会拒绝此单,显示仓位不足
。平仓时股票默认平昨仓
,期货默认平今仓
。应研究需要,股票也支持卖空操作
。
4. 函数调用成功并不意味着委托已经成功,只是意味委托单已经成功发出去, 委托是否成功根据 OnOrderStatus,或 GetOrder 来判断。
OrderTargetVolume - 调仓到目标持仓量
调仓到目标持仓量, 如果调用成功,后续委托单状态变化将会触发 OnOrderStatus 回调。
函数原型:
GMData<Order> OrderTargetVolume(string symbol, int volume, PositionSide positionSide, OrderType orderType, double price = 0, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
volume | int | 期望的最终数量 |
positionSide | PositionSide | 持仓方向 参见 enum PositionSide |
orderType | OrderType | 委托类型 参见 enum OrderType |
price | double | 委托价格, (限价委托的委托价格,市价委托的保护价) |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | Order | 一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected , Order.ordRejReasonDetail 为错误原因描述, 其它情况表示函数调用成功,Order.clOrdId 为本次委托的标识,可用于追溯订单状态或撤单 |
示例:
//当前SHSE.600000多方向持仓量为0,期望持仓量为10000,下单量为期望持仓量 - 当前持仓量 = 10000
GMData<Order> o = OrderTargetVolume("SHSE.600000", 10000, PositionSide.PositionSide_Long, OrderType.OrderType_Limit, 11);
注意:
1. 仅支持一个标的代码,若交易代码输入有误,终端会拒绝此单,并显示委托代码不正确
。
2. 根据目标数量计算下单数量,系统判断开平仓类型。若下单数量有误,终端拒绝此单,并显示委托量不正确
。若实际需要买入数量为 0,则订单会被拒绝,终端无显示,无回报
。股票买卖最小单位为100
,不足 100 部分向下取整
,如存在不足 100 的持仓一次性卖出;期货买卖最小单位为1
,向下取整
。
3. 若仓位不足,终端会拒绝此单,显示仓位不足
。平仓时股票默认平昨仓
,期货默认平今仓
。应研究需要,股票也支持卖空操作
。
4. 函数调用成功并不意味着委托已经成功,只是意味委托单已经成功发出去, 委托是否成功根据 OnOrderStatus,或 GetOrder 来判断。
OrderTargetValue - 调仓到目标持仓额
调仓到目标持仓额, 如果调用成功,后续委托单状态变化将会触发 OnOrderStatus 回调。
函数原型:
GMData<Order> OrderTargetValue(string symbol, double value, PositionSide positionSide, OrderType orderType, double price = 0, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
value | int | 期望的股票最终价值 |
positionSide | PositionSide | 持仓方向 参见 enum PositionSide |
orderType | OrderType | 委托类型 参见 enum OrderType |
price | double | 委托价格, (限价委托的委托价格,市价委托的保护价) |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | Order | 一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected , Order.ordRejReasonDetail 为错误原因描述, 其它情况表示函数调用成功,Order.clOrdId 为本次委托的标识,可用于追溯订单状态或撤单 |
示例:
//当前SHSE.600000多方向当前持仓量为0,目标持有价值为100000的该股票,根据value / price 计算取整得出目标持仓量volume为9000,目标持仓量 - 当前持仓量 = 下单量为9000
GMData<Order> o = OrderTargetValue("SHSE.600000", 100000, PositionSide.PositionSide_Long, OrderType.OrderType_Limit, 11);
注意:
1. 仅支持一个标的代码,若交易代码输入有误,终端会拒绝此单,并显示委托代码不正确
。
2. 根据目标数量计算下单数量,系统判断开平仓类型。若下单数量有误,终端拒绝此单,并显示委托量不正确
。若实际需要买入数量为 0,则订单会被拒绝,终端无显示,无回报
。股票买卖最小单位为100
,不足 100 部分向下取整
,如存在不足 100 的持仓一次性卖出;期货买卖最小单位为1
,向下取整
。
3. 若仓位不足,终端会拒绝此单,显示仓位不足
。平仓时股票默认平昨仓
,期货默认平今仓
。应研究需要,股票也支持卖空操作
。
4. 函数调用成功并不意味着委托已经成功,只是意味委托单已经成功发出去, 委托是否成功根据 OnOrderStatus,或 GetOrder 来判断。
OrderTargetPercent - 调仓到目标持仓比例(总资产的比例)
调仓到目标持仓比例(总资产的比例), 如果调用成功,后续委托单状态变化将会触发 OnOrderStatus 回调。
函数原型:
GMData<Order> OrderTargetPercent(string symbol, double percent, PositionSide positionSide, OrderType orderType, double price = 0, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
percent | double | 期望的最终占总资产比例 |
positionSide | PositionSide | 持仓方向 参见 enum PositionSide |
orderType | OrderType | 委托类型 参见 enum OrderType |
price | double | 委托价格, (限价委托的委托价格,市价委托的保护价) |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | Order | 一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected , Order.ordRejReasonDetail 为错误原因描述, 其它情况表示函数调用成功,Order.clOrdId 为本次委托的标识,可用于追溯订单状态或撤单 |
示例:
//当前总资产价值为1000000,目标为以11元每股的价格买入SHSE.600000的价值占总资产的10%,根据volume = nav * percent / price 计算取整得出应持有9000股。当前该股持仓量为零,因此买入量为9000
GMData<Order> o = OrderTargetPercent("SHSE.600000", 0.1, PositionSide.PositionSide_Long, OrderType.OrderType_Limit, 11);
注意:
1. 仅支持一个标的代码,若交易代码输入有误,终端会拒绝此单,并显示委托代码不正确
。
2. 根据目标比例计算下单数量,为占总资产(nav)
比例,系统判断开平仓类型。若下单数量有误,终端拒绝此单,并显示委托量不正确
。若实际需要买入数量为 0,则本地拒绝此单,终端无显示,无回报
。股票买卖最小单位为100
,不足 100 部分向下取整
,如存在不足 100 的持仓一次性卖出;期货买卖最小单位为1
,向下取整
。
3. 若仓位不足,终端会拒绝此单,显示仓位不足
。平仓时股票默认平昨仓
,期货默认平今仓
。应研究需要,股票也支持卖空操作
。
4. 函数调用成功并不意味着委托已经成功,只是意味委托单已经成功发出去, 委托是否成功根据 OnOrderStatus,或 GetOrder 来判断。
OrderCloseAll - 平当前所有可平持仓
平当前所有可平持仓, 如果调用成功,后续委托单状态变化将会触发 OnOrderStatus 回调
函数原型:
GMDataList<Order> OrderCloseAll()
参数:
参数名 | 类型 | 说明 |
---|---|---|
返回值 | GMDataList<order> | 一个GMDataList<order> 对象 |
OrderCancel - 委托撤单
撤销单个委托单, 如果调用成功,后续委托单状态变化将会触发 OnOrderStatus 回调
函数原型:
int OrderCancel(string clOrdIds, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
clOrdIds | string | 委托单的客户 id, 可以在下单或查单时获得 |
account | string | 实盘账号 id, 关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | int | 成功返回 0, 失败返回错误码 |
OrderCancelAll - 撤销所有委托
撤销所有委托, 如果调用成功,后续委托单状态变化将会触发 OnOrderStatus 回调
函数原型:
int OrderCancelAll();
参数:
参数名 | 类型 | 说明 |
---|---|---|
返回值 | int | 成功返回 0, 失败返回错误码 |
GetOrders - 查询所有委托
查询所有委托单
函数原型:
GMDataList<Order> GetOrders(string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | string | 账号 ID accountId , 如果输入为 null, 则返回所有账号的委托 |
返回值 | GMDataList<Order> | 一个GMDataList<order> 对象 |
GetUnfinishedOrders - 查询未结委托
查询所有未结委托
函数原型:
GMDataList<Order> GetUnfinishedOrders(string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | string | 账号 IDaccountId , 如果输入为 null, 则返回所有账号的委托 |
返回值 | GMDataList<Order> | 一个GMDataList<order> 对象 |
GetExecutionReports - 查询成交
查询所有成交
函数原型:
GMDataList<ExecRpt> GetExecutionReports(string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | string | 账号 ID accountId , 如果输入为 null, 则返回所有账号的成交 |
返回值 | GMDataList<ExecRpt> | 一个GMDataList<ExecRpt> 对象 |
GetCash - 查询资金
查询资金
函数原型:
GMDataList<Cash> GetCash(string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | string | 账号 IDaccountId , 如果输入为 NULL, 则返回所有账号的资金 |
返回值 | GMDataList<Cash> | 一个GMDataList<Cash> 对象 |
GetPosition - 查询持仓
查询所有持仓
函数原型:
GMDataList<Position> GetPosition(string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | string | 账号 IDaccountId , 如果输入为 null, 则返回所有账号的持仓 |
返回值 | GMDataList<Position> | 一个GMDataList<Position> 对象 |
两融业务成员函数
CreditBuyingOnMargin - 融资买入
注:融资融券暂时仅支持实盘委托,不支持仿真交易
函数原型:
public GMData<Order> CreditBuyingOnMargin(string symbol, int volume, double price, OrderType orderType = OrderType.OrderType_Limit, OrderDuration orderDuration = OrderDuration.OrderDuration_Unknown, OrderQualifier orderQualifier = OrderQualifier.OrderQualifier_Unknown, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
volume | int | 委托数量 |
price | double | 委托价格 |
orderType | int | 委托类型 参见 enum OrderType |
orderDuration | int | 委托时间属性 参见 enum OrderDuration |
orderQualifier | int | 委托成交属性 参见 enum OrderQualifier |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | GMData<Order> |
示例:
//以价格11.9融资买入10000股浦发银行
GMData<Order> o = CreditBuyingOnMargin("SHSE.600000", 10000, 11.9);
CreditShortSelling - 融券卖出
注:融资融券暂时仅支持实盘委托,不支持仿真交易
函数原型:
public GMData<Order> CreditShortSelling(string symbol, int volume, double price, OrderType orderType = OrderType.OrderType_Limit, OrderDuration orderDuration = OrderDuration.OrderDuration_Unknown, OrderQualifier orderQualifier = OrderQualifier.OrderQualifier_Unknown, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
volume | int | 委托数量 |
price | double | 委托价格 |
orderType | int | 委托类型 参见 enum OrderType |
orderDuration | int | 委托时间属性 参见 enum OrderDuration |
orderQualifier | int | 委托成交属性 参见 enum OrderQualifier |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | GMData<Order> | Order 结构 |
示例:
//以价格11.9融券卖出10000股浦发银行
GMData<Order> o = CreditShortSelling("SHSE.600000", 10000, 11.9);
注意: 融券卖出一般不支持市价单,以柜台为准
CreditRepayShareByBuyingShare - 买券还券
注:融资融券暂时仅支持实盘委托,不支持仿真交易 函数原型:
public GMData<Order> CreditRepayShareByBuyingShare(string symbol, int volume, double price, OrderType orderType = OrderType.OrderType_Limit, OrderDuration orderDuration = OrderDuration.OrderDuration_Unknown, OrderQualifier orderQualifier = OrderQualifier.OrderQualifier_Unknown, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
volume | int | 委托数量 |
price | double | 委托价格 |
orderType | int | 委托类型 参见 enum OrderType |
orderDuration | int | 委托时间属性 参见 enum OrderDuration |
orderQualifier | int | 委托成交属性 参见 enum OrderQualifier |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | GMData<Order> | - |
示例:
//以价格11.9买入10000股浦发银行还券
GMData<Order> o = CreditRepayShareByBuyingShare("SHSE.600000", 10000, 11.9);
CreditRepayShareByBuyingShare - 卖券还款
注:融资融券暂时仅支持实盘委托,不支持仿真交易
函数原型:
public GMData<Order> CreditRepayCashBySellingShare(string symbol, int volume, double price, OrderType orderType = OrderType.OrderType_Limit, OrderDuration orderDuration = OrderDuration.OrderDuration_Unknown, OrderQualifier orderQualifier = OrderQualifier.OrderQualifier_Unknown, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
volume | int | 委托数量 |
price | double | 委托价格 |
orderType | int | 委托类型 参见 enum OrderType |
orderDuration | int | 委托时间属性 参见 enum OrderDuration |
orderQualifier | int | 委托成交属性 参见 enum OrderQualifier |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | GMData<Order> | - |
示例:
//以价格11.9卖出10000股浦发银行还款
GMData<Order> o = CreditRepayCashBySellingShare("SHSE.600000", 10000, 11.9);
CreditBuyingOnCollateral - 担保品买入
注:融资融券暂时仅支持实盘委托,不支持仿真交易
函数原型:
public GMData<Order> CreditBuyingOnCollateral(string symbol, int volume, double price, OrderType orderType = OrderType.OrderType_Limit, OrderDuration orderDuration = OrderDuration.OrderDuration_Unknown, OrderQualifier orderQualifier = OrderQualifier.OrderQualifier_Unknown, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
volume | int | 委托数量 |
price | double | 委托价格, (限价委托的委托价格,市价委托的保护价) |
orderType | int | 委托类型 参见 enum OrderType |
orderDuration | int | 委托时间属性 参见 enum OrderDuration |
orderQualifier | int | 委托成交属性 参见 enum OrderQualifier |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | GMData<Order> |
示例:
//以价格11.9买入10000股浦发银行
GMData<Order> o = CreditBuyingOnCollateral("SHSE.600000", 10000, 11.9);
CreditSellingOnCollateral - 担保品卖出
注:融资融券暂时仅支持实盘委托,不支持仿真交易
函数原型:
public GMData<Order> CreditSellingOnCollateral(string symbol, int volume, double price, OrderType orderType = OrderType.OrderType_Limit, OrderDuration orderDuration = OrderDuration.OrderDuration_Unknown, OrderQualifier orderQualifier = OrderQualifier.OrderQualifier_Unknown, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
volume | int | 委托数量 |
price | double | 委托价格, (限价委托的委托价格,市价委托的保护价) |
orderType | int | 委托类型 参见 enum OrderType |
orderDuration | int | 委托时间属性 参见 enum OrderDuration |
orderQualifier | int | 委托成交属性 参见 enum OrderQualifier |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | GMData<Order> | - |
示例:
//以价格11.9卖出10000股浦发银行
GMData<Order> o = CreditSellingOnCollateral("SHSE.600000", 10000, 11.9);
CreditRepayShareDirectly - 直接还券
注:融资融券暂时仅支持实盘委托,不支持仿真交易
函数原型:
public GMData<Order> CreditRepayShareDirectly(string symbol, int volume, double price, OrderType orderType = OrderType.OrderType_Limit, OrderDuration orderDuration = OrderDuration.OrderDuration_Unknown, OrderQualifier orderQualifier = OrderQualifier.OrderQualifier_Unknown, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
volume | int | 委托数量 |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | GMData<Order> | - |
示例:
//还券10000股浦发银行
GMData<Order> o = CreditRepayShareDirectly("SHSE.600000", 10000);
CreditRepayCashDirectly - 直接还款
注:融资融券暂时仅支持实盘委托,不支持仿真交易
函数原型:
public double CreditRepayCashDirectly(double amount, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
amount | double | 还款金额 |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | double | 成功还款的金额 |
示例:
//还款 100000块
double repayAmount = CreditRepayCashDirectly(100000);
CreditCollateralIn - 担保品转入
注:融资融券暂时仅支持实盘委托,不支持仿真交易
函数原型:
public GMData<Order> CreditCollateralIn(string symbol, int volume, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
volume | int | 转入数量 |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | GMData<Order> | - |
示例:
//担保品转入10000股浦发银行
GMData<Order> o = CreditCollateralIn("SHSE.600000", 10000);
CreditCollateralOut - 担保品转出
注:融资融券暂时仅支持实盘委托,不支持仿真交易
函数原型:
public GMData<Order> CreditCollateralOut(string symbol, int volume, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
volume | int | 委托数量 |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | GMData<Order> |
示例:
//担保品转出10000股浦发银行
GMData<Order> o = CreditCollateralOut("SHSE.600000", 10000);
CreditGetCollateralInstruments - 查询担保证券
注:融资融券暂时仅支持实盘委托,不支持仿真交易
函数原型:
GMDataList<CollateralInstrument> CreditGetCollateralInstruments(string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | string | 账号 IDaccountId , 如果输入为 null, 则返回所有账号的委托 |
返回值 | GMDataList<CollateralInstrument> | 一个 CollateralInstrument 结构列表 |
CreditGetBorrowableInstruments - 查询融券标的证券
注:融资融券暂时仅支持实盘委托,不支持仿真交易
查询标的证券,可做融券标的股票列表
函数原型:
public GMDataList <BorrowableInstrument> CreditGetBorrowableInstruments(string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | string | 账号 IDaccountId , 如果输入为 null, 则返回所有账号的委托 |
返回值 | GMDataList<BorrowableInstrument> | 一个 BorrowableInstrument 结构列表 |
标的证券,可做融券标的股票列表
CreditGetBorrowableInstrumentsPositions - 查询融券账户头寸
注:融资融券暂时仅支持实盘委托,不支持仿真交易
查询券商融券账户头寸,可用融券的数量
函数原型:
public GMDataList <BorrowableInstrumentPosition> CreditGetBorrowableInstrumentsPositions(string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | string | 账号 IDaccountId , 如果输入为 null, 则返回所有账号的委托 |
返回值 | GMDataList<BorrowableInstrumentPosition> | 一个 BorrowableInstrumentPosition 结构列表 |
CreditGetContracts - 查询融资融券合约
注:融资融券暂时仅支持实盘委托,不支持仿真交易
查询融资融券合约,负债
函数原型:
public GMDataList <CreditContract> CreditGetContracts(string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | string | 账号 IDaccountId , 如果输入为 null, 则返回所有账号的委托 |
返回值 | GMDataList<CreditContract> | 一个 CreditContract 结构数组 |
CreditGetCash - 查询融资融券资金
注:融资融券暂时仅支持实盘委托,不支持仿真交易
函数原型:
public GMData<CreditCash> CreditGetCash(string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
cash | CreditCash | 出参,返回资金信息 |
account | string | 账号 IDaccountId , 如果输入为 null, 则返回所有账号的委托 |
返回值 | GMData<CreditCash> | - |
示例:
CreditCash cash;
GMData<CreditCash> ccash = CreditGetCash(cash);
算法交易成员函数
OrderAlgo - 委托算法单
注:仅支持实时模式,部分券商版本可用
下算法单
函数原型:
public GMData<AlgoOrder> OrderAlgo(string symbol, int volume, PositionEffect positionEffect, OrderSide side, OrderType orderType, string algoName, string algoParam, double price = 0, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
volume | int | 委托数量 |
positionEffect | int | 开平类型 参见 enum PositionSide |
side | int | 委托方向 参见 enum OrderSide |
orderType | int | 委托类型 参见 enum OrderType |
price | double | 委托价格 |
algoParam | struct | 算法参数 参见 struct AlgoParam |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | GMData<AlgoOrder> | 如果函数调用失败, AlgoOrder.status 值为 OrderStatus_Rejected , Order.ordRejReasonDetail 为错误原因描述, 其它情况表示函数调用成功,AlgoOrder.clOrdId 为本次委托的标识,可用于追溯订单状态或撤单 |
示例:
//用算法 `ATS-SMART` 委托买入10000股浦发银行
OrderAlgo("SHSE.600000", 10000, PositionEffect.PositionEffect_Open, OrderSide.OrderSide_Buy, OrderType.OrderType_Market,"ATS-SMART", "start_time&&1617069219||end_time&&1617080019||stop_sell_when_dl&&1||cancel_when_pl&&0||min_trade_amount&&1");
AlgoOrderCancel - 撤单算法委托
注:仅支持实时模式,部分券商版本可用
撤销算法单
函数原型:
public int AlgoOrderCancel(string clOrdId, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
clOrdId | string | 委托单的客户 id, 可以在下单或查单时获得 |
account | string | 实盘账号 id, 关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | int | 成功返回 0, 失败返回错误码 |
AlgoOrderPause - 暂停/恢复算法单
注:仅支持实时模式,部分券商版本可用
暂停/恢复算法单
函数原型:
public int AlgoOrderPause(string clOrdId, AlgoOrderStatus status, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
clOrdId | string | 委托单的客户 id, 可以在下单或查单时获得 |
status | int | 参考 AlgoOrderStatus |
account | string | 实盘账号 id, 关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | int | 成功返回 0, 失败返回错误码 |
GetAlgoOrders - 查询算法委托
注:仅支持实时模式,部分券商版本可用
查询所有算法委托单
函数原型:
public GMDataList<AlgoOrder> GetAlgoOrders(string ClOrdId = null, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | string | 账号 ID, 如果输入为 null, 则返回所有账号的委托 |
返回值 | GMDataList<AlgoOrder> | 一个 AlgoOrder 结构列表 |
GetChildOrders - 查询算法子委托
注:仅支持实时模式,部分券商版本可用
查询子单
函数原型:
public GMDataList<Order> GetChildOrders(string clOrdId, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
clOrdId | string | 母单 ID |
account | string | 账号 ID, 如果输入为 null, 则返回所有账号的委托 |
返回值 | GMDataList<Order> | AlgoOrder 结构列表 |
新股业务成员函数
IPOBuy - 新股新债申购
注:仅在实盘中可以使用
函数原型:
public GMData<Order> IPOBuy(string symbol, int volume, double price, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
volume | int | 委托数量 |
price | double | 申购价 |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | GMData<Order> | 一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected , Order.ordRejReasonDetail 为错误原因描述, 其它情况表示函数调用成功,Order.clOrdId 为本次委托的标识,可用于追溯订单状态或撤单 |
示例:
//申购1000股的SHSE.688001
GMData<Order> o = IPOBuy("SHSE.688001", 1000, 42.0);
IPOGetQuota - 查询客户新股新债申购额度
注:仅在实盘中可以使用
函数原型:
public GMDataList<IPOQI> IPOGetQuota(string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | GMDataList<IPOQI> | 返回每个板块的申购额度 |
示例:
GMDataList<IPOQI> da = IPOGetQuota();
IPOGetInstruments - 查询当日新股新债清单
注:仅在实盘中可以使用
函数原型:
public GMDataList<IPOInstruments> IPOGetInstruments(string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | GMDataList<IPOInstruments> | 一个 IPOInstruments 结构列表 |
IPOGetMatchNumber - 配号查询
注:仅在实盘中可以使用
函数原型:
public GMDataList<IPOMatchNumber> IPOGetMatchNumber(string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | GMDataList<IPOMatchNumber> | 一个 IPOMatchNumber 结构列表 |
IPOGetLotInfo - 中签查询
注:仅在实盘中可以使用
函数原型:
public GMDataList<IPOLotInfo> IPOGetLotInfo(string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | GMDataList<IPOLotInfo> | 一个 IPOLotInfo 结构列表 |
基金业务成员函数
FundEtfBuy - ETF 申购
注:仅在实盘中可以使用
函数原型:
public GMData<Order> FundEtfBuy(string symbol, int volume, double price, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
volume | int | 申购份额 |
price | double | 申购价 |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL |
返回值 | GMData<Order> | 一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected , Order.ordRejReasonDetail 为错误原因描述, 其它情况表示函数调用成功,Order.clOrdId 为本次委托的标识,可用于追溯订单状态或撤单 |
FundEtfRedemption - ETF 赎回
注:仅在实盘中可以使用
函数原型:
public GMData<Order> FundEtfRedemption(string symbol, int volume, double price, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
volume | int | 赎回份额 |
price | double | 赎回价 |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL |
返回值 | GMData<Order> | 一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected , Order.ordRejReasonDetail 为错误原因描述, 其它情况表示函数调用成功,Order.clOrdId 为本次委托的标识,可用于追溯订单状态或撤单 |
FundSubScribing - 基金认购
注:仅在实盘中可以使用
函数原型:
public GMData<Order> FundSubScribing(string symbol, int volume, double price, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
volume | int | 认购份额 |
price | double | 认购价 |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL |
返回值 | GMData<Order> | 一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected , Order.ordRejReasonDetail 为错误原因描述, 其它情况表示函数调用成功,Order.clOrdId 为本次委托的标识,可用于追溯订单状态或撤单 |
FundBuy - 基金申购
注:仅在实盘中可以使用
函数原型:
public GMData<Order> FundBuy(string symbol, int volume, double price, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
volume | int | 申购份额 |
price | double | 申购价 |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL |
返回值 | GMData<Order> | 一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected , Order.ordRejReasonDetail 为错误原因描述, 其它情况表示函数调用成功,Order.clOrdId 为本次委托的标识,可用于追溯订单状态或撤单 |
FundRedemption - 基金赎回
注:仅在实盘中可以使用
函数原型:
public GMData<Order> FundRedemption(string symbol, int volume, double price, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
volume | int | 赎回份额 |
price | double | 赎回价 |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 NULL |
返回值 | GMData<Order> | 一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected , Order.ordRejReasonDetail 为错误原因描述, 其它情况表示函数调用成功,Order.clOrdId 为本次委托的标识,可用于追溯订单状态或撤单 |
债券业务成员函数
BondReverseRepurchaseAgreement - 国债逆回购
注:仅在实盘中可以使用
函数原型:
public GMData<Order> BondReverseRepurchaseAgreement(string symbol, int volume, double price = 0, OrderType orderType = OrderType.OrderType_Limit, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
volume | int | 委托数量 |
price | double | 委托价格 |
order_type | int | 委托类型 参见 enum OrderType |
order_duration | int | 委托时间属性 参见 enum OrderDuration |
order_qualifier | int | 委托成交属性 参见 enum OrderQualifier |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | GMData<Order> | 一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected , Order.ordRejReasonDetail 为错误原因描述, 其它情况表示函数调用成功,Order.clOrdId 为本次委托的标识,可用于追溯订单状态或撤单 |
BondConvertibleCall - 可转债转股
注:仅在实盘中可以使用
函数原型:
public GMData<Order> BondConvertibleCall(string symbol, int volume, double price, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
volume | int | 委托数量 |
price | double | 转股价(大部分柜台忽略,可填 0) |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | GMData<Order> | 一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected , Order.ordRejReasonDetail 为错误原因描述, 其它情况表示函数调用成功,Order.clOrdId 为本次委托的标识,可用于追溯订单状态或撤单 |
BondConvertiblePut - 可转债回售
注:仅在实盘中可以使用
函数原型:
public GMData<Order> BondConvertiblePut(string symbol, int volume, double price, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
volume | int | 委托数量 |
price | double | 回售价(大部分柜台忽略,可填 0) |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | GMData<Order> | 一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected , Order.ordRejReasonDetail 为错误原因描述, 其它情况表示函数调用成功,Order.clOrdId 为本次委托的标识,可用于追溯订单状态或撤单 |
BondConvertiblePutCancel - 可转债回售撤销
注:仅在实盘中可以使用
函数原型:
public GMData<Order> BondConvertiblePutCancel(string symbol, int volume, string account = null)
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | string | 标的代码,只能单个标的 |
volume | int | 委托数量 |
account | string | 实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null |
返回值 | GMData<Order> | 一个 Order 结构, 如果函数调用失败, Order.status 值为 OrderStatus_Rejected , Order.ordRejReasonDetail 为错误原因描述, 其它情况表示函数调用成功,Order.clOrdId 为本次委托的标识,可用于追溯订单状态或撤单 |
动态参数成员函数
AddParameters - 添加参数
添加动态参数, 添加成功后, 参数将在终端上显示。
函数原型:
int AddParameters(List<Parameter> parameters)
int AddParameters(Parameter parameter)
参数:
| 参数名 | 类型 | 说明 |
| :--------- | :-------------- | :-------------------------- |
| parameters | List<Parameter> | `Parameter`列表 |
| parameter | Parameter | 一个`Parameter`对象 |
| 返回值 | int | 成功返回 0, 失败返回错误码 |
DelParameters - 删除参数
删除动态参数
函数原型:
int DelParameters(string keys)
参数:
参数名 | 类型 | 说明 |
---|---|---|
keys | string | 对应参数的键值, 多个参数使用, 间隔,如key1,key2,... |
返回值 | int | 成功返回 0, 失败返回错误码 |
SetParameters - 设置参数
设置参数值
函数原型:
int SetParameters(List<Parameter> parameters)
int SetParameters(Parameter parameter)
参数:
| 参数名 | 类型 | 说明 |
| :--------- | :-------------- | :-------------------------- |
| parameters | List<Parameter> | `Parameter`列表 |
| parameter | Parameter | `Parameter`对象 |
| 返回值 | int | 成功返回 0, 失败返回错误码 |
GetParameters - 获取参数
获取参数值
函数原型:
GMDataList<Parameter> GetParameters()
参数:
| 参数名 | 类型 | 说明 |
| :----- | :-------------------- | :------------------- |
| 返回值 | GMDataList<Parameter> | 一个`GMDataList`对象 |
SetSymbols - 设置标的
设置交易标的, 设置成功后, 标的将在终端上显示。
函数原型:
int SetSymbols(string symbols);
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbols | string | symbol 列表,逗号分隔 |
返回值 | int | 成功返回 0, 失败返回错误码 |
GetSymbols - 获取标的
获取交易标的
函数原型:
GMDataList<string> GetSymbols()
参数:
| 参数名 | 类型 | 说明 |
| :----- | :----------------- | :------------------- |
| 返回值 | GMDataList<Symbol> | 一个`GMDataList`对象 |
事件成员函数
OnInit - 初始化完成
sdk 初始化完成时触发, 用户可以改写此成员函数,在些订阅行情,提取历史数据等初始化操作。
函数原型:
virtual void OnInit();
OnTick - 收到 Tick 行情
收到 Tick 行情时触发
函数原型:
virtual void OnTick(Tick tick);
参数:
参数名 | 类型 | 说明 |
---|---|---|
tick | Tick | 收到的 Tick 行情 |
OnBar - 收到 bar 行情
收到 bar 行情时触发
函数原型:
virtual void OnBar(Bar bar);
参数:
| 参数名 | 类型 | 说明 |
| :----- | :-------- | :-------------- |
| bar | List<Bar> | 收到的 Bar 行情 |
OnOrderStatus - 委托变化
响应委托状态更新事情,下单后及委托状态更新时被触发。 注意:交易账户重连后,会重新推送一遍交易账户登录成功后查询回来的所有委托
函数原型:
virtual void OnOrderStatus(Order order);
参数:
参数名 | 类型 | 说明 |
---|---|---|
order | Order | 发生变化的委托 |
注意:
- 交易服务连接断开重连后, 会自动重新推送一次所有委托(包含近期委托).
- 交易账号错误断开到"已登陆"状态后, 会自动重新推送一次所有委托(包含近期委托).
- 交易服务连接断开重连事件通过 OnTradeDataConnected()回调通知.
- 交易账号错误断开到"已登陆"事件通过 OnAccountStatus()回调通知.
- 主动查询日内全部委托记录和未结委托的方式为 GetOrders()和 GetUnfinishedOrders()函数.
OnExecutionReport - 执行回报
响应委托被执行事件,委托成交或者撤单拒绝后被触发。 注意:交易账户重连后,会重新推送一遍交易账户登录成功后查询回来的所有执行回报
函数原型:
virtual void OnExecutionReport(ExecRpt rpt);
参数:
参数名 | 类型 | 说明 |
---|---|---|
rpt | ExecRpt | 收到的回报 |
注意:
- 交易服务连接断开重连后, 会自动重新推送一次所有成交(包含近期成交).
- 交易账号错误断开到"已登陆"状态后, 会自动重新推送一次所有成交(包含近期成交).
- 交易服务连接断开重连事件通过 OnTradeDataConnected()回调通知.
- 交易账号错误断开到"已登陆"事件通过 OnAccountStatus()回调通知.
- 主动查询日内全部执行回报的方式为 GetExecutionReports()函数.
OnParameter - 参数变化
参数变化时触发, 一般是终端修了动态参数
函数原型:
virtual void OnParameter(List<Parameter> param);
参数:
| 参数名 | 类型 | 说明 |
| :----- | :-------------- | :--------- |
| param | List<Parameter> | 变化的参数 |
OnSchedule - 定时任务触发
预设任务时间条件符合时触发
函数原型:
virtual void OnSchedule(string dataRule, string timeRule);
参数:
参数名 | 类型 | 说明 |
---|---|---|
dataRule | string | 设置的 dataRule |
timeRule | string | 设置的 timeRule |
OnBacktestFinished - 回测完成后收到绩效报告
回测完成后收到绩效报告时触发
函数原型:
virtual void OnBacktestFinished(Indicator indicator);
参数:
参数名 | 类型 | 说明 |
---|---|---|
dataRule | Indicator | 设置的 dataRule |
OnAccountStatus - 实盘账号状态变化
实盘账号状态变化时触发, 比如实盘账号登录,退出登录等
函数原型:
virtual void OnAccountStatus(AccountStatus accountStatus);
参数:
参数名 | 类型 | 说明 |
---|---|---|
accountStatus | AccountStatus | 对应变化的账号 |
OnError - 错误产生
有错误产生时触发, 比如网络断开。
函数原型:
virtual void OnError(int errorCode, string errorMsg);
参数:
参数名 | 类型 | 说明 |
---|---|---|
errorCode | int | 错误码 |
errorMsg | string | 错误信息 |
OnStop - 收到策略停止信号
终端点击停止策略时触发
函数原型:
virtual void OnStop();
OnMarketDataConnected - 数据服务已经连接上
数据服务已经连接时触发
函数原型:
virtual void OnMarketDataConnected();
OnTradeDataConnected - 交易已经连接上
交易已经连接时触发
函数原型:
virtual void OnTradeDataConnected();
OnMarketDataDisconnected - 数据连接断开了
数据连接断开时触发
函数原型:
virtual void OnMarketDataDisconnected();
OnTradeDataDisconnected - 交易连接断开了
交易连接断开时触发
函数原型:
virtual void OnTradeDataDisconnected();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论