快速开始

Matlab版本支持及系统依赖

  • 掘金SDK Toolbox支持Matlab R2013b 及以后版本。支持 32位和64位 Matlab版本。
  • windows系统需要安装.Net Framework 4.0及以上版本

下载SDK

点击这里下载最新的matlab SDK下载地址

安装配置

  1. 将gmsdk 解压到$MatlabRoot\toolbox中(其他路径也可以,但是为了方便管理,我们一般都安装在这里),$MatlabRoot是你的Matlab安装路径,你可以在Matlab中输入matlabroot命令获取

  2. 在Matlab中如下操作,选择 HOME—>Set Path...,点击Add Folder...

  3. 在浏览文件中,选择刚才的安装路径$MatlabRoot/toolbox/.../goldminer后,点击确定

  4. 此时返回到Set Path对话框,点击左下角的保存按钮(记住一定要保存),至此工具箱安装完毕,点击Close关闭对话框

我的第一个策略

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

解压SDK包,用matlab 打开 examples中的策略示例, 点击运行。

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

  1. 参考这里注册账号,登录终端。
  2. 参考这里创建策略基本架构。编程语言选择matlab.
  3. 然后用matlab打开生成的策略文件,编写自己的策略逻辑。

方式三

打开matlab, 新建文件helloWorld.m, 输入以下代码并保存:


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

function [  ] = helloWorld(  )

ret = gm.Init('username', 'password', MDMode.MD_MODE_LIVE, 'SZSE.000001.tick,SZSE.000001.bar.30', 'strategy_1', 'localhost:8001');

if ret ~= 0
    disp('初始化失败!');
    disp(ret);
    return;
end

gm.SetTickHandle(@OnTick);
gm.SetBarHandle(@OnBar);

gm.Run();

end

function [  ] = OnTick( tick )

x = sprintf('行情报价: %s,%s,%d', char(tick{1,'exchange'}), char(tick{1,'sec_id'}), tick{1,'last_price'});
disp(x);

end

function [  ] = OnBar( bar )

gm.OpenLong(char(bar{1,'exchange'}), char(bar{1,'sec_id'}), 0, 100);

end

打开终端,在控制台中输入命令 helloWorld, 可以看到控制台中打印行情的最新价,终端中显示策略的委托情况

Matlab API范例

策略接口范例

策略构建

如何构建策略

构建策略的三种方式:

  1. 掘金终端构建自己的策略,然后在构建的策略中改写OnTick, OnBar, OnOrder, OnExecRpt方法。终端构建策略方法看这里

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

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

策略运行

如何初始化策略

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

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

gm.Init('username', 'password', MDMode.MD_MODE_LIVE, 'SHSE.600000.tick,SHSE.600000.bar.60', 'strategy_id', 'localhost:8001');
如何运行策略

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

gm.Run();
如何停止策略

在console界面按Ctrl + C 中断策略运行。

策略模式

策略支持三种运行模式:

  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:15:00,策略初始资金为1,000,000,委托成交为全部成交,手续费率万分之3,滑点比率为0.246,数据使用前复权。回测的证券代码及数据周期由订阅行情决定。

gm.BacktestConfig('2014-10-25 09:30:00', '2015-10-29 15:15:00',     1000000, 1, 0.0003, 0.246, 1);
如何在非交易时间段调试策略

首先关联模拟交易通道,点击这里了解如何关联交易通道。

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

gm.Init('username', 'password', MDMode.MD_MODE_SIMULATED, 'SHSE.600000.tick,SHSE.600000.bar.60', 'strategy_id', 'localhost:8001');
如何设置策略仿真交易

首先需关联仿真交易通道,请点击链接了解如何关联交易通道。

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

gm.Init('username', 'password', MDMode.MD_MODE_LIVE, 'SHSE.600000.tick,SHSE.600000.bar.60', 'strategy_id', 'localhost:8001');
如何设置策略实盘交易
  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数据。请点击链接了解Tick数据和Bar数据类型的具体定义。

行情订阅/退订

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

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

方式一,在非策略中订阅行情

  1. 初始化行情对象

  2. 设置行情事件处理方法

  3. 运行

function [  ] = foo(  )

ret = gm.InitMD('username', 'password', MDMode.MD_MODE_LIVE, 'SHSE.600000.tick,SHSE.600000.bar.60');
gm.SetTickHandle(@OnTick);
gm.SetBarHandle(@OnBar);

gm.Run();

end

function [  ] = OnTick( tick )

x = sprintf('逐笔行情: %s %s.%s %d', char(tick{1,'strtime'}), char(tick{1,'exchange'}), char(tick{1,'sec_id'}), tick{1,'last_price'});
disp(x);

end

function [  ] = OnBar( bar )

x = sprintf('分时行情: %s %s.%s %d %d', char(bar{1,'strtime'}), char(bar{1,'exchange'}), char(bar{1,'sec_id'}), bar{1, 'bar_type'}, bar{1,'close'});
disp(x);

end

方式二,在策略中订阅行情

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

  2. 设置行情事件处理方法

  3. 运行策略


function [  ] = foo( )

gm.Init('username', 'password', MDMode.MD_MODE_LIVE, 'SHSE.600000.tick,SHSE.600000.bar.60', 'strategy_id', 'localhost:8001');

gm.SetTickHandle(@OnTick);
gm.SetBarHandle(@OnBar);
gm.Run();

end

function [  ] = OnTick( tick )

x = sprintf('逐笔行情: %s %s.%s %d', char(tick{1,'strtime'}), char(tick{1,'exchange'}), char(tick{1,'sec_id'}), tick{1,'last_price'});
disp(x);

end

function [  ] = OnBar( bar )

x = sprintf('分时行情: %s %s.%s %d %d', char(bar{1,'strtime'}), char(bar{1,'exchange'}), char(bar{1,'sec_id'}), bar{1, 'bar_type'}, bar{1,'close'});
disp(x);

end

如何订阅指定证券代码的DailyBar

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

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

gm.Init('username', 'password', MDMode.MD_MODE_PLAYBACK, 'SHSE.600000.bar.daily,SZSE.000001.bar.daily', 'strategy_id', 'localhost:8001');
如何退订指定证券代码的行情

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

gm.Unsubscribe('SHSE.600000.tick,SZSE.000001.bar.60');

历史数据提取

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

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

ticks = gm.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即可。

bars = gm.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。

dailyBars = gm.GetDailyBars('SHSE.600000,SZSE.000001', 
                            '2014-10-29', '2015-10-29');

如何提取最近N笔Tick数据

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

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

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

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

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

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

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

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

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

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

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

dailyBars = gm.GetLastDailyBars('SHSE.600000,SZSE.000001');

行情事件

如何处理Tick事件和Bar事件

Tick、Bar事件在接收实时行情时触发,在Tick和Bar事件的回调方法中可接收订阅的Tick行情和Bar行情。在策略初始化时设置事件处理函数

gm.SetTickHandle(@OnTick);
gm.SetBarHandle(@OnBar);

事件处理函数定义为


%tick处理函数
function [  ] = OnTick( tick )

end

%bar处理函数
function [  ] = OnBar( bar )

end

交易接口范例

交易相关数据类型

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

委托

如何开多仓

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

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

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

o = gm.OpenLong('SHSE', '600000', 0, 1000);
o = gm.OpenLong('CFFEX', 'IF1512', 0,  1);

2.调用同步接口OpenLongSync,无需策略执行Run方法。

o = gm.OpenLongSync('SHSE', '600000', 0, 1000);
o = gm.OpenLongSync('CFFEX', 'IF1512', 0,  1);
如何平多仓

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

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

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

o = gm.CloseLong('SHSE', '600000', 0, 1000);
o = gm.CloseLong('CFFEX', 'IF1512', 0,  1);

2.调用同步接口CloseLongSync,无需策略执行Run方法。

o = gm.CloseLongSync('SHSE', '600000', 0, 1000);
o = gm.CloseLongSync('CFFEX', 'IF1512', 0,  1);
如何开空仓

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

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

o = gm.OpenShort('CFFEX', 'IF1512', 0,  1);

2.调用同步接口OpenShortSync,无需策略执行Run方法。

o = gm.OpenShortSync('CFFEX', 'IF1512', 0,  1);
如何平空仓

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

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

o = gm.CloseShort('CFFEX', 'IF1512', 0,  1);

2.调用同步接口CloseShortSync,无需策略执行Run方法。

o = gm.CloseShortSync('CFFEX', 'IF1512', 0,  1);
如何自定义下单

示例:限价16.00元买入100股平安银行

定义委托单对象

o.exchange = 'SZSE';
o.sec_id = '000001';
o.position_effect = PositionEffect.Open;
o.side = OrderSide.Bid;
o.price = 16.00;
o.volume = 100;

o.order_type = OrderType.LMT;

o = gm.PlaceOrder(o);

说明:

o.side: 设置买卖方向

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

o.price:价格为0则表示市价单,否则为限价单

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

o = gm.PlaceOrder( o );

2.调用同步接口PlaceOrderSync,无需策略执行Run方法。

o = gm.PlaceOrderSync( o );
如何撤回未成交订单

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

gm.CancelOrder( cl_ord_id );

2.调用同步接口CancelOrderSync,无需策略执行Run方法。

gm.CancelOrderSync( cl_ord_id );      

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

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

调用接口GetOrder, cl_ord_id 在委托时获得

order = gm.GetOrder( cl_ord_id );

回报

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

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

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

资金

如何查询资金

Api提供查询当前策略的资金信息

cash = gm.GetCash();

持仓

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

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

postion = gm.GetPosition('SHSE', '600000', OrderSide.Bid);
如何获取当前策略的全部持仓信息
posList = gm.GetPositions();

绩效

如何获取当前策略的绩效指标
indicator = gm.GetIndicator();

交易事件

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

如何处理委托事件

在策略初始化时设置委托事件处理函数,委托的任何变化都会触发本事件。

gm.SetOrderHandle(@OnOrder);

委托事件处理函数OnExecRpt定义如下

function [  ] = OnOrder( order )

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

在策略初始化时设置执行回报事件处理函数,订单的任何执行回报都会触发本事件。

gm.SetExecRptHandle(@OnExecRpt);

执行回报事件处理函数OnExecRpt定义如下

function [  ] = OnExecRpt( rpt )

end

错误与版本等接口范例

如何处理策略登录事件

策略在初始化时将触发登录事件,可以在设置登录事件的处理方法,以便策略初始化时添加额外的操作。一旦触发此事件,说明登录是成功,登录失败则触发错误事件。

gm.SetLoginHandle(@OnLogin);

OnLogin定义如下

function [  ] = OnLogin( mask )

%服务器登录信息 mask=1 行情服务;mask=2 交易服务

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

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

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

策略在运行过程中的任务错误,将触发错误事件。设置错误事件处理函数:

gm.SetErrorHandle(@OnError);

OnError定义如下:

function [  ] = OnError( code, msg )

% code为错误码,msg为错误描述

end
如何获取错误码对应的错误信息
gm.StrError(code)

Matlab API接口

常量定义

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

掘金SDK中的常量定义。常量用于定义各种状态和标识类型。

MDMode(行情模式)

作为Init函数的输入参数, matlab引用方式: MDMode.常量名

            MD_MODE_NULL       = 1,  % 不接收行情流, 仅查询
            MD_MODE_LIVE       = 2,  % 接收实时行情
            MD_MODE_SIMULATED  = 3,  % 接收模拟行情
            MD_MODE_PLAYBACK   = 4   % 接收回放行情

OrderStatus(订单状态)

matlab引用方式: OrderStatus.常量名

        New = 1;
        PartiallyFilled = 2;
        Filled = 3;
        DoneForDay = 4;
        Canceled = 5;
        PendingCancel = 6;
        Stopped = 7;
        Rejected = 8;
        Suspended = 9;
        PendingNew = 10;
        Calculated = 11;
        Expired = 12;
        AcceptedForBidding = 13;
        PendingReplace = 14;

OrderRejectReason(订单拒绝原因)

matlab引用方式: OrderRejectReason.常量名

        UnknownReason = 1;
        RiskRuleCheckFailed = 2;
        NoEnoughCash = 3;
        NoEnoughPosition = 4;
        IllegalStrategyID = 5;
        IllegalSymbol = 6;
        IllegalVolume = 7;
        IllegalPrice = 8;
        NoMatchedTradingChannel = 9;
        AccountForbidTrading = 10;
        TradingChannelNotConnected = 11;
        StrategyForbidTrading = 12;
        NotInTradingSession = 13;

CancelOrderRejectReason(撤单拒绝原因)

matlab引用方式: CancelOrderRejectReason.常量名

        OrderFinalized = 101;
        UnknownOrder = 102;
        BrokerOption = 103;
        AlreadyInPendingCancel = 104;

OrderSide(订单方向)

matlab引用方式: OrderSide.常量名

    Bid = 1  % 多方向
    Ask = 2  % 空方向

OrderType(订单类型)

matlab引用方式: 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(订单执行回报类型)

matlab引用方式: ExecType.常量名

    New = 1                % 交易所已接受订单
    DoneForDay = 4
    Canceled = 5           % 已撤
    PendingCancel = 6      % 待撤
    Stopped = 7            % 已停
    Rejected = 8           % 已拒绝
    Suspended = 9          % 暂停
    PendingNew = 10        % 待接受
    Calculated = 11        % 已折算
    Expired = 12           % 过期
    Restated = 13          % 重置
    PendingReplace = 14    % 待修改
    Trade = 15             % 交易
    TradeCorrect = 16      % 交易更正
    TradeCancel = 17       % 交易取消
    OrderStatus = 18       % 更新订单状态
    CancelRejected = 19    % 撤单被拒绝

PositionEffect(开平仓类型)

matlab引用方式: PositionEffect.常量名

    Open = 1             % 开仓
    Close = 2            % 平仓
    CloseToday  =3       % 平今仓
    CloseYesterday = 4   % 平昨仓

交易数据类型

交易数据类型主要包括委托,执行回报,资金,持仓等数据类型, matlab中均表现为table类型

Order(委托订单)

table中每一行为一条委托信息,列信息如下:


        strategy_id                  % 策略ID
        account_id                   % 交易账号

        cl_ord_id                    % 客户端订单ID
        order_id                     % 柜台订单ID
        ex_ord_id                    % 交易所订单ID

        exchange                     % 交易所代码
        sec_id                       % 证券ID

        position_effect              % 开平标志
        side                         % 买卖方向
        order_type                   % 订单类型
        order_src                    % 订单来源
        status                       % 订单状
        ord_rej_reason               % 订单拒绝原因
        ord_rej_reason_detail        % 订单拒绝原因描述

        price                        % 委托价
        stop_price                   % 止损价
        volume                       % 委托量
        filled_volume                % 已成交量
        filled_vwap                  % 已成交均价
        filled_amount                % 已成交额

        sending_time                 % 委托下单时间
        transact_time                % 最新一次成交时间

Execution(委托执行回报)

table中每一行为一条委托信息,列信息如下:

        strategy_id                 % 策略ID

        cl_ord_id                   % 客户端订单ID
        order_id                    % 交易所订单ID
        exec_id                     % 订单执行回报ID

        exchange                    % 交易所代码
        sec_id                      % 证券ID

        position_effect             % 开平标志
        side                        % 买卖方向
        ord_rej_reason              % 订单拒绝原因
        ord_rej_reason_detail       % 订单拒绝原因描述
        exec_type                   % 订单执行回报类型

        price                       % 成交价
        volume                      % 成交量
        amount                      % 成交额

        transact_time               % 交易时间

Cash(资金)

table中每一行为一条资金信息,列信息如下:

        strategy_id          % 策略ID
        account_id           % 交易账号
        currency             % 币种


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

        cum_inout            % 累计出入金
        cum_trade            % 累计交易额
        cum_pnl              % 累计收益
        cum_commission       % 累计手续费

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

        transact_time        % 交易时间

Position(持仓)

table中每一行为一条持仓信息,列信息如下:

        strategy_id          % 策略ID
        account_id           % 交易账号
        exchange             % 交易所代码
        sec_id               % 证券ID
        side                 % 买卖方向
        volume               % 持仓量
        volume_today         % 今仓量
        amount               % 持仓额
        vwap                 % 持仓均价

        price                % 当前行情价格
        fpnl                 % 持仓浮动盈亏
        cost                 % 持仓成本
        order_frozen         % 挂单冻结仓位
        order_frozen_today   % 挂单冻结今仓仓位
        available            % 可平仓位
        available_today      % 可平今仓位
        available_yesterday  % 可平昨仓位
        last_price           % 上一笔成交价
        last_volume          % 上一笔成交量
        init_time            % 初始建仓时间
        transact_time        % 上一仓位变更时间

Indicator(绩效指标)

列信息如下:

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

BrokerAccount(柜台账户)

列信息如下:


        account_id                       %柜台账号ID
        username                         %柜台账号
        permissible                      %允许交易
        status                           %账号当前状态

行情数据类型

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

Tick(逐笔行情数据)

table中每一行为一笔Tick行情信息,列信息如下

        exchange                 % 交易所代码
        sec_id                   % 证券ID
        utc_time                 % utc时间,精确到毫秒
        strtime                  % 交易时间
        last_price               % 最新价
        open                     % 开盘价
        high                     % 最高价
        low                      % 最低价

        bid_p1                   % 买价一
        bid_p2                   % 买价二
        bid_p3                   % 买价三
        bid_p4                   % 买价四
        bid_p5                   % 买价五
        bid_v1                   % 买量一
        bid_v2                   % 买量二
        bid_v3                   % 买量三
        bid_v4                   % 买量四
        bid_v5                   % 买量五
        ask_p1                   % 卖价一
        ask_p2                   % 卖价二
        ask_p3                   % 卖价三
        ask_p4                   % 卖价四
        ask_p5                   % 卖价五
        ask_v1                   % 卖量一
        ask_v2                   % 卖量二
        ask_v3                   % 卖量三
        ask_v4                   % 卖量四
        ask_v5                   % 卖量五

        cum_volume               % 成交总量
        cum_amount               % 成交总金额/最新成交额,累计值
        cum_position             % 合约持仓量(期),累计值
        last_amount              % 瞬时成交额
        last_volume              % 瞬时成交量(中金所提供)
        upper_limit              % 涨停价
        lower_limit              % 跌停价
        settle_price             % 今日结算价
        trade_type               % 1:'双开', 2: '双平', 3: '多开', 4:'空开', 5: '空平', 6:'多平', 7:'多换', 8:'空换' 
        pre_close                % 昨收价

Bar(各种周期的Bar数据)

table中每一行为一笔Bar行情信息,列信息如下

        exchange       % 交易所代码
        sec_id         % 证券ID

        bar_type       % bar类型,以秒为单位,比如1分钟bar, bar_type=60
        strtime        % bar开始时间
        utc_time       % bar开始时间
        strendtime     % bar结束时间
        utc_endtime    % bar结束时间
        open           % 开盘价
        high           % 最高价
        low            % 最低价
        close          % 收盘价
        volume         % 成交量
        amount         % 成交额
        pre_close      % 前收盘价
        position       % 仓位
        flag           % 停复牌标记
        adj_factor     % 复权因子

DailyBar(日频数据)

在Bar数据的基础上,还包含结算价,涨跌停价等静态数据)

table中每一行为一笔DailyBar行情信息,列信息如下


        exchange         % 交易所代码
        sec_id           % 证券ID

        bar_type         % bar类型
        strtime          % bar时间
        utc_time         % 行情时间戳

        open             % 开盘价
        high             % 最高价
        low              % 最低价
        close            % 收盘价
        volume           % 成交量
        amount           % 成交额

        position         % 仓位
        settle_price     % 结算价
        upper_limit      % 涨停价
        lower_limit      % 跌停价

        pre_close        % 前收盘价
        flag             % 停复牌标记
        adj_factor       % 复权因子

Instrument(交易代码信息)

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

Constituent(成分股信息)

        symbol                %交易代码
        weight                %权重

FinancialIndex(财务指标)

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

ShareIndex(股本指标)

        symbol                         %股票代码
        pub_date                       %公告日期
        total_share                    %总股本
        flow_a_share                   %流通A股
        nonflow_a_share                %限售流通A股

MarketIndex(市场指标)

        symbol              %股票代码
        pub_date            %公告日期
        pe_ratio            %市盈率
        pb_ratio            %市净率
        ps_ratio            %市销率
        market_value        %市值
        market_value_flow   %流通市值

TradeDate(交易日历)

        utc_time            %utc时间戳
        strtime             %时间字符串

StockAdjustFactor(复权因子)

        symbol              %股票代码
        trade_date          %交易日
        adj_factor          %复权因子

StockDivident(分红送股事件明细)

        symbol             %股票代码
        div_date           %除权除息日
        cash_div           %每股派现
        share_div_ratio    %每股送股比例
        share_trans_ratio  %每股转增股比例
        allotment_ratio    %每股配股比例
        allotment_price    %配股价

VirtualContract(虚拟合约明细)

         vsymbol       %主力合约或连接合约代码
         symbol        %真实symbol
         trade_date    %交易日

策略初始化方法

Init

初始化策略,登录服务器,设置账号密码以及需要订阅的symbol列表,设置策略ID等, 如只使用行情数据,不需要交易功能,可以用InitMD函数代替

函数原型:

function [ ret ] = Init( username, password, mode, subscribe_symbols, strategy_id, td_addr)

参数:

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

返回值:

成功则返回0,其他:error code,查看SDK返回值编码

示例:

创建策略对象,并初始化,使用仿真行情,订阅CFFEX.IF1406tick60秒分时数据。

ret = Init('username','password','CFFEX.IF1406.tick, CFFEX.IF1406.bar.60',MDMode.MD_MODE_SIMULATED,'strategy_id')

InitMD

初始化数据API,登录服务器,设置账号密码以及需要订阅的symbol列表。如果只使用行情数据,可以调用此函数,以简化程序。如须使用完整策略功能,请调用Init来初始化程序。

函数原型:

function [ ret ] = InitMD(username, password, mode, subscribe_symbols, start_time, end_time)

参数:

参数名 类型 说明
username string 掘金终端账号
password string 掘金终端密码
mode int 枚举类型,行情模式
subscribe_symbols string 行情订阅的代码列表 参数格式
start_time string 回放行情的开始时间
end_time string 回放行情的结束时间

BacktestConfig

设置回测参数,仅在回测模式下有效,其它模式下被忽略

函数原型:

function [ ] = BacktestConfig( start_time, end_time, initial_cash, transaction_ratio, commission_ratio, slippage_ratio, price_type, bench_symbol, 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

返回值:

成功则返回0,其他:error code,查看SDK返回值编码

示例:

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

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

策略启停方法

Run

运行策略

函数原型:

function [ ] = Run(  )

参数:

返回值:

成功则返回0,其他:error code,查看SDK返回值编码

示例:

gm.Run( );

行情订阅方法

Subscribe

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

函数原型:

function [ ret ] = Subscribe( symbol_list )

参数:

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

返回值:

成功则返回0,其他:error code,查看SDK返回值编码

示例:

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

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

注意事项

当在回测模式下,需要显式关闭本地缓存api才能正常工作, 如何关闭本地缓存,请参见 BacktestConfig

Unsubscribe

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

函数原型:

function [ ret ] = Unsubscribe( symbol_list )

参数:

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

返回值:

成功则返回0,其他:error code,查看SDK返回值编码

示例:

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

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

注意事项

当在回测模式下,需要显式关闭本地缓存api才能正常工作, 如何关闭本地缓存,请参见 BacktestConfig

Resubscribe

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

函数原型:

gm.Resubscribe(symbol_list)

参数:

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

返回值:

返回值编码

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

行情事件方法

SetTickHandle

设置Tick行情回调方法,收到Tick数据后触发。

函数原型:

function [  ] = SetTickHandle(handle)

参数:

参数名 类型 说明
handle funtion handle

返回值:

回调函数定义为

function [  ] = OnTick(tick)
    %在这里处理tick行情
end

示例:

SetTickHandle(@OnTick)

SetBarHandle

设置Bar行情回调方法,收到Bar数据后触发。

函数原型:

function [  ] = SetBarHandle(handle)

参数:

参数名 类型 说明
handle funtion handle

返回值:

回调函数定义为

function [  ] = OnBar(Bar)
    %在这里处理Bar行情
end

示例:

SetBarHandle(@OnBar)

数据提取方法

GetTicks

提取指定时间段的历史Tick数据,支持单个代码提取或多个代码组合提取。

函数原型:

function [ ticks ] = GetTicks( symbol_list, begin_time, end_time )

参数:

参数名 类型 说明
symbol_list string 证券代码参数格式,同时支持多只代码
begin_time string 开始时间, 如2015-10-30 09:30:00
end_time string 结束时间, 如2015-10-30 15:00:00

返回值:

返回Tick数据table

示例:

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

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

GetBars

提取指定时间段的历史Bar数据,支持单个代码提取或多个代码组合提取。

函数原型:

function [ bars ] = GetBars( symbol_list, bar_type, begin_time, end_time )

参数:

参数名 类型 说明
symbol_list string 证券代码参数格式,同时支持多只代码
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

返回值:

返回Bar数据table

示例:

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

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

GetDailyBars

提取指定时间段的历史日周期Bar数据,支持单个代码提取。DailyBar比Bar多了部分静态数据,如结算价,涨跌停等。

函数原型:

function [ DailyBar ] = GetDailyBars( symbol_list, begin_time, end_time )

参数:

参数名 类型 说明
symbol_list string 证券代码参数格式,同时支持多只代码
begin_time string 开始日期, 如2015-10-19
end_time string 结束日期, 如2015-10-30

返回值:

返回DailyBar数据table

示例:

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

dailybars = gm.GetDailyBars('SHSE.600000,SZSE.000001', 
            '2015-10-30 09:30:00', 
            '2015-10-30 15:00:00');

GetLastTicks

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

函数原型:

function [ ticks ] = GetLastTicks( symbol_list )

参数:

参数名 类型 说明
symbol_list string 证券代码参数格式,同时支持多只代码

返回值:

返回Tick数据table

示例:

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

ticks = gm.GetLastTicks('SHSE.600000,SZSE.000001');

GetLastBars

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

函数原型:

function [ bars ] = GetLastBars( symbol_list, bar_type )

参数:

参数名 类型 说明
symbol_list string 证券代码参数格式,同时支持多只代码
bar_type int bar周期,以秒为单位,比如60即1分钟bar

返回值:

返回Bar数据table

示例:

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


bars = gm.GetLastBars('SHSE.600000,SZSE.000001', 60);

GetLastDailyBars

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

函数原型:

function [ DailyBar ] = GetLastDailyBars( symbol_list )

参数:

参数名 类型 说明
symbol_list string 证券代码参数格式,同时支持多只代码

返回值:

返回DailyBar数据table

示例:

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

dailybars = gm.GetLastDailyBars('SHSE.600000,SZSE.000001');

GetLastNTicks

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

函数原型:

function [ ticks ] = GetLastNTicks( symbol , n, end_time)

参数:

参数名 类型 说明
symbol string 证券代码参数格式,如SHSE.600000
n int 提取的数据条数
end_time string 截止时间,如 2015-11-30 00:00:00

返回值:

返回Tick数据table

示例:

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

ticks = gm.GetLastNTicks('SHSE.600000', 10);

GetLastNBars

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

函数原型:

function [ bars ] = GetLastNBars( symbol, bar_type, n, end_time)

参数:

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

返回值:

返回Bar数据table

示例:

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

bars = gm.GetLastNBars('SHSE.600000', 60, 10);

GetLastNDailyBars

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

函数原型:

function [ DailyBar ] = GetLastNDailyBars( symbol_list, n, end_time )

参数:

参数名 类型 说明
symbol_list string 证券代码参数格式,如SHSE.600000
n int 提取的数据条数
end_time string 截止时间,如 2015-11-30 00:00:00

返回值:

返回DailyBar数据table

示例:

提取上交所浦发银行的最近10笔DailyBar数据

dailybars = gm.GetLastNDailyBars('SHSE.600000', 10);

GetInstruments

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

函数原型:

function [Instrument] = GetInstruments(exchange, sec_type, is_active)

参数:

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

返回值:

返回[Instrument]数据列表

示例:

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

instruments = gm.GetInstruments('SHSE', 1, 1);

GetInstrumentsByName

根据品种提取交易代码

函数原型:

function [Instrument] = GetInstrumentsByName(name)

参数:

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

返回值:

返回[Instrument]数据列表

示例:

提取沪银合约代码

instruments = gm.GetInstrumentsByName('ag');

GetConstituents

查询指数的成分股构成

函数原型:

function [Constituent] = GetConstituents(index_symbol)

参数:

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

返回值:

Constituent 列表

示例:

提取沪深300指数的成分股

constituents = gm.GetConstituents('SHSE.000300');

GetFinancialIndex

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

函数原型:

function [FinancialIndex] = GetFinancialIndex(symbol, begin_time, end_time)

参数:

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

返回值:

返回[FinancialIndex]数据列表

示例:

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

financialIndex = gm.GetFinancialIndex('SHSE.600000', '2013-01-01 00:00:00', '2016-01-01 00:00:00');

GetLastFinancialIndex

获取股票最新的财务指标

函数原型:

function [FinancialIndex] = GetLastFinancialIndex(symbol_list)

参数:

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

返回值:

返回[FinancialIndex]数据列表

示例:

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

financialIndex = gm.GetLastFinancialIndex('SHSE.600000');

GetLastNFinancialIndex

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

函数原型:

function [FinancialIndex] = GetLastNFinancialIndex(symbol, n)

参数:

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

返回值:

返回[FinancialIndex]数据列表

示例:

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

financialIndex = gm.GetLastNFinancialIndex('SHSE.600000', 10);

GetShareIndex

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

函数原型:

function [ShareIndex] = GetShareIndex(symbol, begin_time, end_time)

参数:

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

返回值:

返回[ShareIndex]数据列表

示例:

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

idx = gm.GetShareIndex('SHSE.600000', '2013-01-01 00:00:00', '2016-01-01 00:00:00');

GetLastShareIndex

获取股票最新的股本指标

函数原型:

function [ShareIndex] = GetLastShareIndex(symbol_list)

参数:

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

返回值:

返回[ShareIndex]数据列表

示例:

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

idx = gm.GetLastShareIndex('SHSE.600000');

GetLastNShareIndex

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

函数原型:

function [ShareIndex] = GetLastNShareIndex(symbol, n)

参数:

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

返回值:

返回[ShareIndex]数据列表

示例:

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

idx = gm.GetLastNShareIndex('SHSE.600000', 10);

GetMarketIndex

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

函数原型:

function [MarketIndex] = GetMarketIndex(symbol, begin_time, end_time)

参数:

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

返回值:

返回[MarketIndex]数据列表

示例:

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

idx = gm.GetMarketIndex('SHSE.600000', '2013-01-01 00:00:00', '2016-01-01 00:00:00');

GetLastMarketIndex

获取股票最新的市场指标

函数原型:

function [MarketIndex] = GetLastMarketIndex(symbol_list)

参数:

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

返回值:

返回[MarketIndex]数据列表

示例:

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

idx = gm.GetLastMarketIndex('SHSE.600000');

GetLastNMarketIndex

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

函数原型:

function [MarketIndex] = GetLastNMarketIndex(symbol, n)

参数:

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

返回值:

返回[MarketIndex]数据列表

示例:

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

idx = gm.GetLastNMarketIndex('SHSE.600000', 10);

GetCalendar

查询市场交易日历

函数原型:

function [ trade_date ] = GetCalendar( exchange, start_time, end_time )

参数:

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

返回值:

交易日历列表

示例:

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


trade_dates = gm.GetCalendar('SHSE', '2016-01-01', '2016-12-31');

GetStockAdj

查询复权因子

函数原型:

function [ adj ] = GetStockAdj( symbol, start_time, end_time )

参数:

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

返回值:

StockAdjustFactor 列表

GetDivident

查询分红送股明细

函数原型:

function [ div ] = GetDivident( symbol, start_time, end_time )

参数:

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

返回值:

StockDivident 列表

GetVirtualContract

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

函数原型:

function [ vcontract ] = GetVirtualContract( vsymbol, start_time, end_time )

参数:

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

返回值:

VirtualContract列表

交易下单方法

OpenLong

异步开多仓接口,以参数指定的symbol、价和量下单。如果价格为0,为市价单,否则为限价单。

函数原型:

function [ order ] = OpenLong( exchange, sec_id, price, volume )

参数:

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

返回值:

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

示例:

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

o = gm.OpenLong('SHSE', '600000', 0, 1000);

注意事项:

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

OpenShort

异步开空仓接口,以参数指定的exchange, 证券代码sec_id, 价和量下单。如果价格为0,为市价单,否则为限价单。

函数原型:

function [ order ] = OpenShort( exchange, sec_id, price, volume )

参数:

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

返回值:

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

示例:

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

o = gm.OpenShort('CFFEX', 'IF1511', 0, 1);

注意事项:

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

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

CloseLong

异步平多仓接口,以参数指定的exchange, 证券代码sec_id, 价和量下单。如果价格为0,为市价单,否则为限价单。

函数原型:

function [ order ] = CloseLong( exchange, sec_id, price, volume )

参数:

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

返回值:

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

示例:

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

gm.CloseLong('SHSE', '600000', 0, 1000);

注意事项:

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

CloseShort

异步平空仓接口,以参数指定的exchange, 证券代码sec_id, 价和量下单。如果价格为0,为市价单,否则为限价单。

函数原型:

function [ order ] = CloseShort( exchange, sec_id, price, volume )

参数:

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

返回值:

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

示例:

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

o = gm.CloseShort('CFFEX', 'F1511', 0, 1);

注意事项:

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

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

CloseLongYesterday

异步平多仓接口,以参数指定的exchange, 证券代码sec_id, 价和量下单。如果价格为0,为市价单,否则为限价单。此接口用于平上期所的昨仓

函数原型:

function [ order ] = CloseLongYesterday( exchange, sec_id, price, volume )

参数:

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

返回值:

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

示例:

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

gm.CloseLongYesterday('SHFE', 'ag1512', 0, 1);

注意事项:

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

CloseShortYesterday

异步平空仓接口,以参数指定的exchange, 证券代码sec_id, 价和量下单。如果价格为0,为市价单,否则为限价单。此接口用于平上期所的昨仓

函数原型:

function [ order ] = CloseShortYesterday( exchange, sec_id, price, volume )

参数:

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

返回值:

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

示例:

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

gm.CloseShortYesterday('SHFE', 'ag1512', 0, 1);

注意事项:

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

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

PlaceOrder

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

函数原型:

function [ order ] = PlaceOrder( order_param )

参数:

参数名 类型 说明
order_param 结构 委托下单参数结构

返回值:

直接返回order table

order_param 必须包含以下字段:

order_param.exchange         交易所代码
order_param.sec_id           证券代码
order_param.position_effect  开/平仓标志, 参见常量定义PositionEffect
order_param.side             交易方向, 参见常量定义OrderSide
order_param.price            委托价
order_param.volume           委托量
order_param.order_type       委托类型, 参见常量定义OrderType

例如,以限价16.00开仓买入SZSE.000001 100股, 则


o.exchange = 'SZSE';
o.sec_id = '000001';
o.position_effect = PositionEffect.Open;
o.side = OrderSide.Bid;
o.price = 16.00;
o.volume = 100;

o.order_type = OrderType.LMT;

gm.PlaceOrder(o);

注意事项:

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

CancelOrder

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

函数原型:

function [ ret ] = CancelOrder( cl_ord_id )

参数:

参数名 类型 说明
cl_ord_id string 委托单号

返回值:

成功则返回0,其他:error code,查看SDK返回值编码

注意事项:

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

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

OpenLongSync

同步开多仓接口,以参数指定的symbol, 价和量下单。如果价格为0,为市价单,否则为限价单。

函数原型:

function [ order ] =  OpenLongSync(exchange, sec_id, price, volume);

参数:

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

返回值:

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

示例:

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

o = gm.OpenLongSync('SHSE', '600000', 0, 1000);

OpenShortSync

同步开空仓接口,以参数指定的exchange, 证券代码sec_id, 价和量下单。如果价格为0,为市价单,否则为限价单。

函数原型:

function [ order ] = OpenShortSync(exchange, sec_id, price, volume);

参数:

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

返回值:

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

示例:

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

o = gm.OpenShortSync('CFFEX', 'IF1511', 0, 1);

注意事项:

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

CloseLongSync

同步平多仓接口,以参数指定的exchange, 证券代码sec_id, 价和量下单。如果价格为0,为市价单,否则为限价单。

函数原型:

function [ order ] = CloseLongSync(exchange, sec_id, price, volume);

参数:

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

返回值:

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

示例:

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

gm.CloseLongSync('SHSE', '600000', 0, 1000);

CloseShortSync

异步平空仓接口,以参数指定的exchange, 证券代码sec_id, 价和量下单。如果价格为0,为市价单,否则为限价单。

函数原型:

function [ order ] = CloseShortSync(exchange, sec_id, price, volume);

参数:

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

返回值:

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

示例:

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

o = gm.CloseShortSync('CFFEX', 'IF1511', 0, 1);

注意事项:

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

CloseLongYesterdaySync

同步平多仓接口,以参数指定的exchange, 证券代码sec_id, 价和量下单。如果价格为0,为市价单,否则为限价单。此接口用于平上期所的昨仓

函数原型:

function [ order ] = CloseLongYesterdaySync(exchange, sec_id, price, volume);

参数:

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

返回值:

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

示例:

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

gm.CloseLongYesterdaySync('SHFE', 'ag1512', 0, 1);

CloseShortYesterdaySync

异步平空仓接口,以参数指定的exchange, 证券代码sec_id, 价和量下单。如果价格为0,为市价单,否则为限价单。此接口用于平上期所的昨仓

函数原型:

function [ order ] = CloseShortYesterdaySync(exchange, sec_id, price, volume);

参数:

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

返回值:

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

示例:

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

gm.CloseShortYesterdaySync('SHFE', 'ag1512', 0, 1);

注意事项:

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

PlaceOrderSync

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

函数原型:

function [ order ] = PlaceOrderSync(order_param);

参数:

参数名 类型 说明
order_param 结构 委托Order参数

返回值:

直接返回参数order对象

order_param 必须包含以下字段:

order_param.exchange         交易所代码
order_param.sec_id           证券代码
order_param.position_effect  开/平仓标志, 参见常量定义PositionEffect
order_param.side             交易方向, 参见常量定义OrderSide
order_param.price            委托价
order_param.volume           委托量
order_param.order_type       委托类型, 参见常量定义OrderType

例如,以限价16.00开仓买入SZSE.000001 100股, 则


o.exchange = 'SZSE';
o.sec_id = '000001';
o.position_effect = PositionEffect.Open;
o.side = OrderSide.Bid;
o.price = 16.00;
o.volume = 100;

o.order_type = OrderType.LMT;

gm.PlaceOrderSync(o);

CancelOrderSync

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

函数原型:

function [ ret ] = CancelOrderSync(cl_ord_id);

参数:

参数名 类型 说明
cl_ord_id string 委托ID

返回值:

成功则返回0,其他:error code,查看SDK返回值编码

示例:

gm.CancelOrderSync( cl_ord_id );

注意事项:

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

GetCash

查询当前策略的资金信息

函数原型:

function [ cash ] = GetCash( )

参数:

返回值:

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

示例:

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

cash = gm.GetCash();

GetPosition

查询当前策略指定symbol(由交易所代码和证券ID组成)和买卖方向的持仓信息。

函数原型:

function [ position ] = GetPosition( exchange, sec_id, side )

参数:

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

返回值:

Position对象,持仓信息

示例:

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

postion = gm.GetPosition('SHSE', '600000', OrderSide.Bid);

GetOrders

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

函数原型:

function [ orders ] = GetOrders( start_time, end_time )

参数:

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

返回值:

委托列表

示例:

o = gm.GetOrders('2016-03-16 00:00:00', '2016-03-18 00:00:00');

GetOrder

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

函数原型:

function [ order ] = GetOrder( cl_ord_id )

参数:

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

返回值:

委托列表

示例:

查询策略的委托信息

o = GetOrder('kdiejfi-sdakfdsk-dsfkadfjlkdsj');

GetUnfinishedOrdes

查询当前策略的全部未结的委托信息。

函数原型:

function [ positions ] = GetUnfinishedOrdes();

参数:

返回值:

当前策略的全部未结的委托列表

示例:

o = gm.GetUnfinishedOrdes();

GetOrdersBySymbol

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

函数原型:

function [ orders ] = GetOrdersBySymbol( exchange, sec_id, start_time, end_time )

参数:

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

返回值:

委托列表

示例:

查询策略的委托信息

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

GetIndicator

查询当前策略的绩效信息。

函数原型:

function [ indicator ] = GetIndicator()

参数:

返回值:

当前策略的绩效信息

示例:

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

indicator = gm.GetIndicator()

GetBrokerAccounts

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

函数原型:

function [BrokerAccount] = GetBrokerAccounts()

参数:

返回值:

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

示例:

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

ba = GetBrokerAccounts();

GetBrokerCash

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

函数原型:

function [Cash] = GetBrokerCash()

参数:

返回值:

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

示例:

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

cash = GetBrokerCash();

GetBrokerPositions

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

函数原型:

function [Position] = GetBrokerPositions()

参数:

返回值:

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

示例:

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

pos = GetBrokerPositions();

交易事件方法

SetExecRptHandle

设置执行回报回调方法,收到执行回报后触发。

函数原型:

function [  ] = SetExecRptHandle(handle)

参数:

参数名 类型 说明
handle funtion handle

返回值:

回调函数定义为

function [  ] = OnExecRpt(rpt)
    %在这里处理执行回报
end

示例:

SetExecRptHandle(@OnExecRpt)

SetOrderHandle

设置委托回调方法,当委托状态发生变化时触发。

函数原型:

function [  ] = SetOrderHandle(handle)

参数:

参数名 类型 说明
handle funtion handle

返回值:

回调函数定义为

function [  ] = OnOrder(order)
    %在这里处理委托变化
end

示例:

SetOrderHandle(@OnOrder)

SetBacktestFinishHandle

设置回测完成回调方法,当回测完成时触发。

函数原型:

function [ ] = SetBacktestFinishHandle( handle )

参数:

参数名 类型 说明
handle funtion handle

返回值:

回调函数定义为

function [  ] = OnBacktestFinish(Indicator)
    %Indicator 为最终的回测结果
end

示例:

SetBacktestFinishHandle(@OnBacktestFinish)

其他方法

SetLoginHandle

设置登录回调方法,当登录成功后触发。

函数原型:

function [ ] = SetLoginHandle( handle )

参数:

参数名 类型 说明
handle funtion handle

回调函数定义为

function [  ] = OnLogin(mask)
    %mask = 1, 登录行情服务成功,mask = 2, 登录交易服务成功, 如果登录失败,则不触发此回调,而触发error 事件
end

示例:

SetLoginHandle(@OnLogin)

SetErrorHandle

设置错误回调方法, 响应错误事件,策略内部出现错误时,比如行情或交易连接断开,数据错误,超时等,将触该事件。

函数原型:

function [  ] = SetErrorHandle(handle)

参数:

参数:

参数名 类型 说明
handle funtion handle

回调函数定义为

function [  ] = OnError( code, msg )
    %在此处理错误事件,code = 错误吗,msg = 错误描述信息
end

示例:

SetErrorHandle(@OnError)

StrError

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

函数原型:

function [ str ] =  StrError(errCode);

参数:

参数名 类型 说明
errcode int 错误码 查看返回值编码

返回值:

错误信息

Version

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

函数原型:

function [ ver ] =  Version();

参数:

返回值:

返回当前版本号信息

SetTimer

设置定时器

函数原型:

function [ ] = SetTimer( interval )

参数:

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

返回值:

示例:


%回调函数
function [ ] = OnTimer( interval )
{
   %todo ...
}

%设置定时器回调函数
gm.SetTimerHandle(@OnTimer);

%设置定时器,每1秒触发一次
gm.SetTimer(1000);

UnsetTimer

设置定时器

函数原型:

function [ ] = UnsetTimer( interval )

参数:

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

返回值:

示例:


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

SetTimerHandle

设置定时器回调

函数原型:

function [ ] = SetTimerHandle( handle )

参数:

参数名 类型 说明
handle funtion handle 回调funtion

返回值:

示例:


%回调函数

function [ ] = OnTimer( interval )
{
   %todo ...
}

%设置定时器回调函数
gm.SetTimerHandle(@OnTimer);

%设置定时器,每1秒触发一次

gm.SetTimer(1000);

SetTimeoutVal

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

函数原型:

function [ ] = SetTimeoutVal( seconds )

参数:

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

返回值:

GetTimeoutVal

获取同步API的超时时间

函数原型:

function [ seconds] = GetTimeoutVal( )

参数:

返回值:

超时时间,单位为秒