返回介绍

开始入门

操作指引

SDK

数据文档

常见问题

量化工具

其他

其他

策略基类

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

基类原型

策略类简介

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

策略类定义

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

参数:

参数名类型说明
tokenstring系统权限密钥,可在终端系统设置-密钥管理中生成
strategyIdstring策略 ID,在终端中获取
modeStrategyMode策略模式,参见 enum StrategyMode

注意事项:

  • 一个进程只能构造一个策略对象。

Run - 运行策略

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

函数原型:

int Run();

参数:

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

注意事项:

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

Stop - 停止策略

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

函数原型:

void Stop();

SetToken - 设置用户 token

函数原型:

int SetToken(string token)

参数:

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

注意事项: 不管是从构造函数传入还成员函数传入,token, strategyId, mode 都是必须要设置的参数。

SetMode - 设置运行模式

函数原型:

int SetMode(StrategyMode mode)

参数:

参数名类型说明
modeStrategyMode策略运行模式,参见StrategyMode

注意事项: 不管是从构造函数传入还成员函数传入,token, strategyId, mode 都是必须要设置的参数

SetStrategyId - 设置策略 ID

函数原型:

int SetStrategyId(string strategyId)

注意事项: 不管是从构造函数传入还成员函数传入,token, strategyId, mode 都是必须要设置的参数

参数:

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

GetAccountStatus - 获取策略所有账户状态

函数原型:

List<AccountStatus> GetAccountStatus()

参数:

参数名类型说明
返回值ListAccountStatus 列表

示例:

//获取当策略所有账户状态
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 的参数中返回设置的dataRuletimeRule。Schedule 可以调用多次,设置多个不同定时任务。

函数原型:

int Schedule(string dataRule, string timeRule);

参数:

参数名类型说明
dataRulestringn + 时间单位, 可选’d/w/m’ 表示 n 天/n 周/n 月
timeRulestring执行算法的具体时间 (%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
);

参数:

参数名类型说明
startTimestring回测开始时间
(%Y-%m-%d %H:%M:%S 格式)
endTimestring回测结束时间
(%Y-%m-%d %H:%M:%S 格式)
initialCashdouble回测初始资金, 默认 1000000
transactionRatiodouble回测成交比例, 默认 1.0, 即下单 100%成交
commissionRatiodouble回测佣金比例, 默认 0
slippageRatiodouble回测滑点比例, 默认 0
adjustAdjust复权方式,参见 enum Adjust
checkCacheint回测是否使用缓存: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);

参数:

参数名类型说明
symbolsstring订阅标的代码列表, 字符串格式,如有多个代码, 中间用,(英文逗号) 隔开
frequencystring频率, 支持 "tick", "1d", "15s", "30s" 等
unsubscribePreviousbool是否取消过去订阅的 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);

参数:

参数名类型说明
symbolsstring退订标的代码列表, 字符串格式,如有多个代码, 中间用,(英文逗号) 隔开
frequencystring频率, 支持 "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)

参数:

参数名类型说明
oreqPlaceOrderReq下单参数结构

注意:

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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
volumeint委托数量
sideOrderSide委托方向 参见 enum OrderSide
orderTypeOrderType委托类型 参见 enum OrderType
positionEffectPositionEffect开平类型 参见 enum PositionSide
pricedouble委托价格, (限价委托的委托价格,市价委托的保护价)
accountstring实盘账号 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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
valueint股票价值
sideOrderSide委托方向 参见 enum OrderSide
orderTypeOrderType委托类型 参见 enum OrderType
positionEffectPositionEffect开平类型 参见 enum PositionSide
pricedouble委托价格, (限价委托的委托价格,市价委托的保护价)
accountstring实盘账号 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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
percentdouble委托占总资产比例
sideOrderSide委托方向 参见 enum OrderSide
orderTypeOrderType委托类型 参见 enum OrderType
positionEffectPositionEffect开平类型 参见 enum PositionSide
pricedouble委托价格, (限价委托的委托价格,市价委托的保护价)
accountstring实盘账号 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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
volumeint期望的最终数量
positionSidePositionSide持仓方向 参见 enum PositionSide
orderTypeOrderType委托类型 参见 enum OrderType
pricedouble委托价格, (限价委托的委托价格,市价委托的保护价)
accountstring实盘账号 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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
valueint期望的股票最终价值
positionSidePositionSide持仓方向 参见 enum PositionSide
orderTypeOrderType委托类型 参见 enum OrderType
pricedouble委托价格, (限价委托的委托价格,市价委托的保护价)
accountstring实盘账号 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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
percentdouble期望的最终占总资产比例
positionSidePositionSide持仓方向 参见 enum PositionSide
orderTypeOrderType委托类型 参见 enum OrderType
pricedouble委托价格, (限价委托的委托价格,市价委托的保护价)
accountstring实盘账号 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)

参数:

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

OrderCancelAll - 撤销所有委托

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

函数原型:

int OrderCancelAll();

参数:

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

GetOrders - 查询所有委托

查询所有委托单

函数原型:

GMDataList<Order> GetOrders(string account = null)

参数:

参数名类型说明
accountstring账号 ID accountId, 如果输入为 null, 则返回所有账号的委托
返回值GMDataList<Order>一个GMDataList<order>对象

GetUnfinishedOrders - 查询未结委托

查询所有未结委托

函数原型:

GMDataList<Order> GetUnfinishedOrders(string account = null)

参数:

参数名类型说明
accountstring账号 IDaccountId, 如果输入为 null, 则返回所有账号的委托
返回值GMDataList<Order>一个GMDataList<order>对象

GetExecutionReports - 查询成交

查询所有成交

函数原型:

GMDataList<ExecRpt> GetExecutionReports(string account = null)

参数:

参数名类型说明
accountstring账号 ID accountId, 如果输入为 null, 则返回所有账号的成交
返回值GMDataList<ExecRpt>一个GMDataList<ExecRpt>对象

GetCash - 查询资金

查询资金

函数原型:

GMDataList<Cash> GetCash(string account = null)

参数:

参数名类型说明
accountstring账号 IDaccountId, 如果输入为 NULL, 则返回所有账号的资金
返回值GMDataList<Cash>一个GMDataList<Cash>对象

GetPosition - 查询持仓

查询所有持仓

函数原型:

GMDataList<Position> GetPosition(string account = null)

参数:

参数名类型说明
accountstring账号 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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
volumeint委托数量
pricedouble委托价格
orderTypeint委托类型 参见 enum OrderType
orderDurationint委托时间属性 参见 enum OrderDuration
orderQualifierint委托成交属性 参见 enum OrderQualifier
accountstring实盘账号 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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
volumeint委托数量
pricedouble委托价格
orderTypeint委托类型 参见 enum OrderType
orderDurationint委托时间属性 参见 enum OrderDuration
orderQualifierint委托成交属性 参见 enum OrderQualifier
accountstring实盘账号 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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
volumeint委托数量
pricedouble委托价格
orderTypeint委托类型 参见 enum OrderType
orderDurationint委托时间属性 参见 enum OrderDuration
orderQualifierint委托成交属性 参见 enum OrderQualifier
accountstring实盘账号 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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
volumeint委托数量
pricedouble委托价格
orderTypeint委托类型 参见 enum OrderType
orderDurationint委托时间属性 参见 enum OrderDuration
orderQualifierint委托成交属性 参见 enum OrderQualifier
accountstring实盘账号 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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
volumeint委托数量
pricedouble委托价格, (限价委托的委托价格,市价委托的保护价)
orderTypeint委托类型 参见 enum OrderType
orderDurationint委托时间属性 参见 enum OrderDuration
orderQualifierint委托成交属性 参见 enum OrderQualifier
accountstring实盘账号 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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
volumeint委托数量
pricedouble委托价格, (限价委托的委托价格,市价委托的保护价)
orderTypeint委托类型 参见 enum OrderType
orderDurationint委托时间属性 参见 enum OrderDuration
orderQualifierint委托成交属性 参见 enum OrderQualifier
accountstring实盘账号 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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
volumeint委托数量
accountstring实盘账号 id,关联多实盘账号时填写,可以从 get_accounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null
返回值GMData<Order>-

示例:

//还券10000股浦发银行
GMData<Order> o = CreditRepayShareDirectly("SHSE.600000", 10000);

CreditRepayCashDirectly - 直接还款

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

函数原型:

public double CreditRepayCashDirectly(double amount, string account = null)

参数:

参数名类型说明
amountdouble还款金额
accountstring实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null
返回值double成功还款的金额

示例:

//还款 100000块
double repayAmount = CreditRepayCashDirectly(100000);

CreditCollateralIn - 担保品转入

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

函数原型:

public GMData<Order> CreditCollateralIn(string symbol, int volume, string account = null)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
volumeint转入数量
accountstring实盘账号 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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
volumeint委托数量
accountstring实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null
返回值GMData<Order>

示例:

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

CreditGetCollateralInstruments - 查询担保证券

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

函数原型:

GMDataList<CollateralInstrument> CreditGetCollateralInstruments(string account = null)

参数:

参数名类型说明
accountstring账号 IDaccountId, 如果输入为 null, 则返回所有账号的委托
返回值GMDataList<CollateralInstrument>一个 CollateralInstrument 结构列表

CreditGetBorrowableInstruments - 查询融券标的证券

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

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

函数原型:

public GMDataList <BorrowableInstrument> CreditGetBorrowableInstruments(string account = null)

参数:

参数名类型说明
accountstring账号 IDaccountId, 如果输入为 null, 则返回所有账号的委托
返回值GMDataList<BorrowableInstrument>一个 BorrowableInstrument 结构列表

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

CreditGetBorrowableInstrumentsPositions - 查询融券账户头寸

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

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

函数原型:

public GMDataList <BorrowableInstrumentPosition> CreditGetBorrowableInstrumentsPositions(string account = null)

参数:

参数名类型说明
accountstring账号 IDaccountId, 如果输入为 null, 则返回所有账号的委托
返回值GMDataList<BorrowableInstrumentPosition>一个 BorrowableInstrumentPosition 结构列表

CreditGetContracts - 查询融资融券合约

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

查询融资融券合约,负债

函数原型:

public GMDataList <CreditContract> CreditGetContracts(string account = null)

参数:

参数名类型说明
accountstring账号 IDaccountId, 如果输入为 null, 则返回所有账号的委托
返回值GMDataList<CreditContract>一个 CreditContract 结构数组

CreditGetCash - 查询融资融券资金

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

函数原型:

public GMData<CreditCash> CreditGetCash(string account = null)

参数:

参数名类型说明
cashCreditCash出参,返回资金信息
accountstring账号 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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
volumeint委托数量
positionEffectint开平类型 参见 enum PositionSide
sideint委托方向 参见 enum OrderSide
orderTypeint委托类型 参见 enum OrderType
pricedouble委托价格
algoParamstruct算法参数 参见 struct AlgoParam
accountstring实盘账号 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)

参数:

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

AlgoOrderPause - 暂停/恢复算法单

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

暂停/恢复算法单

函数原型:

public int AlgoOrderPause(string clOrdId, AlgoOrderStatus status, string account = null)

参数:

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

GetAlgoOrders - 查询算法委托

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

查询所有算法委托单

函数原型:

public GMDataList<AlgoOrder> GetAlgoOrders(string ClOrdId = null, string account = null)

参数:

参数名类型说明
accountstring账号 ID, 如果输入为 null, 则返回所有账号的委托
返回值GMDataList<AlgoOrder>一个 AlgoOrder 结构列表

GetChildOrders - 查询算法子委托

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

查询子单

函数原型:

public GMDataList<Order> GetChildOrders(string clOrdId, string account = null)

参数:

参数名类型说明
clOrdIdstring母单 ID
accountstring账号 ID, 如果输入为 null, 则返回所有账号的委托
返回值GMDataList<Order>AlgoOrder 结构列表

新股业务成员函数

IPOBuy - 新股新债申购

注:仅在实盘中可以使用

函数原型:

public GMData<Order> IPOBuy(string symbol, int volume, double price, string account = null)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
volumeint委托数量
pricedouble申购价
accountstring实盘账号 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)

参数:

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

示例:

GMDataList<IPOQI> da = IPOGetQuota();

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

注:仅在实盘中可以使用

函数原型:

public GMDataList<IPOInstruments> IPOGetInstruments(string account = null)

参数:

参数名类型说明
accountstring实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null
返回值GMDataList<IPOInstruments>一个 IPOInstruments 结构列表

IPOGetMatchNumber - 配号查询

注:仅在实盘中可以使用

函数原型:

public GMDataList<IPOMatchNumber> IPOGetMatchNumber(string account = null)

参数:

参数名类型说明
accountstring实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null
返回值GMDataList<IPOMatchNumber>一个 IPOMatchNumber 结构列表

IPOGetLotInfo - 中签查询

注:仅在实盘中可以使用

函数原型:

public GMDataList<IPOLotInfo> IPOGetLotInfo(string account = null)

参数:

参数名类型说明
accountstring实盘账号 id,关联多实盘账号时填写,可以从 GetAccounts 获取,也可以从终端实盘账号配置里拷贝。如果策略只关联一个账号,可以设置为 null
返回值GMDataList<IPOLotInfo>一个 IPOLotInfo 结构列表

基金业务成员函数

FundEtfBuy - ETF 申购

注:仅在实盘中可以使用

函数原型:

public GMData<Order> FundEtfBuy(string symbol, int volume, double price, string account = null)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
volumeint申购份额
pricedouble申购价
accountstring实盘账号 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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
volumeint赎回份额
pricedouble赎回价
accountstring实盘账号 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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
volumeint认购份额
pricedouble认购价
accountstring实盘账号 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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
volumeint申购份额
pricedouble申购价
accountstring实盘账号 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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
volumeint赎回份额
pricedouble赎回价
accountstring实盘账号 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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
volumeint委托数量
pricedouble委托价格
order_typeint委托类型 参见 enum OrderType
order_durationint委托时间属性 参见 enum OrderDuration
order_qualifierint委托成交属性 参见 enum OrderQualifier
accountstring实盘账号 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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
volumeint委托数量
pricedouble转股价(大部分柜台忽略,可填 0)
accountstring实盘账号 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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
volumeint委托数量
pricedouble回售价(大部分柜台忽略,可填 0)
accountstring实盘账号 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)

参数:

参数名类型说明
symbolstring标的代码,只能单个标的
volumeint委托数量
accountstring实盘账号 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)

参数:

参数名类型说明
keysstring对应参数的键值, 多个参数使用,间隔,如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);

参数:

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

GetSymbols - 获取标的

获取交易标的

函数原型:

GMDataList<string> GetSymbols()

参数:

| 参数名 | 类型               | 说明                 |
| :----- | :----------------- | :------------------- |
| 返回值 | GMDataList<Symbol> | 一个`GMDataList`对象 |

事件成员函数

OnInit - 初始化完成

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

函数原型:

virtual void OnInit();

OnTick - 收到 Tick 行情

收到 Tick 行情时触发

函数原型:

virtual void OnTick(Tick tick);

参数:

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

OnBar - 收到 bar 行情

收到 bar 行情时触发

函数原型:

virtual void OnBar(Bar bar);

参数:

| 参数名 | 类型      | 说明            |
| :----- | :-------- | :-------------- |
| bar    | List<Bar> | 收到的 Bar 行情 |

OnOrderStatus - 委托变化

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

函数原型:

virtual void OnOrderStatus(Order order);

参数:

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

注意:

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

OnExecutionReport - 执行回报

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

函数原型:

virtual void OnExecutionReport(ExecRpt rpt);

参数:

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

注意:

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

OnParameter - 参数变化

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

函数原型:

virtual void OnParameter(List<Parameter> param);

参数:

| 参数名 | 类型            | 说明       |
| :----- | :-------------- | :--------- |
| param  | List<Parameter> | 变化的参数 |

OnSchedule - 定时任务触发

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

函数原型:

virtual void OnSchedule(string dataRule, string timeRule);

参数:

参数名类型说明
dataRulestring设置的 dataRule
timeRulestring设置的 timeRule

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

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

函数原型:

virtual void OnBacktestFinished(Indicator indicator);

参数:

参数名类型说明
dataRuleIndicator设置的 dataRule

OnAccountStatus - 实盘账号状态变化

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

函数原型:

virtual void OnAccountStatus(AccountStatus accountStatus);

参数:

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

OnError - 错误产生

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

函数原型:

virtual void OnError(int errorCode, string errorMsg);

参数:

参数名类型说明
errorCodeint错误码
errorMsgstring错误信息

OnStop - 收到策略停止信号

终端点击停止策略时触发

函数原型:

virtual void OnStop();

OnMarketDataConnected - 数据服务已经连接上

数据服务已经连接时触发

函数原型:

virtual void OnMarketDataConnected();

OnTradeDataConnected - 交易已经连接上

交易已经连接时触发

函数原型:

virtual void OnTradeDataConnected();

OnMarketDataDisconnected - 数据连接断开了

数据连接断开时触发

函数原型:

virtual void OnMarketDataDisconnected();

OnTradeDataDisconnected - 交易连接断开了

交易连接断开时触发

函数原型:

virtual void OnTradeDataDisconnected();


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

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

发布评论

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