快速开始

下载SDK

这里下载最新的C# SDK下载地址

安装配置

C# SDK包下载后只需解压即可使用。解压文件里有两个dll:libgmnet.dll,libgm.dll,策略运行依赖于这两个库文件,需要放在策略的可执行文件目录。

我的第一个策略

方式一:直接使用例子运行。

解压SDK包,使用visual studio 2010及以上版本运行examples中的策略示例。

方式二:通过策略向导创建自己的策略。

  1. 先参考这里注册账号,登录终端。

  2. 参考这里创建策略基本架构。编程语言选择C#,订阅上交所浦发银行(证券代码:600000)的Tick行情。

  3. 编写自己的策略逻辑。

以下是一个完整的策略代码示例额,策略逻辑:每收到一笔Tick行情,以最新价买入100股。

class Program
{
    static void Main(string[] args)
    {
        StrategySimple s = new StrategySimple();
        int ret = s.InitWithConfig("strategy.ini");
        System.Console.WriteLine("init: {0}", ret);

        ret = s.Run();

        if(ret != 0)
        {
            System.Console.WriteLine("run error: {0}", ret);
        }

        Console.Read();
    }
}

public class StrategySimple : Strategy
{
    /// <summary>
    /// 收到tick事件。
    /// </summary>
    /// <param name="tick"></param>
    public override void OnTick( Tick tick)
    {
        OpenLong(tick.exchange, tick.sec_id, tick.last_price, 100);
        Console.WriteLine( "OpenLong: exchange {0}, sec_id {1}, price {2}", 
                tick.exchange, tick.sec_id, tick.last_price );
    }
}

4.编译策略并运行。策略运行起来后,控制台打印策略的每一笔下单记录,在掘金终端的模拟交易中可查看策略的运行详情。

C# API范例

策略接口范例

策略构建

如何构建策略

构建策略的三种方式:

  1. 掘金终端构建自己的策略,然后在构建的策略类中重写基类方法。

  2. 修改SDK包中的例子,构建自己的策略类。

  3. 参考API定义文档,自定义策略类。

策略运行

如何初始化策略

策略在运行前,必须先初始策略对象。

示例:策略初始化并订阅上交所浦发银行的实时Tick数据和1分钟的Bar数据。

方式一:以参数方式初始化策略

StrategySimple strategy = new StrategySimple();

int ret = strategy.Init("your username", 
                        "your password", 
                        "strategy_id", 
                        "SHSE.600000.tick,SHSE.600000.bar.60",
                        MDMode.MD_MODE_LIVE,
                        "localhost:8001");

方式二:以配置文件方式初始化策略

strategy.ini为策略的配置文件,通过终端向导构建策略时会生成,设置了订阅上交所浦发银行的实时Tick数据和1分钟的Bar数据。

int ret = strategy.InitWithConfig("strategy.ini");

strategy.ini文件配置示例:

[strategy]
;掘金用户名
username=-
;掘金密码
password=-
;策略ID
strategy_id=3c7e70be-7e02-11e5-b293-5ec5d48ea63a
;订阅证券代码或合约代码列表
subscribe_symbols=SHSE.600000.tick,SHSE.600000.bar.60
;行情模式,2-实时行情模式,3-模拟行情模式,4-回放行情模式
mode=2
;交易服务地址,使用掘金终端交易时,地址为localhost:8001, 如果此项配置为空,则订单发往掘金云服务器
td_addr=localhost:8001
如何运行策略

完善策略逻辑后,先初始化策略,然后运行策略。策略运行后,策略开始接收数据并执行策略逻辑。

strategy.Run();
如何停止策略
  1. 直接关闭程序来停止策略

  2. 调用api方式停止策略

strategy.Stop();    

策略模式

策略支持三种运行模式:

  1. 实时行情模式:订阅行情服务器推送的实时行情,也就是交易所的实时行情,只在交易时段提供。适用的场景是策略仿真交易和实盘交易阶段。

  2. 模拟行情模式:模拟行情是近期的历史行情,行情服务器将7*24小时不间断循环推送,推送频率近似实时行情。适用的场景是策略开发阶段,主要就是能方便随时随地都能有数据,能开发/调试策略,不受交易时段的限制。

  3. 回测模式:订阅指定时段、指定交易代码、指定数据类型的行情,行情服务器将按指定条件全速回放对应的行情数据。适用的场景是策略回测阶段,快速验证策略的绩效是否符合预期。

策略支持三种运行模式对应策略初始化的枚举值:

  1. 实时行情模式:MDMode.MD_MODE_LIVE
  2. 模拟行情模式:MDMode.MD_MODE_SIMULATED
  3. 回测模式:MDMode.MD_MODE_PLAYBACK
如何回测策略

示例:回测时间为2014-10-25 09:30:00到2015-10-29 15:00:00,策略初始资金为1,000,000,委托成交为全部成交,手续费率万分之3,滑点比率为0.246,数据使用前复权。回测的证券代码及数据周期由订阅行情决定。

方式一:策略回测参数设置

strategy.BacktestConfig("2014-10-25 09:30:00", "2015-10-29 15:15:00", 
                        1000000, 1, 0.0003, 0.246, 1);

方式二:初始化策略时配置文件中设置

int ret = strategy.InitWithConfig("strategy.ini");

在strategy.ini配置文件中添加backtest节点。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;策略回测参数配置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[backtest]
;历史数据回放开始时间
start_time=2014-10-25 09:30:00
;历史数据回放结束时间
end_time=2015-10-29 15:15:00
;策略初始资金
initial_cash=1000000
;委托量成交比率,默认=1(每个委托100%成交)
transaction_ratio=1
;手续费率,默认=0(不计算手续费)
commission_ratio=0.0008
;滑点比率,默认=0(无滑点)
slippage_ratio=0.246
;行情复权模式,0=不复权,1=前复权
price_type=1
如何在非交易时间段调试策略

首先关联模拟交易通道

示例:订阅上交所浦发银行Tick行情和1分钟的Bar的模拟行情。

方式一:通过参数的方式设置:

int ret = strategy.Init("your username", 
                        "your password", 
                        "strategy_id", 
                        "SHSE.600000.tick,SHSE.600000.bar.60",
                        MDMode.MD_MODE_SIMULATED,
                        "localhost:8001");

方式二:通过配置方式初始化策略,策略的配置文件subscribe_symbols和mode节点值设置如下:

;订阅证券代码或合约代码列表
subscribe_symbols=SHSE.600000.tick,SHSE.600000.bar.60
;行情模式,2-实时行情模式,3-模拟行情模式,4-回放行情模式
mode=3
如何设置策略仿真交易

首先需关联仿真交易通道

示例:订阅上交所浦发银行Tick行情和1分钟的Bar的实时行情。

方式一:通过参数的方式设置:

int ret = strategy.Init("your username", 
                        "your password", 
                        "strategy_id", 
                        "SHSE.600000.tick,SHSE.600000.bar.60",
                        MDMode.MD_MODE_LIVE,
                        "localhost:8001");

方式二:通过配置方式初始化策略,策略的配置文件strategy节点值设置如下:

;订阅证券代码或合约代码列表
subscribe_symbols=SHSE.600000.tick,SHSE.600000.bar.60
;行情模式,2-实时行情模式,3-模拟行情模式,4-回放行情模式
mode=2
如何设置策略实盘交易
  1. 关联实盘交易通道

  2. 参考如何设置策略仿真交易,接收实时行情即可开始实盘交易。

策略事件

策略提供哪些事件

策略的基类提供策略3类事件:

  1. 登录事件:策略初始化时触发。

  2. 行情数据事件:接收实时行情数据时触发,主要有Tick行情事件和Bar行情事件。

  3. 交易相关事件:交易时触发,主要有下单、撤单、订单回报事件。

用户重写自己关注事件的回调方法完善策略逻辑。

数据接口范例

行情模式

掘金SDK提供回测行情、模拟行情、实时行情及历史行情数据。

  1. 回测行情、模拟行情和实时行情在订阅了symbol后,在策略的OnTick方法和OnBar方法中接收行情数据。

  2. 各频率的历史行情数据提供对应的api提取。

数据定义

数据类型分为Tick数据和Bar数据。

  1. Tick行情是指按交易所实际发送的行情数据。

  2. Bar数据是指各种频率的行情数据,可订阅 1分、15分、60分的实时Bar数据。

  3. 日频数据提供DailyBar数据类型,日频仅在回测和历史数据提取时可用,不能实时订阅。

行情订阅/退订

如何订阅指定证券代码的实时行情

示例:订阅上交所浦发银行Tick行情和1分钟Bar行情。

方式一:在策略对象初始化时订阅行情

  1. 初始化策略对象并订阅行情

  2. 重写策略基类的行情回调方法

  3. 运行策略

int ret = strategy.Init("your username", 
                        "your password", 
                        "strategy_id", 
                        "SHSE.600000.tick, SHSE.600000.bar.60",
                        MDMode.MD_MODE_LIVE,
                        "localhost:8001");

public override void OnTick( Tick tick)
{

}

public override void OnBar(Bar bar)
{

}

strategy.Run();

方式二:在策略程序运行中订阅行情

  1. 初始化策略对象

  2. 订阅行情

  3. 重写策略基类的行情回调方法

  4. 运行策略

int ret = strategy.Init("your username", 
                        "your password", 
                        "strategy_id", 
                        "",
                        MDMode.MD_MODE_LIVE,
                        "localhost:8001");

int ret = strategy.Subscribe("SHSE.600000.tick,SHSE.600000.bar.60");

public override void OnTick( Tick tick)
{

}

public override void OnBar(Bar bar)
{

}

strategy.Run();
如何订阅指定证券代码的DailyBar

日频行情仅在策略回测时订阅使用,其他策略运行模式下订阅将接收不到DailyBar。

示例:订阅上交所浦发银行的日频行情和深交所平安银行的日频行情。

1.策略初始化时订阅

int ret = strategy.Init("your username", 
                        "password", 
                        "strategy_id", 
                        "SHSE.600000.bar.daily,SZSE.000001.bar.daily",
                        MDMode.MD_MODE_SIMULATED,
                        "localhost:8001");

2.策略运行中订阅

int ret = strategy.Subscribe("SHSE.600000.bar.daily,SZSE.000001.bar.daily");
如何退订指定证券代码的行情

示例:退订上交所浦发银行的Tick行情和深交所平安银行的1分钟周期的Bar行情。

int ret = strategy.Unsubscribe("SHSE.600000.tick,SZSE.000001.bar.60");

历史数据提取

如何提取指定时间的Tick数据

示例:提取上交所浦发银行和深交所平安银行2015-10-29 9:30:00到2015-10-29 15:00:00的Tick数据。

var ticks = strategy.GetTicks("SHSE.600000,SZSE.000001", 
            "2015-10-29 9:30:00", "2015-10-29 15:00:00");
如何提取指定时间的Bar数据

示例:提取上交所浦发银行和深交所平安银行2015-10-29 10:00:00到2015-10-29 15:00:00的1分钟 周期Bar数据,提取30s、5分钟周期的Bar数据修改参数bar_type为30、300即可。

var bars = strategy.GetBars("SHSE.600000,SZSE.000001", 60, 
            "2015-10-29 10:00:00", "2015-10-29 15:00:00");
如何提取指定日期的DailyBar

示例:提取上交所浦发银行和深交所平安银行2014-10-29到2015-10-29的DailyBar。

var dailyBars = strategy.GetDailyBars("SHSE.600000,SZSE.000001", 
                            "2014-10-29", "2015-10-29");

如何提取最近N笔Tick数据

示例:提取上交所浦发银行和深交所平安银行最近100笔Tick数据。

var ticks = strategy.GetLastNTicks("SHSE.600000,SZSE.000001", 100);
如何提取最近N个Bar数据

示例:提取上交所浦发银行和深交所平安银行最近20笔1分钟周期的bar数据,提取30s、5分钟周期的Bar数据修改参数bar_type为30、300即可。

var bars = strategy.GetLastNBars("SHSE.600000,SZSE.000001", 60, 20);
如何提取最近N个交易日的DailyBar

示例:提取上交所浦发银行和深交所平安银行最近20笔DailyBar数据。

var dailyBars = strategy.GetLastNDailyBars("SHSE.600000,SZSE.000001", 20);
如何提取最近1笔Tick数据

示例:提取上交所浦发银行和深交所平安银行最近1笔Tick数据。

var ticks = strategy.GetLastTicks("SHSE.600000,SZSE.000001");
如何提取最近1个Bar数据

示例:提取上交所浦发银行和深交所平安银行最近1个1分钟周期的Bar数据,提取30s、5分钟周期的Bar数据修改参数bar_type为30、300即可。

var bars = strategy.GetLastBars("SHSE.600000,SZSE.000001", 60);
如何提取最近1笔DailyBar数据

示例:提取上交所浦发银行和深交所平安银行最近1笔DailyBar数据。

var dailyBars = strategy.GetLastDailyBars("SHSE.600000,SZSE.000001");

行情事件

如何处理Tick事件和Bar事件

Tick、Bar事件在接收实时行情时触发,在Tick和Bar事件的回调方法中可接收订阅的Tick行情和Bar行情。在自己的策略类中重写策略基类的OnTick、OnBar方法。

public override void OnTick( Tick tick);

public override void OnBar(Bar bar);
如何处理行情状态事件

在自己的策略类中重写策略基类的OnMdEvent方法,行情状态事件在开盘、收盘、回放行情结束时触发。

public override void OnMdEvent(MDEvent md_event);

交易接口范例

交易相关数据类型

交易涉及到持仓、委托、成交回报、资金、绩效指标等数据类型,各数据类型的定义请点击相应的链接查看。

委托

如何开多仓

示例:市价买入1000股上交所浦发银行股票,市价开1手IF1512的多单。

注意:股票、基金等现货品种只有买入和卖出,对应下单类型是开多仓和平多仓。

1.在策略类的方法中调用异步接口,必须在策略执行了Run方法后调用有效。

OpenLong("SHSE", "600000", 0, 1000);
OpenLong("CFFEX", "IF1512", 0, 1);

2.在策略类外部通过策略类对象调用同步接口,无需策略执行Run方法。

strategy.OpenLongSync("SHSE", "600000", 0, 1000);
strategy.OpenLongSync("CFFEX", "IF1512", 0, 1);
如何平多仓

示例:市价卖出1000股上交所浦发银行股票,市价平1手IF1512的多单。

注意:股票、基金等现货品种只有买入和卖出,对应下单类型是开多仓和平多仓。

1.在策略类的方法中调用异步接口,必须在策略执行了Run方法后调用有效。

CloseLong("SHSE", "600000", 0, 1000);
CloseLong("CFFEX", "IF1512", 0, 1);

2.在策略类外部通过策略类对象调用同步接口,无需策略执行Run方法。

strategy.CloseLongSync("SHSE", "600000", 0, 1000);
strategy.CloseLongSync("CFFEX", "IF1512", 0, 1);
如何开空仓

示例:市价开1手IF1512的空单。

1.在策略类的方法中调用异步接口,必须在策略执行了Run方法后调用有效。

Order orderRet = OpenShort("CFFEX", "IF1512", 0, 1);

2.在策略类外部通过策略类对象调用同步接口,无需策略执行Run方法。

Order orderRet = strategy.OpenShortSync("CFFEX", "IF1512", 0, 1);
如何平空仓

示例:市价平1手IF1512的空单。

1.在策略类的方法中调用异步接口,必须在策略执行了Run方法后调用有效。

Order orderRet = CloseShort("CFFEX", "IF1512", 0, 1);

2.在策略类外部通过策略类对象调用同步接口,无需策略执行Run方法。

Order orderRet = strategy.CloseShortSync("CFFEX", "IF1512", 0, 1);
如何自定义下单

示例:市价开1手IF1512的多单

定义委托单对象

Order order = new Order();
order.exchange = "CFFEX";
order.sec_id = "IF1512";
order.side = (int)OrderSide.Bid;
order.position_effect = (int)PositionEffect.Open;
order.order_type = OrderType.OrderType_BOC;
order.price = 0;
order.volume = 1;            

说明:

order.side: 设置买卖方向

order.position_effect:设置开平类型,上期所可设置平今

order.order_type:设置委托类型,市价单还是限价单

1.在策略类的方法中调用异步接口,必须在策略执行了Run方法后调用有效。

Order orderRet = PlaceOrder( order );

2.在策略类外部通过策略类对象调用同步接口,无需策略执行Run方法。

Order orderRet = strategy.PlaceOrderSync( order );
如何撤回未成交订单

1.在策略类的方法中调用异步接口,必须在策略执行了Run方法后调用有效。

int ret = CancelOrder( "cl_ord_id" );

2.在策略类外部通过策略类对象调用同步接口,无需策略执行Run方法。

int ret = strategy.CancelOrder( "cl_ord_id" );      

说明:执行的结果由OnExecRpt, OnOrderCancelled, OnOrderCancelRejected回调方法返回

如何查询指定委托当前详情

在策略类的方法中调用接口。

Order order = GetOrder( "cl_ord_id" );

回报

订单的回报以交易事件的方式给出,当前提供的交易事件有:

  • 委托执行回报事件
  • 订单拒绝事件
  • 订单被柜台接受事件
  • 订单全部成交事件
  • 订单部分成交事件
  • 订单停止成交事件
  • 订单撤单拒绝事件

具体事件处理请参考交易事件处理章节。

资金

如何查询资金

Api提供查询当前策略的资金信息,在策略类的方法中直接调用接口。

Cash cash = GetCash();

持仓

如何获取指定证券代码的持仓

示例:获取上交所浦发银行持仓情况。

在策略类的方法中直接调用持仓接口。

Position postion = GetPosition("SHSE", "600000", (int)OrderSide.Bid);
如何获取当前策略的全部持仓信息

在策略类的方法中直接调用接口。

var posList = GetPositions();

绩效

如何获取当前策略的绩效指标

在策略类的方法中直接调用接口。

Indicator indicator = GetIndicator();

交易事件

当我们在程序下一笔委托单到交易服务时,将产生一系列交易事件。

如何处理订单执行回报事件

在自己的策略类中重写策略基类的OnExecRpt方法,OnExecRpt方法在委托执行时触发,订单的任何执行回报都会触发本事件。

public override void OnExecRpt(ExecRpt rpt);
如何处理订单拒绝事件

在自己的策略类中重写策略基类的OnOrderRejected方法,OnOrderRejected方法在订单拒绝时触发。

public override void OnOrderRejected(Order order);
如何处理订单被交易所接收事件

在自己的策略类中重写策略基类的OnOrderNew方法,当订单已被交易所接受时触发。

public override void OnOrderNew(Order order);
如何处理订单全部成交事件

在自己的策略类中重写策略基类的OnOrderFilled方法,当一笔订单完全成交时触发。

public override void OnOrderFilled(Order order);
如何处理委托单部分成交的事件

在自己的策略类中重写策略基类的OnOrderFilled方法,当一笔订单有部分成交时触发。

public override void OnOrderPartiallyFilled(Order order);
如何处理停止订单执行事件

在自己的策略类中重写策略基类的OnOrderFilled方法,当订单停止执行时触发,例如限价单收市时还未成交。

public override void OnOrderStopExecuted(Order order);
如何处理撤单拒绝事件

在自己的策略类中重写策略基类的OnOrderCancelRejected方法,当撤单拒绝时触发。

public override void OnOrderCancelRejected(ExecRpt rpt);
如何处理委托单状态变化事件

在自己的策略类中重写策略基类的OnOrderStatus方法,当委托单的状态发生变化时触发。

public override void OnOrderStatus(Order order);

错误与版本等接口范例

如何处理策略登录事件

策略在初始化时将触发登录事件,可以在自己的策略类中重写策略基类的OnLogin方法,以便策略初始化时添加额外的操作。

public override void OnLogin();
如何获取API版本信息

调用策略类的对外公开的版本信息方法

strategy.GetSdkVersion();
如何获取API返回值及错误事件参数值的文本信息

API返回值及错误事件的参数值都有统一的定义,查看文本信息请点击链接

如何获取策略运行中的错误信息

在自己的策略类中重写策略基类的OnError方法,当策略执行过程有任何错误都会回调该方法,通过参数获取错误信息

public override void OnError(int error_code, string error_msg);
如何获取错误码对应的错误信息

调用策略类的对外公开的获取错误信息方法

strategy.GetStrError( errCode);

C# API接口

枚举常量定义

掘金SDK中的枚举和常量定义。枚举或常量用于定义各种状态和标识类型,与FIX协议的定义一致,可查阅FIX协议文档作为补充。

OrderStatus

订单状态,引用路径:class GMSDK.OrderStatus

public enum OrderStatus
{
    New = 1;              // 交易所已接受订单
    PartiallyFilled = 2;  // 部分成交
    Filled = 3;           // 全部成交
    Canceled = 5;         // 已撤
    PendingCancel = 6;    // 待撤
    Rejected = 8;         // 已拒绝
    Suspended = 9;        // 已挂起
    PendingNew = 10;      // 待接受
    Expired = 12;         // 过期
}

OrderRejectReason

订单拒绝原因,引用路径:class GMSDK.OrderRejectReason

public enum OrderRejectReason
{
    /// 下单被拒绝原因
    UnknownReason = 1;           // 未知原因
    RiskRuleCheckFailed = 2;     // 风控检查不通过
    NoEnoughCash = 3;            // 资金不足
    NoEnoughPosition = 4;        // 仓位不足
    IllegalSymbol = 5;           // 策略ID错误
    IllegalSymbol = 6;           // 委托symbol错误
    IllegalVolume = 7;           // 委托量错误
    IllegalPrice = 8;            // 委托价错误
    NoMatchedTradingChannel = 9; // 没有交易通道
    AccountForbidTrading = 10;   // 帐户被禁止交易
    TradingChannelNotConnected = 11; // 交易通道未连接
    StrategyForbidTrading = 10;  // 策略被禁止交易
    NotInTradingTimespan = 13;    // 非交易时间
}

CancelOrderRejectReason

撤单被拒绝原因,引用路径:class GMSDK.CancelOrderRejectReason

public enum CancelOrderRejectReason
    {
        /// 撤单被拒绝原因
        OrderFinalized = 101;          // 订单已是最终状态
        UnknowOrder = 102;             // 未知订单
        BrokerOption = 103;            // 柜台拒绝
        AlreadyInPendingCancel = 104;  // 重复撤单
    }

OrderSide

订单方向,引用路径:class GMSDK.OrderSide

public enum OrderSide
{
    Ask = 2;  // 空方向
    Bid = 1;  // 多方向
}

OrderType

订单类型,引用路径:class GMSDK.OrderType

public enum OrderType
{
    LMT = 0,       //限价委托(limit)                        
    BOC = 1,       //对方最优价格(best of counterparty)     
    BOP = 2,       //己方最优价格(best of party)            
    B5TC = 3,      //最优五档剩余撤销(best 5 then cancel)   
    B5TL = 4,      //最优五档剩余转限价(best 5 then limit)  
    IOC = 5,       //即时成交剩余撤销(immediately or cancel)
    FOK = 6,       //即时全额成交或撤销(fill or kill)       
    AON = 7,       //全额成交或不成交(all or none)          
    MTL = 8,       //市价剩余转限价(market then limit)      
    EXE = 9        //期权行权(option execute)  
}

ExecType

订单执行回报类型,引用路径:class GMSDK.ExecType

public enum ExecType
{
    New = 1;           // 交易所已接受订单
    Canceled = 5;      // 已撤
    PendingCancel = 6; // 待撤
    Rejected = 8;      // 已拒绝
    PendingNew = 10;    // 待接受
    Expired = 12;       // 过期
    Trade = 15;         // 交易
    CancelReject = 19;  // 撤单被拒绝
}

PositionEffect

开平仓类型,引用路径:class GMSDK.PositionEffect

public enum PositionEffect
{
    Open = 1;           // 开仓
    Close = 2;          // 平仓
    CloseToday = 3;     //平今仓
    CloseYesterday = 4; //平昨仓
}

交易数据类型

交易数据类型主要包括委托,执行回报,资金,持仓等数据类型。

Order

委托订单,引用路径:class GMSDK.Order

public class Order
{
    /// 策略ID
    public string strategy_id;
    /// 交易账号
    public string account_id;
    /// 客户端订单ID
    public string cl_ord_id;
    /// 柜台订单ID
    public string order_id;
    /// 交易所订单ID
    public string ex_ord_id;
    /// 交易所ID
    public string exchange;
    /// 证券ID
    public string sec_id;
    /// 开平标志
    public byte position_effect;
    /// 买卖方向
    public byte side;
    /// 订单类型
    public byte order_type;
    /// 订单来源
    public int order_src;
    /// 订单状态
    public byte status;
    /// 订单拒绝原因
    public byte ord_rej_reason;
    /// 订单拒绝原因描述
    public string ord_rej_reason_detail;
    /// 委托价
    public double price;
    ///止损价
    public double stop_price;
    /// 委托量
    public double volume;
    /// 已成交量
    public double filled_volume;
    /// 已成交均价
    public double filled_vwap;
    /// 已成交额
    public double filled_amount;
    /// 委托下单时间
    public double sending_time;
    /// 最新一次成交时间
    public double transact_time;
}

ExecRpt

委托执行回报,引用路径:class GMSDK.ExecRpt

public class ExecRpt
{
    /// 策略ID
    public string strategy_id;
    /// 客户端订单ID
    public string cl_ord_id;
    /// 交易所订单ID
    public string order_id;
    /// 订单执行回报ID
    public string exec_id;
    /// 交易所ID
    public string exchange;
    /// 证券ID
    public string sec_id;
    /// 开平标志
    public byte position_effect;
    /// 买卖方向
    public byte side;
    /// 订单拒绝原因
    public byte ord_rej_reason;
    /// 订单拒绝原因描述
    public string ord_rej_reason_detail;
    /// 订单执行回报类型
    public byte exec_type;
    /// 成交价
    public double price;
    /// 成交量
    public double volume;
    /// 成交额
    public double amount;
    /// 交易时间
    public double transact_time;
}

Cash

资金,引用路径:class GMSDK.Cash

public class Cash
{
    public string strategy_id;               // 策略ID
    public string account_id;                // 账号ID
    public int currency;                     // 币种

    public double nav;                      // 净值
    public double fpnl;                     // 浮动收益
    public double pnl;                      // 净收益
    public double profit_ratio;             // 收益率
    public double frozen;                   // 持仓冻结金额
    public double order_frozen;             // 挂单冻结金额
    public double available;                // 可用资金

    public double cum_inout;                // 累计出入金
    public double cum_trade;                // 累计交易额
    public double cum_pnl;                  // 累计收益
    public double cum_commission;           // 累计手续费

    public double last_trade;               // 最新一笔交易额
    public double last_pnl;                 // 最新一笔交易收益
    public double last_commission;          // 最新一笔交易手续费
    public double last_inout;               // 最新一次出入金
    public int change_reason;               // 变动原因

    public double transact_time;            // 交易时间
}

Position

持仓,引用路径:class GMSDK.Position

public class Position
{
    public string strategy_id;               // 策略ID
    public string account_id;                // 账号ID
    /// 交易所ID
    public string exchange;
    /// 证券ID
    public string sec_id;
    /// 买卖方向
    public byte side;
    /// 持仓量
    public double volume;
    /// 今仓量
    public double volume_today;
    /// 持仓均价
    public double vwap;
    /// 当前行情价格
    public double price;
    /// 持仓额
    public double amount;
    /// 浮动赢亏
    public double fpnl;
    /// 持仓成本
    public double cost;
    /// 挂单冻结仓位量
    public double order_frozen;
    /// 挂单冻结今仓仓位
    public double order_frozen_today;
    /// 可平仓位量
    public double available;
    /// 可平今仓位
    public double available_today;
    /// 可平昨仓量
    public double available_yesterday;
    /// 上一笔成交价
    public double last_price;
    /// 上一笔成交量
    public double last_volume;
    /// 上一笔成交时间
    public double transact_time;
    /// 初始建仓时间
    public double init_time;
}

Indicator

绩效指标,引用路径:class GMSDK.Indicator

public class Indicator
{
    public string strategy_id;
    public string account_id;
    public double nav;                                  //净值(cum_inout + cum_pnl + fpnl - cum_commission)  
    public double pnl;                                  //净收益(nav-cum_inout)                              
    public double profit_ratio;                         //收益率(pnl/cum_inout)
    public double profit_ratio_bench;                   //基准收益率                              
    public double sharp_ratio;                          //夏普比率                                           
    public double risk_ratio;                           //风险比率 
    public int open_count;                              //开仓次数                                          
    public int trade_count;                             //交易次数                                           
    public int win_count;                               //盈利次数                                           
    public int lose_count;                              //亏损次数                                           
    public double win_ratio;                            //胜率                                               
    public double max_profit;                           //最大收益                                           
    public double min_profit;                           //最小收益                                           
    public double max_single_trade_profit;              //最大单次交易收益                                   
    public double min_single_trade_profit;              //最小单次交易收益                                   
    public double daily_max_single_trade_profit;        //今日最大单次交易收益                               
    public double daily_min_single_trade_profit;        //今日最小单次交易收益                               
    public double max_position_value;                   //最大持仓市值或权益                                 
    public double min_position_value;                   //最小持仓市值或权益                                 
    public double max_drawdown;                         //最大回撤                                           
    public double daily_pnl;                            //今日收益                                           
    public double daily_return;                         //今日收益率                                         
    public double annual_return;                        //年化收益率                                         
    public double cum_inout;                            //累计出入金
    public double cum_trade;                            //累计交易额
    public double cum_pnl;                              //累计平仓收益(没扣除手续费)
    public double cum_commission;                       //累计手续费  
    public double transact_time;                        //指标计算时间  
}

BrokerAccount

柜台账户,引用路径:class GMSDK.BrokerAccount

    public class BrokerAccount
    {
        public string account_id;                       //柜台账号ID
        public string username;                         //柜台账号
        public bool permissible;                        //允许交易
        public int  status;                             //账号当前状态
    }

行情数据类型

行情数据类型主要包括Tick,Bar,DailyBar

MarketDataEvent

行情数据时间,引用路径:class GMSDK.MarketDataEvent

public class MarketDataEvent
{
    /// 时间
    public double utc_time;
    /// 事件类型(1:开盘  2:收盘, 3:回放结束)
    public int event_type;
}

Tick

逐笔行情数据,引用路径:class GMSDK.Tick

public class Tick
{
    /// 交易所
    public string exchange;
    /// 合约ID
    public string sec_id;
    /// symbol
    public string symbol
    {
        get { return string.Format("{0}.{1}", exchange, sec_id); }
    }
    ///  UTC时间戳
    public double utc_time;
    ///  交易时间
    public string strtime;
    /// 最新价
    public float last_price;
    /// 开盘价
    public float open;
    /// 最高价
    public float high;
    /// 最低价
    public float low;
    /// 1-5档买价
    public float bid_p1;
    public float bid_p2;
    public float bid_p3;
    public float bid_p4;
    public float bid_p5;
    /// 1-5档买量
    public int bid_v1;
    public int bid_v2;
    public int bid_v3;
    public int bid_v4;
    public int bid_v5;
    /// 1-5档卖价
    public float ask_p1;
    public float ask_p2;
    public float ask_p3;
    public float ask_p4;
    public float ask_p5;
    /// 1-5档卖量
    public int ask_v1;
    public int ask_v2;
    public int ask_v3;
    public int ask_v4;
    public int ask_v5;
    ///  成交总量/最新成交量,累计值
    public double cum_volume;
    ///  成交总金额/最新成交额,累计值
    public double cum_amount;
    ///  合约持仓量(期),累计值
    public System.Int64 cum_position;
    ///  瞬时成交额
    public double last_amount;
    ///  瞬时成交量
    public int last_volume;
    /// 涨停价
    public float upper_limit;
    /// 跌停价
    public float lower_limit;
    /// 今日结算价
    public float settle_price;
    /// 1:'双开', 2: '双平', 3: '多开', 4:'空开', 5: '空平', 6:'多平', 7:'多换', 8:'空换' 
    public int trade_type;
    //  昨收价
    public float pre_close;     
}

Bar

各种周期的Bar数据,引用路径:class GMSDK.Bar

public class Bar
{
    /// bar类型,以秒为单位,比如1分钟bar, bar_type=60
    public int bar_type;
    /// bar的开始时间
    public double utc_time;
    /// bar的开始时间
    public string strtime;
    /// bar的结束时间
    public double utc_endtime;
    /// bar的结束时间
    public string strendtime;
    /// 交易所
    public string exchange;
    /// 合约ID
    public string sec_id;
    /// 开盘价
    public float open;
    /// 收盘价
    public float close;
    /// 最高价
    public float high;
    /// 最低价
    public float low;
    /// 昨收
    public float pre_close;
    /// 成交量
    public double volume;
    /// 成交额
    public double amount;
    /// 持仓量
    public System.Int64 position;
    /// 复权因子
    public float adj_factor;
    /// 复权/停牌标记
    public int flag;
}

Instrument

交易代码信息,引用路径: class GMSDK.Instrument

public class Instrument
{
        public string symbol;                //交易代码
        public int sec_type;                 //代码品种,股票,基金,期货等
        public string sec_name;              //代码名称
        public double multiplier;            //合约乘数
        public double margin_ratio;          //保证金比率
        public double price_tick;            //价格最小变动单位
        public double upper_limit;           //当天涨停板
        public double lower_limit;           //当天跌停板
        public int is_active;                //当天是否交易
        public string update_time;           //更新时间
}

Constituent

成分股信息,引用路径: class GMSDK.Constituent

public class Constituent
{
    public string symbol;                    //交易代码
    public double weight;                    //权重
}

FinancialIndex

财务指标,引用路径: class GMSDK.FinancialIndex

    public class FinancialIndex
    {
        public string symbol;                        //股票代码
        public string pub_date;                      //公告日期    
        public double eps;                           //每股收益    
        public double bvps;                          //每股净资产  
        public double cfps;                          //每股现金流  
        public double afps;                          //每股公积金  
        public double total_asset;                   //总资产      
        public double current_asset;                 //流动资产    
        public double fixed_asset;                   //固定资产    
        public double liability;                     //负债合计    
        public double current_liability;             //流动负债    
        public double longterm_liability;            //长期负债    
        public double equity;                        //所有者权益  
        public double income;                        //主营业务收入
        public double operating_profit;              //主营业务利润
        public double net_profit;                    //净利润    
    }

ShareIndex

股本指标,引用路径: class GMSDK.ShareIndex

    public class ShareIndex
    {
        public string symbol;                         //股票代码
        public string pub_date;                       //公告日期
        public double total_share;                    //总股本
        public double flow_a_share;                   //流通A股
        public double nonflow_a_share;                //限售流通A股
    }

MarketIndex

市场指标,引用路径: class GMSDK.MarketIndex

    public class MarketIndex
    {
        public string symbol;              //股票代码
        public string pub_date;            //公告日期
        public double pe_ratio;            //市盈率
        public double pb_ratio;            //市净率
        public double ps_ratio;            //市销率
        public double market_value;        //市值
        public double market_value_flow;   //流通市值
    }

TradeDate

市场指标,引用路径: class GMSDK.TradeDate

    public class TradeDate
    {
        public double utc_time;            //utc时间戳
        public string strtime;             //ios格式时间字符串
    }

StockAdjustFactor

复权因子,引用路径: class GMSDK.StockAdjustFactor

    public class StockAdjustFactor
    {
        public string      symbol;     //股票代码
        public string      trade_date; //交易日
        public double      adj_factor; //复权因子

    }

StockDivident

分红送股事件明细,引用路径: class GMSDK.StockDivident

    public class StockDivident
    {
        public string symbol;             //股票代码
        public string div_date;           //除权除息日
        public double cash_div;           //每股派现
        public double share_div_ratio;    //每股送股比例
        public double share_trans_ratio;  //每股转增股比例
        public double allotment_ratio;    //每股配股比例
        public double allotment_price;    //配股价

    }

VirtualContract

虚拟合约明细,引用路径: class GMSDK.VirtualContract

    public class VirtualContract
    {
        public string vsymbol;       //主力合约或连接合约代码
        public string symbol;        //真实symbol
        public string trade_date;    //交易日
    }

策略初始化方法

Init

初始化策略,设置服务地址,账号密码,策略ID,以及需要订阅的symbol列表。策略自动连接服务,并登陆,订阅对应的行情,准备好运行。

函数原型:

int Init(string username, 
         string password, 
         string strategy_id, 
         string subscribe_symbols, 
         MDMode mode = MDMode.MD_MODE_LIVE, 
         string td_addr = null);

参数:

参数名 类型 说明
username string 掘金终端账号
password string 掘金终端密码
strategy_id string 策略ID
subscribe_symbols string 行情订阅的代码列表
mode MDMode 枚举类型,行情模式
td_addr string 交易服务器uri, 如设置为localhost:8001,则终端用户指向本地客户端 , 如果设置为NULL, 则使用掘金云端服务

返回值:

返回值编码

示例:

初始化时订阅上交所浦发银行的Tick和1分钟Bar实时行情

int ret = strategy.Init("your username", 
                        "your password", 
                        "strategy_id", 
                        "SHSE.600000.tick,SHSE.600000.bar.60",
                        MDMode.MD_MODE_LIVE,
                        "localhost:8001");

注意项:

symbol_list 订阅代码表的参数格式

InitWithConfig

使用配置文件初始化策略,配置文件已设置服务地址,账号密码,策略ID,行情模式以及需要订阅的symbol列表

函数原型:

InitWithConfig(string config_file);

参数:

参数名 类型 说明
config_file string 策略配置文件名

返回值:

返回值编码

示例:

strategy.ini文件配置:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;策略基本配置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[strategy]
;掘金用户名
username=-
;掘金密码
password=-
;策略ID
strategy_id=3c7e70be-7e02-11e5-b293-5ec5d48ea63a
;订阅证券代码或合约代码列表
subscribe_symbols=SHSE.600000.tick,SHSE.600000.bar.60
;行情模式,2-实时行情模式,3-模拟行情模式,4-回放行情模式
mode=2
;交易服务地址,使用掘金终端交易时,地址为localhost:8001, 如果此项配置为空,则订单发往掘金云服务器
td_addr=localhost:8001
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;策略回测参数配置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[backtest]
;历史数据回放开始时间
start_time=2014-10-25 09:30:00
;历史数据回放结束时间
end_time=2015-10-29 15:15:00
;策略初始资金
initial_cash=1000000
;委托量成交比率,默认=1(每个委托100%成交)
transaction_ratio=1
;手续费率,默认=0(不计算手续费)
commission_ratio=0.0008
;滑点比率,默认=0(无滑点)
slippage_ratio=0.246
;行情复权模式,0=不复权,1=前复权
price_type=1
int ret = strategy.Init("strategy.ini");

BacktestConfig

回测参数设置, 仅在回测模式下有效

函数原型:

BacktestConfig(string start_time, 
               string end_time, 
               double initial_cash = 1e+006, 
               double transaction_ratio = 1, 
               double commission_ratio = 0, 
               double slippage_ratio = 0, 
               int    price_type = 1,
               string bench_symbol = null,
               int    check_cache);

参数:

参数名 类型 说明
start_time string 回放行情开始时间,格式:yyyy-mm-dd HH:MM:SS
end_time string 回放行情结束时间,格式:yyyy-mm-dd HH:MM:SS
initial_cash double 回测初始资金,默认1000000
transaction_ratio double 委托量成交比率,默认1,按委托量全部成交
commission_ratio double 手续费率,默认0,无手续费
slippage_ratio double 滑点比率,默认0,无滑点
price_type int 复权方式,0-不复权,1-前复权
bench_symbol string 基准代码
check_cache int 回测时是否使用本地缓存数据,0-不使用,1-使用, 默认为值为 1

返回值:

返回值编码

示例:

回测时间为2014-10-25 09:30:00到2015-10-29 15:15:00,策略初始资金为1,000,000,委托成交为全部成交,手续费率万分之3,滑点比率为0.246,数据使用前复权。回测的证券代码及数据周期由订阅行情决定。

strategy.BacktestConfig("2014-10-25 09:30:00", "2015-10-29 15:15:00", 
                    1000000, 1, 0.0003, 0.246, 1);

策略启停方法

Run

运行策略

函数原型:

int Run();

参数:

返回值:

返回值编码

示例:

strategy.Run( );

Stop

停止策略

函数原型:

void Stop();

参数:

返回值:

示例:

strategy.Stop( );

行情订阅方法

Subscribe

订阅行情,策略类和行情服务了都提供该接口。

函数原型:

int Subscribe(string symbol_list);

参数:

参数名 类型 说明
symbol_list string 订阅代码列表

返回值:

返回值编码

示例:

通过策略对象订阅上交所浦发银行Tick和1分钟Bar实时数据

strategy.Subscribe("SHSE.600000.tick,SHSE.600000.bar.60");

注意项:

symbol_list 订阅代码表的参数格式 当在回测模式下,需要显式关闭本地缓存api才能正常工作, 如何关闭本地缓存,请参见 BacktestConfig

Unsubscribe

退订指定行情,策略类和行情服务了都提供该接口。

函数原型:

int UnSubscribe(string symbol_list);

参数:

参数名 类型 说明
symbol_list string 退订代码列表

返回值:

返回值编码

示例:

通过策略对象退订上交所浦发银行Tick和1分钟Bar实时数据

strategy.UnSubscribe("SHSE.600000.tick,SHSE.600000.bar.60");

注意项:

symbol_list 订阅代码表的参数格式 当在回测模式下,需要显式关闭本地缓存api才能正常工作, 如何关闭本地缓存,请参见 BacktestConfig

Resubscribe

重置订阅条件,相当于先退订原来所有行情,再重新订阅指定的行情

函数原型:

int Resubscribe(string symbol_list);

参数:

参数名 类型 说明
symbol_list string 订阅代码列表

返回值:

返回值编码

symbol_list 订阅代码表的参数格式 当在回测模式下,需要显式关闭本地缓存api才能正常工作, 如何关闭本地缓存,请参见 BacktestConfig

行情事件方法

OnTick

响应Tick事件,收到Tick数据后本函数被调用。

函数原型:

virtual void OnTick(Tick tick);

参数:

参数名 类型 说明
tick Tick Tick数据

返回值:

OnBar

响应Bar事件,收到Bar数据后本函数被调用。

函数原型:

virtual void OnBar(Bar bar);

参数:

参数名 类型 说明
bar Bar Bar数据

返回值:

OnMdEvent

响应行情状态事件,收到MarketDataEvent数据后本函数被调用。

函数原型:

virtual void OnMdEvent(MDEvent md_event);

参数:

参数名 类型 说明
md_event MDEvent 开盘,收盘,回放行情结束等事件

返回值:

数据提取方法

GetTicks

提取指定时间段的历史Tick数据,支持单个代码提取或多个代码组合提取。策略类和行情服务类都提供该接口。

函数原型:

List<Tick> GetTicks(
    string symbol_list, 
    string begin_time, 
    string end_time);

参数:

参数名 类型 说明
symbol_list string 证券代码, 带交易所代码以确保唯一,如SHSE.600000,同时支持多只代码
begin_time string 开始时间, 如2015-10-30 09:30:00
end_time string 结束时间, 如2015-10-30 15:00:00

返回值:

返回List数据列表

示例:

通过策略对象提取上交所浦发银行和深交所平安银行2015-10-30 09:30:00到2015-10-30 15:00:00时间段的所有Tick数据

var ticks = strategy.GetTicks("SHSE.600000,SZSE.000001", 
            "2015-10-30 09:30:00", 
            "2015-10-30 15:00:00");

GetBars

提取指定时间段的历史Bar数据,支持单个代码提取或多个代码组合提取。策略类和行情服务类都提供该接口。

函数原型:

List<Bar> GetBars(
    string symbol_list, 
    int bar_type, 
    string begin_time, 
    string end_time);

参数:

参数名 类型 说明
symbol_list string 证券代码, 带交易所代码以确保唯一,如SHSE.600000,同时支持多只代码
bar_type int bar周期,以秒为单位,比如60即1分钟bar
begin_time string 开始时间, 如2015-10-30 09:30:00
end_time string 结束时间, 如2015-10-30 15:00:00

返回值:

返回List数据列表

示例:

通过策略对象提取上交所浦发银行和深交所平安银行2015-10-30 09:30:00到2015-10-30 15:00:00时间段的1分钟Bar数据


var bars = strategy.GetBars("SHSE.600000,SZSE.000001", 
            60,
            "2015-10-30 09:30:00", 
            "2015-10-30 15:00:00");

GetDailyBars

提取指定时间段的历史日周期Bar数据,支持单个代码提取或多个代码组合提取。DailyBar比Bar多了部分静态数据,如结算价,涨跌停等。策略类和行情服务类都提供该接口。

函数原型:

List<DailyBar> GetDailyBars(
                string symbol_list, 
                string begin_time, 
                string end_time);

参数:

参数名 类型 说明
symbol_list string 证券代码, 带交易所代码以确保唯一,如SHSE.600000,同时支持多只代码
begin_time string 开始日期, 如2015-10-19
end_time string 结束日期, 如2015-10-30

返回值:

返回List数据列表

示例:

通过策略对象提取上交所浦发银行和深交所平安银行2015-10-19到2015-10-30时间段的DailyBar数据

var dailybars = strategy.GetDailyBars("SHSE.600000,SZSE.000001", 
            "2015-10-19", 
            "2015-10-30");

GetLastTicks

提取最新的1笔Tick数据,支持单个代码提取或多个代码组合提取。策略类和行情服务类都提供该接口。

函数原型:

List<Tick> GetLastTicks(string symbol_list);

参数:

参数名 类型 说明
symbol string 证券代码, 带交易所代码以确保唯一,如SHSE.600000,同时支持多只代码

返回值:

返回List数据列表

示例:

通过策略对象提取上交所浦发银行和深交所平安银行的最近1笔Tick数据

var ticks = strategy.GetLastTicks("SHSE.600000,SZSE.000001");

GetLastBars

提取最新1条Bar数据,支持单个代码提取或多个代码组合提取。策略类和行情服务类都提供该接口。

函数原型:

public List<Bar> GetLastBars(string symbol_list, int bar_type);

参数:

参数名 类型 说明
symbol string 证券代码, 带交易所代码以确保唯一,如SHSE.600000,同时支持多只代码
bar_type int bar周期,以秒为单位,比如60即1分钟bar

返回值:

返回List数据列表

示例:

通过策略对象提取上交所浦发银行和深交所平安银行的最新的1笔1分钟Bar数据

var bars = strategy.GetLastBars("SHSE.600000,SZSE.000001", 60);

GetLastDailyBars

提取最新1条DailyBar数据,支持单个代码提取或多个代码组合提取。策略类和行情服务类都提供该接口。

函数原型:

List<DailyBar> GetLastDailyBars(string symbol_list);

参数:

参数名 类型 说明
symbol string 证券代码, 带交易所代码以确保唯一,如SHSE.600000,同时支持多只代码

返回值:

返回List数据列表

示例:

通过策略对象提取上交所浦发银行和深交所平安银行的最近一笔DailyBar数据

var dailybars = strategy.GetLastDailyBars("SHSE.600000,SZSE.000001");

GetLastNTicks

提取单个代码最新n笔Tick数据,策略类和行情服务类都提供该接口。

函数原型:

List<Tick> GetLastNTicks(string symbol, int n = 1, string end_time = "");

参数:

参数名 类型 说明
symbol string 证券代码, 带交易所代码以确保唯一,如SHSE.600000
n int 提取的数据条数
end_time string 截止时间,如 2015-11-30 00:00:00

返回值:

返回List数据列表

示例:

通过策略对象提取上交所浦发银行的最近10笔Tick数据

var ticks = strategy.GetLastNTicks("SHSE.600000", 10);

GetLastNBars

提取单个代码的最新n条Bar数据,策略类和行情服务类都提供该接口。

函数原型:

List<Bar> GetLastNBars(string symbol, int bar_type, int n = 1, string end_time = "");

参数:

参数名 类型 说明
symbol string 证券代码, 带交易所代码以确保唯一,如SHSE.600000
bar_type int bar周期,以秒为单位,比如60即1分钟bar
n int 提取的数据条数
end_time string 截止时间,如 2015-11-30 00:00:00

返回值:

返回List数据列表

示例:

通过策略对象提取上交所浦发银行的最近10笔1分钟Bar数据

var bars = strategy.GetLastNBars("SHSE.600000", 60, 10);

GetLastNDailyBars

提取单个代码的最新n条DailyBar数据,策略类和行情服务类都提供该接口。

函数原型:

List<DailyBar> GetLastNDailyBars(string symbol, int n = 1, string end_time = "");

参数:

参数名 类型 说明
symbol string 证券代码, 带交易所代码以确保唯一,如SHSE.600000
n int 提取的数据条数
end_time string 截止时间, 如 2015-11-30 00:00:00

返回值:

返回List数据列表

示例:

通过策略对象提取上交所浦发银行的最近10笔1分钟DailyBar数据

var dailybars = strategy.GetLastNDailyBars("SHSE.600000", 10);

GetInstruments

根据市场与证券类型提取交易代码

函数原型:

List<Instrument> GetInstruments(string exchange, int sec_type, int is_active = 1)

参数:

参数名 类型 说明
exchange string 市场代码,如SHSE
sec_type int 代码类型:1 股票,2 基金,3 指数,4 期货,5 ETF
is_active int 筛选条件,0-获取所有交易代码,1-获取当天可交易代码

返回值:

返回List数据列表

示例:

提取上交所当天所有可交易的股票代码

var instruments = strategy.GetInstruments("SHSE", 1, 1);

GetInstrumentsByName

根据品种提取交易代码

函数原型:

List<Instrument> GetInstrumentsByName(string name)

参数:

参数名 类型 说明
name string 品种代码,如ag,au,cu

返回值:

返回List数据列表

示例:

提取沪银合约代码

var instruments = strategy.GetInstrumentsByName("ag");

GetConstituents

查询指数的成分股构成

函数原型:

List<Constituent> GetConstituents(string index_symbol)

参数:

参数名 类型 说明
index_symbol string 指数代码, 如SHSE.000300

返回值:

Constituent 对象列表

示例:

提取沪深300指数的成分股

constituents = GetConstituents("SHSE.000300");

GetFinancialIndex

获取股票一个时段的财务指标

函数原型:

List<FinancialIndex> GetFinancialIndex(string symbol, string begin_time, string end_time)

参数:

参数名 类型 说明
symbol string 股票代码,如SHSE.600000
begin_time string 开始时间
end_time string 结束时间

返回值:

返回List数据列表

示例:

提取SHSE.600000 2013-2016年的财务指标

var financialIndex = strategy.GetFinancialIndex("SHSE.600000", "2013-01-01 00:00:00", "2016-01-01 00:00:00");

GetLastFinancialIndex

获取股票最新的财务指标

函数原型:

List<FinancialIndex> GetLastFinancialIndex(string symbol_list)

参数:

参数名 类型 说明
symbol_list string 股票代码,如SHSE.600000,SZSE.000001

返回值:

返回List数据列表

示例:

提取SHSE.600000的最新的财务指标

var financialIndex = strategy.GetLastFinancialIndex("SHSE.600000");

GetLastNFinancialIndex

获取股票最新N笔财务指标

函数原型:

List<FinancialIndex> GetLastNFinancialIndex(string symbol, int n = 1)

参数:

参数名 类型 说明
symbol string 股票代码,如SHSE.600000
n int 获取个数

返回值:

返回List数据列表

示例:

提取SHSE.600000的最新10笔财务指标

var financialIndex = strategy.GetLastNFinancialIndex("SHSE.600000", 10);

GetShareIndex

获取股票一个时段的股本指标

函数原型:

List<ShareIndex> GetShareIndex(string symbol, string begin_time, string end_time)

参数:

参数名 类型 说明
symbol string 股票代码,如SHSE.600000
begin_time string 开始时间
end_time string 结束时间

返回值:

返回List数据列表

示例:

提取SHSE.600000 2013-2016年的股本指标

var idx = strategy.GetShareIndex("SHSE.600000", "2013-01-01 00:00:00", "2016-01-01 00:00:00");

GetLastShareIndex

获取股票最新的股本指标

函数原型:

List<ShareIndex> GetLastShareIndex(string symbol_list)

参数:

参数名 类型 说明
symbol_list string 股票代码,如SHSE.600000,SZSE.000001

返回值:

返回List数据列表

示例:

提取SHSE.600000的最新的股本指标

var idx = strategy.GetLastShareIndex("SHSE.600000");

GetLastNShareIndex

获取股票最新N笔股本指标

函数原型:

List<ShareIndex> GetLastNShareIndex(string symbol, int n = 1)

参数:

参数名 类型 说明
symbol string 股票代码,如SHSE.600000
n int 获取个数

返回值:

返回List数据列表

示例:

提取SHSE.600000的最新10笔股本指标

var idx = strategy.GetLastNShareIndex("SHSE.600000", 10);

GetMarketIndex

获取股票一个时段的市场指标

函数原型:

List<MarketIndex> GetMarketIndex(string symbol, string begin_time, string end_time)

参数:

参数名 类型 说明
symbol string 股票代码,如SHSE.600000
begin_time string 开始时间
end_time string 结束时间

返回值:

返回List数据列表

示例:

提取SHSE.600000 2013-2016年的市场指标

var idx = strategy.GetMarketIndex("SHSE.600000", "2013-01-01 00:00:00", "2016-01-01 00:00:00");

GetLastMarketIndex

获取股票最新的市场指标

函数原型:

List<MarketIndex> GetLastMarketIndex(string symbol_list)

参数:

参数名 类型 说明
symbol_list string 股票代码,如SHSE.600000,SZSE.000001

返回值:

返回List数据列表

示例:

提取SHSE.600000的最新的市场指标

var idx = strategy.GetLastMarketIndex("SHSE.600000");

GetLastNMarketIndex

获取股票最新N笔市场指标

函数原型:

List<MarketIndex> GetLastNMarketIndex(string symbol, int n = 1)

参数:

参数名 类型 说明
symbol string 股票代码,如SHSE.600000
n int 获取个数

返回值:

返回List数据列表

示例:

提取SHSE.600000的最新10笔市场指标

var idx = strategy.GetLastNMarketIndex("SHSE.600000", 10);

GetCalendar

查询市场交易日历

函数原型:

List<TradeDate> GetCalendar(string exchange, string start_time, string end_time)

参数:

参数名 类型 说明
exchange string 市场代码
start_time string 查询开始时间
end_time string 查询结束时间

返回值:

交易日历列表

示例:

提取上交所2016年的交易日历


var trade_dates = GetCalendar("SHSE", "2016-01-01", "2016-12-31");

GetStockAdj

查询分红送股明细

函数原型:

List<StockAdjustFactor> GetStockAdj(string symbol, string start_time, string end_time)

参数:

参数名 类型 说明
symbol string 如:SZSE.000001
start_time string 查询开始时间
end_time string 查询结束时间

返回值:

StockAdjustFactor 列表

GetDivident

查询分红送股明细

函数原型:

List<StockDivident> GetDivident(string symbol, string start_time, string end_time)

参数:

参数名 类型 说明
symbol string 如:SZSE.000001
start_time string 查询开始时间
end_time string 查询结束时间

返回值:

StockDivident 列表

GetVirtualContract

查询虚拟合约和真实合约对应关系

函数原型:

List<VirtualContract> GetVirtualContract(string vsymbol, string start_time, string end_time)

参数:

参数名 类型 说明
vsymbol string 如:CFFEX.IF, CFFEX.IF00
start_time string 查询开始时间
end_time string 查询结束时间

返回值:

VirtualContract列表

交易下单方法

OpenLong

异步开多仓接口,以参数指定的symbol、价和量下单。如果价格为0,为市价单,否则为限价单。策略类和交易服务类都提供该接口

函数原型:

Order OpenLong(string exchange, string sec_id, double price, double volume);

参数:

参数名 类型 说明
exchange string 交易所代码, 如上交所SHSE
sec_id string 证券代码,如浦发银行600000
price double 委托价,如果price=0,为市价单,否则为限价单
volume double 委托量

返回值:

返回委托下单生成的Order对象

示例:

市价买入1000股上交所浦发银行

OpenLong("SHSE", "600000", 0, 1000);

注意事项:

该接口为异步下单接口,需策略Run之后才能正常运行

OpenShort

异步开空仓接口,以参数指定的exchange, 证券代码sec_id, 价和量下单。如果价格为0,为市价单,否则为限价单。策略类和交易服务类都提供该接口。

函数原型:

Order OpenShort(string exchange, string sec_id, double price, double volume);

参数:

参数名 类型 说明
exchange string 交易所代码, 如金融期货交易所 CFFEX
sec_id string 证券代码,如股指期货合约1511 IF1511
price double 委托价,如果price=0,为市价单,否则为限价单
volume double 委托量

返回值:

返回委托下单生成的Order对象

示例:

在策略类的方法中以市价开1手股指期货合约IF1511的空单

OpenShort("CFFEX", "IF1511", 0, 1);

注意事项:

  1. 该接口为异步下单接口,需策略Run之后才能正常运行

  2. 平仓接口只对期货有效,现货不存在空仓单

CloseLong

异步平多仓接口,以参数指定的exchange, 证券代码sec_id, 价和量下单。如果价格为0,为市价单,否则为限价单。策略类和交易服务类都提供该接口。

函数原型:

Order CloseLong(string exchange, string sec_id, double price, double volume);

参数:

参数名 类型 说明
exchange string 交易所代码, 如上交所 SHSE
sec_id string 证券代码,如浦发银行 600000
price double 委托价,如果price=0,为市价单,否则为限价单
volume double 平仓量

返回值:

返回委托下单生成的Order对象

示例:

在策略类的方法中以市价卖出1000股上交所浦发银行

CloseLong("SHSE", "600000", 0, 1000);

注意事项:

该接口为异步下单接口,需策略Run之后才能正常运行

CloseShort

异步平空仓接口,以参数指定的exchange, 证券代码sec_id, 价和量下单。如果价格为0,为市价单,否则为限价单。策略类和交易服务类都提供该接口。

函数原型:

Order CloseShort(string exchange, string sec_id, double price, double volume);

参数:

参数名 类型 说明
exchange string 交易所代码, 如股指期货交易所CFFEX
sec_id string 证券代码,如股指期货合约IF1511
price double 委托价,如果price=0,为市价单,否则为限价单
volume double 平仓量

返回值:

返回委托下单生成的Order对象

示例:

在策略类的方法中以市价平1手股指期货合约IF1511的空单

CloseShort("CFFEX", "IF1511", 0, 1);

注意事项:

  1. 该接口为异步下单接口,需策略Run之后才能正常运行

  2. 平仓接口只对期货有效,现货不存在平仓

CloseLongYesterday

异步平昨多仓接口,以参数指定的exchange, 证券代码sec_id, 价和量下单。如果价格为0,为市价单,否则为限价单。策略类和交易服务类都提供该接口。此接口用于平上期所的昨仓

函数原型:

Order CloseLongYesterday(string exchange, string sec_id, double price, double volume);

参数:

参数名 类型 说明
exchange string 交易所代码, 如上交所 SHSE
sec_id string 证券代码,如浦发银行 600000
price double 委托价,如果price=0,为市价单,否则为限价单
volume double 平仓量

返回值:

返回委托下单生成的Order对象

示例:

以市价平1手白银合约ag1512的多单

CloseLongYesterday("SHFE", "ag1512", 0, 1);

注意事项:

该接口为异步下单接口,需策略Run之后才能正常运行

CloseShortYesterday

异步平空仓接口,以参数指定的exchange, 证券代码sec_id, 价和量下单。如果价格为0,为市价单,否则为限价单。策略类和交易服务类都提供该接口。此接口用于平上期所的昨仓

函数原型:

Order CloseShortYesterday(string exchange, string sec_id, double price, double volume);

参数:

参数名 类型 说明
exchange string 交易所代码, 如股指期货交易所CFFEX
sec_id string 证券代码,如股指期货合约IF1511
price double 委托价,如果price=0,为市价单,否则为限价单
volume double 平仓量

返回值:

返回委托下单生成的Order对象

示例:

以市价平1手白银合约ag1512的空单

CloseShortYesterday("SHFE", "ag1512", 0, 1);

注意事项:

  1. 该接口为异步下单接口,需策略Run之后才能正常运行

  2. 平仓接口只对期货有效,现货不存在平仓

PlaceOrder

异步下单原生函数,需要创建Order对象,填充对应字段,一般异步下单接口建议使用OpenLong、OpenShort、CloseLong、CloseShort4个快捷下单接口。如果价格price字段为0,为市价单,否则为限价单。策略类和交易服务类都提供该接口。

函数原型:

Order PlaceOrder(Order order);

参数:

参数名 类型 说明
order Order 委托Order对象

返回值:

直接返回参数Order对象

示例:

在策略类的方法中以市价开1手IF1511的多单

Order order = new Order();
order.exchange = "CFFEX";
order.sec_id = "IF1511";
order.side = (int)OrderSide.Bid;
order.position_effect = (int)PositionEffect.Open;
order.price = 0;
order.volume = 1;

Order orderRet = PlaceOrder( order );

注意事项:

该接口为异步下单接口,需策略Run之后才能正常运行

CancelOrder

异步撤单接口,根据参数clordid指定的客户端订单ID,撤销之前的下单委托。撤单是否成功取决于订单当前的状态。

函数原型:

int CancelOrder(string cl_ord_id);

参数:

参数名 类型 说明
cl_ord_id string 客户端委托ID,委托的唯一识别符

返回值:

返回值编码

示例:

int ret = CancelOrder( order_ret.cl_ord_id );

注意事项:

  1. 该接口为异步下单接口,需策略Run之后才能正常运行

  2. 执行的结果由OnExecRpt, OnOrderCancelled, OnOrderCancelRejected回调方法返回

OpenLongSync

同步开多仓接口,以参数指定的symbol, 价和量下单。如果价格为0,为市价单,否则为限价单。策略类和交易服务类都提供该接口。

函数原型:

Order OpenLongSync(string exchange, string sec_id, double price, double volume);

参数:

参数名 类型 说明
exchange string 交易所代码, 如上交所SHSE
sec_id string 证券代码,如浦发银行600000
price double 委托价,如果price=0,为市价单,否则为限价单
volume double 委托量

返回值:

返回委托下单生成的Order对象

示例:

通过策略对象调用该接口,以市价买入1000股上交所浦发银行

strategy.OpenLongSync("SHSE", "600000", 0, 1000);

OpenShortSync

同步开空仓接口,以参数指定的exchange, 证券代码sec_id, 价和量下单。如果价格为0,为市价单,否则为限价单。策略类和交易服务类都提供该接口。

函数原型:

Order OpenShortSync(string exchange, string sec_id, double price, double volume);

参数:

参数名 类型 说明
exchange string 交易所代码, 如金融期货交易所 CFFEX
sec_id string 证券代码,如股指期货1511合约 IF1511
price double 委托价,如果price=0,为市价单,否则为限价单
volume double 委托量

返回值:

返回委托下单生成的Order对象

示例:

通过策略对象调用该接口,以市价开1手股指期货IF1511合约的空单

strategy.OpenShortSync("CFFEX", "IF1511", 0, 1);

注意事项:

平仓接口只对期货有效,现货不存在空仓单

CloseLongSync

同步平多仓接口,以参数指定的exchange, 证券代码sec_id, 价和量下单。如果价格为0,为市价单,否则为限价单。策略类和交易服务类都提供该接口。

函数原型:

Order CloseLongSync(string exchange, string sec_id, double price, double volume);

参数:

参数名 类型 说明
exchange string 交易所代码, 如上交所SHSE
sec_id string 证券代码,如浦发银行 600000
price double 委托价,如果price=0,为市价单,否则为限价单
volume double 平仓量

返回值:

返回委托下单生成的Order对象

示例:

通过策略对象调用该接口,以市价卖出1000股上交所浦发银行

strategy.CloseLong("SHSE", "600000", 0, 1000);

CloseShortSync

异步平空仓接口,以参数指定的exchange, 证券代码sec_id, 价和量下单。如果价格为0,为市价单,否则为限价单。策略类和交易服务类都提供该接口。

函数原型:

Order CloseShortSync(string exchange, string sec_id, double price, double volume);

参数:

参数名 类型 说明
exchange string 交易所代码, 如股指期货交易所CFFEX
sec_id string 证券代码,如股指期货合约IF1511
price double 委托价,如果price=0,为市价单,否则为限价单
volume double 平仓量

返回值:

返回委托下单生成的Order对象

示例:

通过策略对象调用该接口,在策略类的方法中以市价平1手股指期货合约IF1511的空单

strategy.CloseShortSync("CFFEX", "IF1511", 0, 1);

注意事项:

平仓接口只对期货有效,现货不存在平仓

CloseLongYesterdaySync

同步平昨多仓接口,以参数指定的exchange, 证券代码sec_id, 价和量下单。如果价格为0,为市价单,否则为限价单。策略类和交易服务类都提供该接口。此接口用于平上期所的昨仓

函数原型:

Order CloseLongYesterdaySync(string exchange, string sec_id, double price, double volume);

参数:

参数名 类型 说明
exchange string 交易所代码, 如上交所SHSE
sec_id string 证券代码,如浦发银行 600000
price double 委托价,如果price=0,为市价单,否则为限价单
volume double 平仓量

返回值:

返回委托下单生成的Order对象

示例:

以市价平1手白银合约ag1512的多单

CloseLongYesterdaySync("SHFE", "ag1512", 0, 1);

CloseShortYesterdaySync

异步平昨空仓接口,以参数指定的exchange, 证券代码sec_id, 价和量下单。如果价格为0,为市价单,否则为限价单。策略类和交易服务类都提供该接口。此接口用于平上期所的昨仓

函数原型:

Order CloseShortYesterdaySync(string exchange, string sec_id, double price, double volume);

参数:

参数名 类型 说明
exchange string 交易所代码, 如股指期货交易所CFFEX
sec_id string 证券代码,如股指期货合约IF1511
price double 委托价,如果price=0,为市价单,否则为限价单
volume double 平仓量

返回值:

返回委托下单生成的Order对象

示例:

以市价平1手白银合约ag1512的空单

CloseShortYesterdaySync("SHFE", "ag1512", 0, 1);

注意事项:

平仓接口只对期货有效,现货不存在平仓

PlaceOrderSync

同步下单原生函数,需要创建Order对象,填充对应字段,一般同步下单接口建议使用OpenLongSync、OpenShortSync、CloseLongSync、CloseShortSync 4个快捷下单接口。如果价格price字段为0,为市价单,否则为限价单。策略类和交易服务类都提供该接口。

函数原型:

Order PlaceOrderSync(Order order);

参数:

参数名 类型 说明
order Order 委托Order对象

返回值:

直接返回参数order对象

示例:

通过策略对象调用该接口,以市价开1手IF1511的多单

Order order = new Order();
order.exchange = "CFFEX";
order.sec_id = "IF1511";
order.side = (int)OrderSide.Bid;
order.position_effect = (int)PositionEffect.Open;
order.price = 0;
order.volume = 1;

Order ordeRet = PlaceOrderSync( order );

CancelOrderSync

同步撤单接口,根据参数clordid指定的客户端订单ID,撤销之前的下单委托。撤单是否成功取决于订单当前的状态。策略类和交易服务类都提供该接口。

函数原型:

int CancelOrderSync(string cl_ord_id);

参数:

参数名 类型 说明
cl_ord_id string cl_ord_id 客户端委托ID,委托的唯一识别符

返回值:

返回值编码

示例:

int ret = CancelOrderSync( order_ret.cl_ord_id );

注意事项:

执行的结果由OnExecRpt, OnOrderCancelled,OnOrderCancelRejected回调方法返回

GetCash

查询当前策略的资金信息,策略类和交易服务类都提供该接口。

函数原型:

Cash GetCash();

参数:

返回值:

Cash对象,当前策略的资金信息

示例:

在策略类的方法中查询当前策略的资金信息

Cash cash = GetCash();

GetPosition

查询当前策略指定symbol(由交易所代码和证券ID组成)和买卖方向的持仓信息。策略类和交易服务类都提供该接口。

函数原型:

Position GetPosition(string exchange, string sec_id, byte side);

参数:

参数名 类型 说明
exchange string 交易所代码
sec_id string 证券代码
side byte 买卖方向

返回值:

Position对象,持仓信息

示例:

在策略类的方法中查询买入浦发银行的持仓信息

Position postion = GetPosition("SHSE", "600000", (int)OrderSide.Bid);

GetPositions

查询当前策略的全部持仓信息。策略类和交易服务类都提供该接口。

函数原型:

List<Position> GetPositions();

参数:

返回值:

当前策略全部持仓列表

示例:

在策略类的方法中查询当前策略全部持仓信息

var postion = GetPositions();

GetOrders

查询当前策略的委托信息。

函数原型:

List<Order> GetOrders(string start_time = null, string end_time = null)

参数:

参数名 类型 说明
start_time string 查询开始时间,如果为空或NULL, 则查询当天的委托
end_time string 查询结束时间,如果为空或NULL, 则查询当天的委托

返回值:

委托列表

示例:

查询策略的委托信息

var o = GetOrders("2016-03-16 00:00:00", "2016-03-18 00:00:00");

GetOrder

根据 cl_ord_id 查询当前策略的委托信息。

函数原型:

Order GetOrder(string cl_ord_id)

参数:

参数名 类型 说明
cl_ord_id string 委托单的cl_ord_id, 下单时获得

返回值:

委托列表

示例:

查询策略的委托信息

var o = GetOrder("kdiejfi-sdakfdsk-dsfkadfjlkdsj");

GetUnfinishedOrders

查询未结委托。

函数原型:

List<Order> GetUnfinishedOrders()

参数:

返回值:

委托列表

示例:

查询策略的委托信息

var o = GetUnfinishedOrders();

GetOrdersBySymbol

根据代码查询当前策略的委托信息。

函数原型:

List<Order> GetOrdersBySymbol(string exchange, string sec_id, string start_time = null, string end_time = null)

参数:

参数名 类型 说明
exchange string 市场代码
sec_id string 交易代码
start_time string 查询开始时间,如果为空或NULL, 则查询当天的委托
end_time string 查询结束时间,如果为空或NULL, 则查询当天的委托

返回值:

委托列表

示例:

查询策略的委托信息

var o = GetOrdersBySymbol("SHSE", "600000", "2016-03-16 00:00:00", "2016-03-18 00:00:00");

GetIndicator

查询当前策略的绩效信息。策略类和交易服务类都提供该接口。

函数原型:

Indicator GetIndicator();

参数:

返回值:

当前策略的绩效信息

示例:

在策略类的方法中查询当前策略的绩效信息

Indicator indicator = GetIndicator();

GetBrokerAccounts

查询当前策略关联的柜台账号信息

函数原型:

List<BrokerAccount> GetBrokerAccounts()

参数:

返回值:

当前策略关联的柜台账号信息

示例:

在策略类的方法中查询当前策略关联的柜台账号信息

var ba = GetBrokerAccounts();

GetBrokerCash

查询当前策略关联的柜台账号资金信息

函数原型:

List<Cash> GetBrokerCash()

参数:

返回值:

当前策略关联的柜台账号资金信息

示例:

在策略类的方法中查询当前策略关联的柜台账号资金信息

var cash = GetBrokerCash();

GetBrokerPositions

查询当前策略关联的柜台账号持仓信息

函数原型:

List<Position> GetBrokerPositions()

参数:

返回值:

当前策略关联的柜台账号持仓信息

示例:

在策略类的方法中查询当前策略关联的柜台账号持仓信息

var pos = GetBrokerPositions();

交易事件方法

OnExecRpt

响应委托执行回报事件,收到Execution数据后本函数被调用。

函数原型:

virtual void OnExecRpt(ExecRpt rpt);

参数:

参数名 类型 说明
rpt ExecRpt 执行回报数据

返回值:

OnOrderRejected

响应订单被拒绝事件,收到Order变更数据后本函数被调用。

函数原型:

virtual void OnOrderRejected(Order order);

参数:

参数名 类型 说明
order Order 最新的Order状态

返回值:

OnOrderNew

响应订单被柜台接收事件,收到Order变更数据后本函数被调用。

函数原型:

virtual void OnOrderNew(Order order);

参数:

参数名 类型 说明
order Order 最新的Order状态

返回值:

OnOrderFilled

响应订单完全成交事件,收到Order变更数据后本函数被调用。

函数原型:

virtual void OnOrderFilled(Order order);

参数:

参数名 类型 说明
order Order 最新的Order状态

返回值:

OnOrderPartiallyFilled

响应订单部分成交事件,收到Order变更数据后本函数被调用。

函数原型:

virtual void OnOrderPartiallyFilled(Order order);

参数:

参数名 类型 说明
order Order 最新的Order状态

返回值:

OnOrderStopExecuted

响应订单停止执行事件,比如,限价单到收市仍然未能成交。收到Order变更数据后本函数被调用。

函数原型:

virtual void OnOrderStopExecuted(Order order);

参数:

参数名 类型 说明
order Order 最新的Order状态

返回值:

OnOrderCancelled

响应订单撤单成功事件,收到Order变更数据后本函数被调用。

函数原型:

virtual void OnOrderCancelled(Order order);

参数:

参数名 类型 说明
order Order 最新的Order状态

返回值:

OnOrderCancelRejected

响应订单撤单请求被拒绝事件,收到Execution数据后本函数被调用。ord_rej_reason说明为什么撤单失败。

函数原型:

virtual void OnOrderCancelRejected(ExecRpt rpt);

参数:

参数名 类型 说明
rpt ExecRpt 执行回报

返回值:

OnBackTestFinish

回测完成事件,回测完成后本函数被调用。indicator 为最终回测绩效。

函数原型:

virtual void OnBackTestFinish(Indicator indicator)

参数:

参数名 类型 说明
indicator Indicator 回测绩效

返回值:

其他方法

OnMDLogin

策略登录事件,登录到行情服务器时被调用。

函数原型:

virtual void OnMDLogin();

参数:

返回值:

OnTDLogin

策略登录事件,登录交易服务器时被调用。

函数原型:

virtual void OnTDLogin();

参数:

返回值:

OnError

响应错误事件,策略内部出现错误时,比如行情或交易连接断开,数据错误,超时等,将触发本函数。

函数原型:

virtual void OnError(int error_code, string error_msg);

参数:

参数名 类型 说明
error_code string 错误码
error_msg string 错误信息

返回值:

GetStrError

根据错误码错误详细错误信息

函数原型:

string GetStrError(int errCode);

参数:

参数名 类型 说明
errcode string 错误码

返回值:

错误信息

GetSdkVersion

获取SDK版本号。

函数原型:

string GetSdkVersion();

参数:

返回值:

返回当前SDK的版本号信息

SetTimer

设置定时器

函数原型:

void SetTimer(int seconds);

参数:

参数名 类型 说明
seconds int 定时器时间间隔,单位为毫秒

返回值:

示例:


//设置定时器,每1秒触发一次
SetTimer(1);

UnsetTimer

取消定时器

函数原型:

void UnsetTimer(int seconds);

参数:

参数名 类型 说明
seconds int 定时器时间间隔,单位为毫秒

返回值:

示例:


//取消1秒定时器
UnsetTimer(1000);

OnTimer

定时器事件

函数原型:

public virtual void OnTimer(int interval)

参数:

返回值:

SetTimeoutVal

设置同步API的超时时间,系统默认为30秒

函数原型:

void SetTimeoutVal(int seconds);

参数:

参数名 类型 说明
seconds int 超时时间,单位为秒

返回值:

GetTimeoutVal

获取同步API的超时时间

函数原型:

int GetTimeoutVal();

参数:

返回值:

超时时间,单位为秒