# 策略基类

# 基类原型

# 策略类简介

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

# 策略类定义

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 的参数中返回设置的dataRuletimeRule。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 positionEffect
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 positionEffect
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 positionEffect
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
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
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
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
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
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
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
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 发生变化的委托

注意:

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

# OnExecutionReport - 执行回报

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

函数原型:

virtual void OnExecutionReport(ExecRpt rpt);

参数:

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

注意:

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

参数:

参数名 类型 说明
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();


上次更新: 11/26/2024, 3:44:16 PM