精华内容
下载资源
问答
  • C#动态创建SQL数据库时提示错误:在多语句事务内不允许使用 DROP DATABASE 语句 如果在SQL的查询分析器中出现该错误,可尝试以下解决方法: 打开“查询分析器”,然后不要打开任何数据库,这样,就不会进入数据库...
     
    

    C#动态创建SQL数据库时提示错误:在多语句事务内不允许使用 DROP DATABASE 语句

    如果在SQL的查询分析器中出现该错误,可尝试以下解决方法:

    打开“查询分析器”,然后不要打开任何数据库,这样,就不会进入数据库的处理范围,也就不会提示上面的错误了。进入某个数据库,等价于应用了语句“use ***”。

    在.NET中动态创建时出现该错误,首先检查执行创建数据库语句时是否使用了事务,以下SQL语句不允许出现在事务中

    ALTER DATABASE      修改数据库
    BACKUP LOG              备份日志
    CREATE DATABASE   创建数据库
    DISK INIT                     创建数据库或事务日志设备
    DROP DATABASE        删除数据库
    DUMP TRANSACTION 转储事务日志
    LOAD DATABASE       装载数据库备份复本
    LOAD TRANSACTION 装载事务日志备份复本
    RECONFIGURE           更新使用 sp_configure 系统存储过程更改的配置选项的当前配置(sp_configure 结果集中的 config_value 列)值。
    RESTORE DATABASE 还原使用BACKUP命令所作的数据库备份
    RESTORE LOG            还原使用BACKUP命令所作的日志备份
    UPDATE STATISTICS   在指定的表或索引视图中,对一个或多个统计组(集合)有关键值分发的信息进行更新
    展开全文
  • 淘宝网一直致力于向广大会员提供一个健康可持续发展的交易平台。为适应当前服务市场的消费需求变化,规范商家经营行为,拟对“网店/网络服务/软件”下部分二级类目作出如下调整: 1. “网店服务”,“多媒体/摄影”...

     淘宝网发出最新通知,“网店/网络服务/软件”类目调整通知

    各位亲爱的淘宝网会员:

    淘宝网一直致力于向广大会员提供一个健康可持续发展的交易平台。为适应当前服务市场的消费需求变化,规范商家经营行为,拟对“网店/网络服务/软件”下部分二级类目作出如下调整:

    1.     “网店服务”,“多媒体/摄影”及“程序/软件开发”二级类目自2017年7月27日起停止新发布商品,2017年8月10日起停止商品编辑操作,相关经营活动转移至卖家服务市场(fuwu.taobao.com);

    2.    为了保证卖家正常经营,建议相关卖家自行下架“网店/网络服务/软件”——“网店服务”,“多媒体/摄影”及“程序/软件开发”三个二级类目内的存量商品,若卖家需要发布相关商品,请尽早入驻卖家服务市场。


    为满足服务市场用户关于软件定制开发的需求,提升淘宝软件定制开发服务,现服务市场推出:软件定制服务类目。从即日起开始招募软件开发服务商啦!首期预测招募期:7月11日-10月11日。欢迎有经验,优秀的软件开发服务商加入我们,与平台一起更好的为有软件开发需求的亲们提供好服务、好产品、好系统!

    入驻软件开发服务商,需要审核资料,并缴5万保证金,我无疑问是不让我们这些中小企业或个人团队淘宝上交易。


    经过长时间找平台,综合评估七七网是一个非常不错的站长交易服务平台,可以支持商家免费开店入驻,我也是才入驻的,推荐给大家  www.admin77.com/e/10002

      百度地址:https://www.baidu.com/link?url=jD7voOp5XuQfp8qQ4R7Ekxf1FCDxCG43H7zDpZxbZ1z1pqZZOdwuaAr2TRpGsoct&wd=&eqid=a1de6c7d00030ba000000006597b2235

    展开全文
  • 在API的设计、业务模式、开放性上都比国内其它系统走得更远,大部分期货公司都支持CTP,目前已经是国内期货程序化交易接入的事实标准。同时上期技术在证券API上也做了一定的工作,证券接口也已经发布。 金仕达: ...

    第一节国内期货柜台系统介绍

    综合交易平台CTP

    上海期货信息技术有限公司(上海期货交易所旗下子公司)开发的期货经纪业务管理系统。在API的设计、业务模式、开放性上都比国内其它系统走得更远,大部分期货公司都支持CTP,目前已经是国内期货程序化交易接入的事实标准。同时上期技术在证券API上也做了一定的工作,证券接口也已经发布。

    金仕达:

    市场占有率极高的柜台系统,最初仅有B2B网关,用户接入时必须同期货公司商谈,并在期货公司机房内网架设服务器。在2012年时发布了B2CKSFT_API,与CTP接口相似,仅在一些开发细节上有所区别,直接减少了用户的迁移成本。目前大部分公司同时支持金仕达和CTP,不过存在的问题是出入金不便。CTP没有提供次席的快速出入金的方案,而金仕达方也不提供,最终在主席系统的选项上,期货公司必须得做出选择,目前有部分期货公司正酝酿将主席切换成CTP

    易胜:

    由易胜信息技术有限公司(郑州商品交易所期下子公司)开发,提供了行情与交易接口,目前仅有部分期货公司部署了对应的程序化交易模块。易胜API最大的优点是提供了部分历史数据,这应当时是为了满足他们的程序化交易客户端所提供的功能,缺点是要开发时得申请授权认证码,这限制了不少开发者。

    飞创信息X-Speed

    大连飞创信息技术有限公司(大连商品交易所旗下子公司)也提供了交易与行情的API,但目前成熟度不够,使用者少。

    恒生:

    专业的同时提供了证券、期货经纪业务解决方案的提供商,普及面也很广。基金公司等大型机构都有风险控制需求,而恒生在这方面做得不错,但目前没有推出面向普通客户的交易接口。

    第二节开发前准备

    CTP_API官方下载地址为:http://202.109.110.121/api/

    实际上此地址少有人维护,如想要最新版,还是得找CTP_API的官方QQ群,一般群共享有最新版的API及相关的文档,强烈建议提前将文档细读几遍。最关键的两个文档是《综合交易平台API技术开发指南》、《综合交易平台API特别说明》。

     

    提供的CTP_API目前有三个版本:Linux x64Windows x86iOS。微软官方已经提到过,在64位进程中不能加载32位的dll,同理一个32位进程也不能加载一个64dll。所以在Windows平台下采用一般的dll调用方式也就被限制在了主程序为32位程序。其实,分别使用32位和64位两个进程通讯的方式能解决这个问题。

     

    在这,我们使用dll调用的方式。先确保自己安装的是32位的Matlab,如果你是在64Windows上直接安装,默认是安装的64位系统,请进入到Matlab的安装目录,找到bin/win32下的setup.exe进行安装。

    第三节各种对接方式

    1. MEX版接口

    运行效率最高,但开发起来工作量大,要做大量的数据结构转换。目前已经有公司或个人推出了MEX版。

    1. 进程间通讯

    这种方式比较灵活,对接64位平台或者跨操作系统、跨主机都是没有问题的,但在运行效率上略为逊色。已经有网友提供了通用版本接口,即可以Matlab调用,也可以R语言调用。

    1. COM版接口

    COM接口在Windows平台下还是有一定的使用范围的,MatlabExcel等都可以对接COM接口,目前网上可以下载到上海汇朋提供的盈佳COM接口。网址:http://www.winnerfutures.com.cn/

    1. Java版接口

    目前已经有少量网友开源了Java对接CTP的接口,但Matlab对接Java接口的还没有推出。同时转换的技术也有多种,如JNABridJ

    网址:      https://github.com/QuantBox/CTP/tree/master/Java-CTPJNA

    http://download.csdn.net/detail/vcfriend/5054163BridJ

    1. NET版接口

    NET版对接CTP的接口是百花齐放,版本比较多,网上目前比较知名的版本有

    海风版:最早开源出来的C#版接口之一,P/Invoke封装

    马不停蹄版:C++/CLI版封装 http://ishare.iask.sina.com.cn/f/34438582.html

    LumenXH版:https://github.com/LumenXH/P/Invoke封装

    QuantBox版:https://github.com/QuantBox/CTP,也是使用了P/Invoke封装,但对API做了自己的细节处理。

    第四节 C#版对接原理

    使用.NET版的好处就是省事,这么多款.NET版,选一款能对接Matlab,使用简单,自己能理解的代码库就成。

    如何判断是否能对接Matlab呢?一般异步通知有两种方式:一种是偏底层的函数回调,一种是偏高层的事件通知。

    1. 函数回调。C#版接口不用修改,直接用P/Invoke的方式,将函数句柄直接通过赋值的方式传给最底层的C接口。可惜,实际测试行不通。表面上运行正常,能输出行情数据,但过不了十几秒Matlab就闪退。推断原因是回调函数被Matlab清理回收了,C层记录的函数据句柄在运行十几秒后就无效了。
    2. 事件通知。此方式也有必须注意的地方。Matlab支持addlistener,但直接模仿上面的回调函数的参数接口进行调用会报错,最下面的说明了为何会报错。http://www.mathworks.cn/cn/help/matlab/matlab_external/working-with-net-events-in-matlab.html

    即事件所使用的委托的签名必需要用指定的格式:两个参数,第一个参数是object sender,而第二个参数必需继承于.NETEventArgs类。

    检查这些C#版的接口,只要是指定格式的委托签名就可以了。

    第五节 QuantBox版项目介绍

    在这我只介绍QuantBox版,因为这个版本是本人开发并开源的,对它的了解最清楚。

    首先介绍下这个项目,此项目最初是为了对接国外一款非常有名的软件——OpenQuant的程序化交易平台而做的前期工作,同时为对接其它语言做了预留。

    由于OpenQuant插件开发是用的C#,为了满足项目要求,首先得有C#版接口,考虑到还要为其它语言做准备,一定得有C版接口。当时网络上没有C版接口开源,附属在一些C#版接口中的C版在对接其它语言时又不够方便,故C层与C#层另行开发。

    有部分网友希望我们能提供Matlab版,因实际我们生产环境中并不使用它进行交易,没有编写MEX版的动力。不过通过研究,使用了更简化的方式满足了大家的要求,也就是上一节提到的C#版与Matlab版对接原理。

    Java版也是在网友的期盼中诞生的,当初是考虑到C#版对接Matlab的方案只能在Windows下用,推出Java版对接Matlab的方案就能在Linux中用了。可惜Java版的测试能用,但Java对接Matlab的方案目前没解决。

    第六节 C版的特点

    C版本的特点是没有直接将C++版本的接口进行转换,而是做了一定的处理。加上这些处理的理由很充分,就是简化逻辑,让其它语言对接CTP时能更简单。

    首先我们来看CTP接口开发要注意哪些关键地方,在其它网友公布的直接接口转换的封装,都要自行处理这些繁琐细节,但本人提供的C版都进了屏蔽。

    1. 请求ID,同一会话中严格单调递增
    2. 报单引用,同一会话中严格单调递增
    3. 发送请求流控,如果有在途的查询,不允许发新的查询。1秒钟最多允许发送1个查询。
    4. 部分期货公司要求先验证客户端授权然后才能登录
    5. 登录成功后必须要结算单确认后才能下单
    6. 行情与交易的流文件同目录可能引起数据紊乱
    7. 接收到的响应需立即处理,不然会阻塞后面的数据接收

     

    主要添加的功能如下:

    1. 发送队列:报单、撤单直接发送,而其它的请求都先添加到发送队列,由发送线程去发送,发送失败后自动延时重发。解决了CTP有流控的问题。
    2. 接收队列:收到响应后,直接存到队列中,立即返回,然后其它线程从队列中取。解决用户代码用时过久产生未知错误的问题。
    3. 维护请求ID与报单引用,自动加锁,不再纠结于细节,不会出现重复报单。
    4. 自动进行连接、客户端授权、登录认证、结算单确认等工作。保证用户登录成功后就能直接下单。
    5. 断线重连后,行情与交易能重新登录认证,其中行情接口还能自动订阅断线前已经订阅的行情。
    6. 对行情与交易流文件自动分目录,解决数据紊乱问题

    第七节监控软件的使用

    在介绍Matlab对接.NET前,一定得先介绍监控软件,否则在下一节要介绍的开发上完全是在摸黑。

    能实现监控的原理是:

    1. CTP_API支持同一账号多次登录,目前期货公司大多设置的是同时最大6个会话登录
    2. 委托回报与成交回报等流会发向所有会话

    所以在程序化交易时,另用一款比较好的手动交易软件来监控是不错的方式。可以查看委托状态、委托价、成交回报等信息,方便查找错误。目前推荐使用快期。

    同时,我们对接CTP平台需要服务器的配置信息,在快期目录下有brokers.xml,其中有三样东西最重要:经纪商编号(BrokerID),行情服务器地址(MarketData)、交易服务器地址(Trading)

    这个地方要注意,不管brokers.xml中地址如何写,地址开头没有“tcp://”,实际使用CTP_API时就得补上,如果以“udp://”开头,改成“tcp://”也能正常使用,在下一节的代码中有模拟盘的地址示例。

    第八节 Matlab对接期货接口

    https://github.com/QuantBox/CTP/tree/master/Matlab-DotNet

    请保证相关文件都是最新的。

    thostmduserapi.dllthosttraderapi.dll来自于上期技术

    QuantBox.C2CTP.dll来自于C版接口

    QuantBox.CSharp2CTP.dll来自于C#版接口

     

    test.m是程序入口,做了以下工作

    1. 导入C#
    2. 创建行情对象、交易对象的实例
    3. 注册事件
    4. 登录
    5. 退出(已经注释,没有执行,需手工输入退出)

     

    %% 导入C#库,请按自己目录进行调整
    cd 'D:\wukan\Documents\GitHub\CTP\Matlab-DotNet\test\'
    NET.addAssembly(fullfile(cd,'QuantBox.CSharp2CTP.dll'));
    import QuantBox.CSharp2CTP.*;
     
    %% 行情
    global md;
    md =  MdApiWrapper();
    addlistener(md,'OnConnect',@OnMdConnect);
    addlistener(md,'OnDisconnect',@OnMdDisconnect);
    addlistener(md,'OnRtnDepthMarketData',@OnRtnDepthMarketData);
    md.Connect('D:\',... %行情流文件路径
        'tcp://27.115.78.35:41213',... %行情服务器地址
        '1009',... %经纪公司代码
        '123456',... %用户代码
        '888888'); %密码
     
    %% 交易
    global td;
    td = TraderApiWrapper();
    addlistener(td,'OnConnect',@OnTdConnect);
    addlistener(td,'OnDisconnect',@OnTdDisconnect);
    addlistener(td,'OnRtnOrder',@OnRtnOrder);
     
    td.Connect('D:\',... %交易流文件路径
        'tcp://27.115.78.35:41205',... %交易服务器地址
        '1009',... %经纪公司代码
        '00000015',... %用户代码
        '123456',... %密码
        THOST_TE_RESUME_TYPE.THOST_TERT_QUICK,... %流重传方式
        '',... %用户端产品信息
        ''); %认证码
     
    %% 退出
    % md.Disconnect() %行情退出
    % td.Disconnect() %交易退出

     

    对以上的部分参数做下说明,特别是交易比行情要多了三个参数。

    第二个参数是服务器的地址,目前,行情服务器输入错误的用户名和密码也能登录。

    第三个参数,经纪公司代码是用来区分各家公司时使用,当初的CTP设计时考虑了一台服务器上同时多家期货公司同时工作。

     

    交易的第六个参数是流重传方式。

    流重传方式有三种:

    public enum THOST_TE_RESUME_TYPE
    {
        THOST_TERT_RESTART = 0, //从本交易日重传
        THOST_TERT_RESUME, //从上次收到的续传
        THOST_TERT_QUICK //只传送登录后的内容
    };

    其实这些重传方式的进度维护需要生成一些临时文件,记录已经传到了第几条数据,具体如何实现的CTP接口已经向我们屏蔽,用户只要需要知道如何使用。第一个参数就是流文件路径,在此不用担心行情与交易的流相互影响。

    第七个参数用户端产品信息,用户可以用来标识软件产品

    第八个参数认证码,只有在期货公司要求并分配认证码后才能填写,需要与用户端产品信息配合使用。

     

    addlistenerMatlab提供的注册事件的方法,第一个参数是需要注册事件的对象,第二个参数是事件名,第三个参数是处理函数。

     

    对于TraderApiWrapper到底支持哪些事件呢?

    https://github.com/QuantBox/CTP/blob/master/CSharp-CTP/src/QuantBox.CSharp2CTP/TraderApiWrapper.cs

    源码中有详细的事件列表。其实CTP还提供了很多功能,由于目前只是实现自己的简单程序化工具并用不到那些功能,所以并没有提供对应的事件支持。用户可以参与开原项目,一同完善。

    public event OnConnectHander OnConnect;
    public event OnDisconnectHander OnDisconnect;
    public event OnErrRtnOrderActionHander OnErrRtnOrderAction;
    public event OnErrRtnOrderInsertHander OnErrRtnOrderInsert;
    public event OnRspErrorHander OnRspError;
    public event OnRspOrderActionHander OnRspOrderAction;
    public event OnRspOrderInsertHander OnRspOrderInsert;
    public event OnRspQryDepthMarketDataHander OnRspQryDepthMarketData;
    public event OnRspQryInstrumentHander OnRspQryInstrument;
    public event OnRspQryInstrumentCommissionRateHander OnRspQryInstrumentCommissionRate;
    public event OnRspQryInstrumentMarginRateHander OnRspQryInstrumentMarginRate;
    public event OnRspQryInvestorPositionHander OnRspQryInvestorPosition;
    public event OnRspQryInvestorPositionDetailHander OnRspQryInvestorPositionDetail;
    public event OnRspQryOrderHander OnRspQryOrder;
    public event OnRspQryTradeHander OnRspQryTrade;
    public event OnRspQryTradingAccountHander OnRspQryTradingAccount;
    public event OnRtnInstrumentStatusHander OnRtnInstrumentStatus;
    public event OnRtnOrderHander OnRtnOrder;
    public event OnRtnTradeHander OnRtnTrade;
     

    OnConnectOnDisconnect是行情与交易都支持的事件。但在实际使用时还是有区别的。

    交易有可能要进行客户端认证,所以可能出现与客户端认证有关的状态E_authingE_authed

    只有结算单确认后才能下单,所以交易的最后状态不是E_logined,而是E_confirmed

    //自己定义的
    public enum ConnectionStatus
    {
        E_uninit,             //未初始化
        E_inited,             //已经初始化
        E_unconnected,        //连接已经断开
        E_connecting, //连接中
        E_connected, //连接成功
        E_authing,            //授权中
        E_authed,             //授权成功
        E_logining,           //登录中
        E_logined,            //登录成功
        E_confirming, //确认中
        E_confirmed, //已经确认
        E_conn_max            //最大值
    };
     

    OnMdConnect.m文件

    function OnMdConnect(sender,arg)
    % 交易连接回报
     
    % 行情状态到E_logined就表示登录成功
    if arg.result == QuantBox.CSharp2CTP.ConnectionStatus.E_logined
        global md;
             % 订阅行情,支持","和";"分隔
        md.Subscribe('IF1305;IF1306,IF1309;IF1312');
    end
     
    end

     

    OnTdConnect.m文件

    function OnTdConnect(sender,arg)
    % 交易连接回报
     
    % 交易状态到E_confirmed就表示登录并确认成功
    if arg.result == QuantBox.CSharp2CTP.ConnectionStatus.E_confirmed
        global td;
        % 下单
        td.SendOrder('IF1309',... %合约
            QuantBox.CSharp2CTP.TThostFtdcDirectionType.Buy,... %买卖
            '0',... %开平标记
            '1',... %投机套保标记
            1,... %数量
            2250,... %价格
            QuantBox.CSharp2CTP.TThostFtdcOrderPriceTypeType.LimitPrice,... %价格类型
            QuantBox.CSharp2CTP.TThostFtdcTimeConditionType.GFD,... %时间类型
            QuantBox.CSharp2CTP.TThostFtdcContingentConditionType.Immediately,... %条件类型
            0);
    end
     
    end

    下单接口比较复杂,我们这在登录后立即发送一单

    状态为已确认后,开始可以下单。

     

    第一个参数是合约名,区分大小写,如果不清楚合约名可以查看快期软件中的“合约列表”。

    第二个参数是买卖标记,只有两种选择,买/卖。

    第三个参数是组合开平标记,第四个参数是组合投机套保标记。

    组合开平标记和组合投机套保标记的写法有些特别,CTP支持组合单,组合单至少由两腿组成,如何区分每腿的开平与投保呢?那就是用的组合开平与组合投保了,第一个字符就标记的第一腿,第二个字符标示的第二腿,以此类推。

     

    /
    ///TFtdcOffsetFlagType是一个开平标志类型
    /
    ///开仓
    #define THOST_FTDC_OF_Open '0'
    ///平仓
    #define THOST_FTDC_OF_Close '1'
    ///强平
    #define THOST_FTDC_OF_ForceClose '2'
    ///平今
    #define THOST_FTDC_OF_CloseToday '3'
    ///平昨
    #define THOST_FTDC_OF_CloseYesterday '4'
    ///强减
    #define THOST_FTDC_OF_ForceOff '5'
    ///本地强平
    #define THOST_FTDC_OF_LocalForceClose '6'
     
    typedef char TThostFtdcOffsetFlagType;

     

    /
    ///TFtdcHedgeFlagType是一个投机套保标志类型
    /
    ///投机
    #define THOST_FTDC_HF_Speculation '1'
    ///套利
    #define THOST_FTDC_HF_Arbitrage '2'
    ///套保
    #define THOST_FTDC_HF_Hedge '3'
     
    typedef char TThostFtdcHedgeFlagType;

     

    目前普通客户开通的账户只能下投机,所以第四个参数直接使用"11"最省事。

    而第三个参数使用起来比较麻烦,因为上交所专门区分了平今与平昨,使用错了会提示平仓数不足。

    第六个参数是价格,价格必需是最小价格变动单位的整数倍,不能超过涨跌停价

    第七个参数是价格类型,接口预留了大量的类型,但交易所只部分支持,目前仅使用两种价格类型即可,限价与市价,上海不支持市价单,中金股指两个远月不支持市价。

     

    /
    ///TFtdcOrderPriceTypeType是一个报单价格条件类型
    /
    ///任意价
    #define THOST_FTDC_OPT_AnyPrice '1'
    ///限价
    #define THOST_FTDC_OPT_LimitPrice '2'
    ///最优价
    #define THOST_FTDC_OPT_BestPrice '3'
    ///最新价
    #define THOST_FTDC_OPT_LastPrice '4'
    ///最新价浮动上浮1个ticks
    #define THOST_FTDC_OPT_LastPricePlusOneTicks '5'
    ///最新价浮动上浮2个ticks
    #define THOST_FTDC_OPT_LastPricePlusTwoTicks '6'
    ///最新价浮动上浮3个ticks
    #define THOST_FTDC_OPT_LastPricePlusThreeTicks '7'
    ///卖一价
    #define THOST_FTDC_OPT_AskPrice1 '8'
    ///卖一价浮动上浮1个ticks
    #define THOST_FTDC_OPT_AskPrice1PlusOneTicks '9'
    ///卖一价浮动上浮2个ticks
    #define THOST_FTDC_OPT_AskPrice1PlusTwoTicks 'A'
    ///卖一价浮动上浮3个ticks
    #define THOST_FTDC_OPT_AskPrice1PlusThreeTicks 'B'
    ///买一价
    #define THOST_FTDC_OPT_BidPrice1 'C'
    ///买一价浮动上浮1个ticks
    #define THOST_FTDC_OPT_BidPrice1PlusOneTicks 'D'
    ///买一价浮动上浮2个ticks
    #define THOST_FTDC_OPT_BidPrice1PlusTwoTicks 'E'
    ///买一价浮动上浮3个ticks
    #define THOST_FTDC_OPT_BidPrice1PlusThreeTicks 'F'
     
    typedef char TThostFtdcOrderPriceTypeType;

     

    第八个参数是时间类型,根据国内交易所的情况,目前支持GFDIOC

    第九、十参数是条件单使用,首先大商所支持止盈止损单,郑商所支持止损单。

    /
    ///TFtdcContingentConditionType是一个触发条件类型
    /
    ///立即
    #define THOST_FTDC_CC_Immediately '1'
    ///止损
    #define THOST_FTDC_CC_Touch '2'
    ///止赢
    #define THOST_FTDC_CC_TouchProfit '3'
    ///预埋单
    #define THOST_FTDC_CC_ParkedOrder '4'
    ///最新价大于条件价
    #define THOST_FTDC_CC_LastPriceGreaterThanStopPrice '5'
    ///最新价大于等于条件价
    #define THOST_FTDC_CC_LastPriceGreaterEqualStopPrice '6'
    ///最新价小于条件价
    #define THOST_FTDC_CC_LastPriceLesserThanStopPrice '7'
    ///最新价小于等于条件价
    #define THOST_FTDC_CC_LastPriceLesserEqualStopPrice '8'
    ///卖一价大于条件价
    #define THOST_FTDC_CC_AskPriceGreaterThanStopPrice '9'
    ///卖一价大于等于条件价
    #define THOST_FTDC_CC_AskPriceGreaterEqualStopPrice 'A'
    ///卖一价小于条件价
    #define THOST_FTDC_CC_AskPriceLesserThanStopPrice 'B'
    ///卖一价小于等于条件价
    #define THOST_FTDC_CC_AskPriceLesserEqualStopPrice 'C'
    ///买一价大于条件价
    #define THOST_FTDC_CC_BidPriceGreaterThanStopPrice 'D'
    ///买一价大于等于条件价
    #define THOST_FTDC_CC_BidPriceGreaterEqualStopPrice 'E'
    ///买一价小于条件价
    #define THOST_FTDC_CC_BidPriceLesserThanStopPrice 'F'
    ///买一价小于等于条件价
    #define THOST_FTDC_CC_BidPriceLesserEqualStopPrice 'H'
     
    typedef char TThostFtdcContingentConditionType;

     

    使用Immediately时即普通报单,使用LastPriceGreaterThanStopPrice一类的将按第十个参数的止损价进行触发。

     

    SendOrder是有返回值的,就是当前会话的第几个委托。

     

    此报单指令还是很复杂,实盘中使用肯定过于繁琐,

    建议用户在Matlab层再封一次,可行的封装方式有:

    1. Buy/Sell,仅记录净持仓
    2. OpenLong/CloseLongOpenShort/CloseShort,区分了双向持仓
    3. SetPostion,不管操作,只在乎最后持仓
    4. ……

     

    每个单子在报出后都会有委托回报,在OnRtnOrder中将单子记录下来,就可以进行撤单了

    function OnRtnOrder(sender,arg)
    % 委托回报
     
    % 打印内容
    disp(arg)
     
    % 在某种情况下撤单,自己考虑各条件
    %if arg.pOrder.VolumeTotal>2
        global td;
        % 撤单
        td.CancelOrder(arg.pOrder);
    %end
     
    end

     

    实际上,实盘中还有更多的工作要做

    OnRspOrderInsert:当报单在期货公司前置机参数检测出错时返回,如资金不足等

    OnErrRspOrderInset:交易所报单出错时返回,如不支持的交易指令等

    OnRspOrderAction:当撤单在期货公司前置机参数校验出错时返回,如找不到报单

    OnErrRspOrderAction:交易所撤单出错时返回,如报单已经成交等

    第九节 Matlab对接证券

    证券接口开放性就有些不够了,金证、金仕达、恒生、根网、顶点都有证券柜台,但接口都不向外公开。只有国信证券向公众提供了FIX接口.2012年下半年,上期技术又打破平静,推出了CTP证券接口,特别是证券与期货接口仅仅是类型定义有所区别。直接可以将期货的代码略做修改移动到证券。

    直接看项目https://github.com/QuantBox/CTPZQ/tree/master/CSharp-CTPZQ即可。

    展开全文
  • 配对交易策略

    千次阅读 2019-07-10 10:25:43
    在量化投资领域,既然严格的无风险套利机会少、收益率微薄,实际的执行过程中也能完全消除风险。那么如果有一种选择,能够稍微放松100%无风险的要求,比如允许有5%的风险,但同时却能够让套利机会增加100%以上,那...

    一、引言

    在量化投资领域,既然严格的无风险套利机会少、收益率微薄,实际的执行过程中也不能完全消除风险。那么如果有一种选择,能够稍微放松100%无风险的要求,比如允许有5%的风险,但同时却能够让套利机会增加100%以上,那岂不是一个更好的选择?今天,我们就来介绍这样一种方法——配对交易

    二、统计套利

    1.定义

    统计套利即主要以对历史数据进行统计分析为基础,估计目标统计量的分布,再结合股票自身基本面数据来指导套利交易。

    2.评价

    统计套利相对于无风险套利,它增加了一些风险,但也伴随着诱人的风险溢价,即获得更多套利机会。不过它一个本质上的局限来自于使用的历史数据,其只能反映过去的信息,用之预测未来有时难以讲得通。

    3.例子

    统计套利的原理其实用下面这张图就可以解释:

    我们现在把这个场景应用到市场上,以股票为例:

    股票A、B: 价格——Random Walk;

    股票A和B的差价(或者其他的 Linear combination 的时间序列)——具备稳定性。

    假设我们现在找到了这样一个股票 A 和 B 的序列,他们的差价,经过统计学的 Cointegration test 证明具备稳定性(如 Adfuller test),我们计算出该时间序列的 mean 和 std , 就可以设定一个稳定阀域,在偏离的时候买入/卖出,等到回归到稳定阀域再平仓。

    举例,过去6个月内,A 股票和 B 股票的价差序列为平稳序列,均值为 10,标准差为 2,我们设定阀域为1.5个标准差,那么平稳区间就是 7-13 。

    当 A-B > 13 时,我们买入 B , 卖出 A; 

    当 A-B < 7 时,我们买入 A , 卖出 B 。

    等到回归到平稳区间平仓。

    三、股票配对交易

    1.定义

    股票配对交易是统计套利的主要内容之一,它旨在寻找市场上历史走势相似的股票进行配对,当价格差较大(高于历史均值)时高卖低买进行套利。

    2.主要方法

     i.距离法

    定 义:距离法使用一个回溯时间区间,标准化价格。然后在 2 范数下计算 n 只股票两两间的配对距离(SSD)。以 SSD 值最小的前 20 对作为标的,在后续 6 个月内以 2 倍标准差作为阈值进行统计套利,距离回到均值时平仓。6 个月后更新标的继续套利。

    评 价:标的选择标准中蕴含着其无法最大化利润,因每对的收益与其价差(SSD)成正比;此外高相关性不代表协整,从而均值回复得不到保证。

    改 进:(a) 只在同一行业内选择标的;

    (b)使用 Pearson 相关系数度量期内相关性。

     ii.协整法

    前 提: 不平稳的经济时间序列的线性组合可能实现平稳。

    Engle-Granger 法: 用对数价格进行 OLS 回归,对残差进行 ADF 检验,其中误差修正模型为 Johansen 方法。若验证了协整关系,即可说明股价 A,B之间存在长期均衡关系,从而残差序列是均值回复的。

    评 价: 模型太单一,标的仅为两种股票,时限仅限于 2 年之内,单笔收益最大化不保证整体收益最大化。

    改 进: 先进行距离筛选后再做协整。

     iii.时间序列法

    定 义: 假定价差为具有均值回归特性的马尔科夫链,伴随着高斯噪声。

    评 价: 该方法优越性在于抓住了配对交易的核心---均值回复性;其次该模型是连续的,因而可以用于预测;最后,该模型易处理,可通过卡尔曼滤波方法得到最小 MSE 参数估计。

    不过,价差应使用价格的自然对数差来避免量纲不同的影响;模型条件苛求收益平价,这实际很难达到;金融资产数据现实中并不满足Ornstein-Uhlenbeck 过程。

    推荐阅读

    1.市面上经典的量化交易策略都在这里了!

    2.海龟交易法则策略,多读几遍少走10年路

    3.配对交易—这个股票策略曾年赚5000万美元

    4.揭开日内回转交易策略做“T+0”的面纱

    5.经典量化选股方法——没有秘密的多因子

     

     

    展开全文
  • ETH交易部分分析

    万次阅读 2019-04-15 07:35:05
    1.交易结构 交易结构定义在 core/types/transaction.go 中: 这个 atomic 是 go 语言的一个包 sync/atomic,用来实现原子操作。在这个结构体中, data 为数据字段,其余三个为缓存。下面是计算 hash 的函数: ...
  • 基于以太坊的去中心化 P2P 交易协议

    万次阅读 2019-05-11 16:59:08
    在Swap中,我们一直在思考发展以太坊代币交易生态系统的最佳方式。今天,我们满怀喜悦,发布Swap白皮书,供各位同仁参阅: ...P2P则允许用户迅速地与已知的对象进行私密的交易,而非提交订单到一个公共订单簿上。...
  • 智能合约与交易费用

    万次阅读 2019-05-13 19:00:08
    在最近的一篇论文中,我以交易费用经济学的视角讨论了开发区块链技术的合约协议,即智能合约。 在传统的合约中,迫于第三方执法者(例如,法院,仲裁者)在事后进行干预的承诺,人们预期各方会遵守他们之间的合约...
  • QPBOC交易,也就是快速的借记贷记。 很多人都容易混淆了QPBOC,PBOC和电子现金、电子钱包的概念。首先,电子钱包早在PBOC2.0的规范里面就去掉了,在PBOC3.0里面把MSD也去掉了。因此,最新的PBOC3.0规范里面,定义...
  • 作为传统证券交易所之外的一种另类交易平台,“黑池”通常由一些大型跨国银行及证券公司创立和营运,其最大的特点是保密...“黑池”的主要参与对象是进行大宗交易的机构投资者,可以将其理解为重要客户的私人交易场所,
  • 深入理解金融交易报文Iso8583协议

    千次阅读 2016-10-20 11:44:17
    深入理解金融交易报文ISO8583协议 字段域解释前言最初)金融系统只有IBM这些大公司来提供设备)象各种主机与终端等,后来有很多大大小小的公司进入)怎样设计一个报文协议)解决各公司金融系统之间的报文交换)暂且称...
  • 如果要在证券交易所参与交易,并是猫猫狗狗都可以,只有证券公司才能有资格向交易所报单;这是券商身为交易所会员所的独有权利。至于个人投资者和机构投资者,都必须委托券商才可以交易,否则提交的买单卖单无法...
  • 支付交易一般性准则

    千次阅读 2014-08-18 17:22:45
    一. 通用规则 1.1. 历史记录不得直接篡改 ...电商核心服务基本都是分布式应用,分布式事务如处理不妥善,容易产生数据不一致。...所以数据库中以下关键资源的记录,郑昀提醒您注意,原则上不允许直接修
  • 高频交易四大派系大揭秘

    万次阅读 2019-08-21 09:18:56
    所谓高频交易,简单说就是指利用计算机技术在短时间内快速进行多次买入卖出的交易行为,一般指利用微妙(1秒等于1百万微秒)为时间单位制定策略,高频交易公司利用强大的电脑程序进行快速交易交易时间经常到十...
  • 以太坊交易源码分析

    千次阅读 热门讨论 2018-05-28 18:38:41
    这篇开始分析以太坊交易相关代码。... 提交交易:把交易加入到交易缓冲池txpool中(会先对交易签名进行验证) 广播交易:通知EVM执行,同时把交易信息广播给其他结点 下面依次分析这几个部分的源码。 1. 发起交...
  • 在校园生活中,存在着各种各样的信息差。也正因为这些信息差的存在,经常让校园同学们面临各种各样的问题。比如丢东西的找到东西,捡到东西的找到失主等等。其中最为突出的莫过于 【失物招领】及【二手交易】了
  • 量化交易 第四课 回测交易接口

    千次阅读 多人点赞 2021-03-16 04:51:34
    回测交易接口. 回测交易接口的使用.
  • 释放阻塞的以太坊交易

    万次阅读 2019-05-12 08:14:59
    目前以太坊正面临着许多积压的交易,导致一些交易数小时甚至数天都未被处理。 本文解释了转账如何被卡住,以及如何释放它们。 确定gas价格 发送以太坊交易时,有许多方法可以确定最佳gas值。...
  • 你想开始自己的比特币交易所业务,但知道从哪里开始?你来对地方了。这篇文章旨在澄清在你想要开一个交易所之前需要考虑的事情,启动您自己的比特币货币交易所/数字货币交易所,如何构建数字货币交易所软件的内部...
  • 算法交易分类大全

    千次阅读 2019-07-02 10:50:12
    算法交易又被称为自动交易、黑盒交易或者机器交易,它指的是通过使用计算机程序来发出交易指令的方法。在交易中,程序可以决定的范围包括交易时间的选择、交易的价格、甚至可以包括最后需要成交的证券数量。 算法...
  • 股票市场交易中的强化学习

    千次阅读 2021-01-11 08:48:06
    在深度学习的世界中,无论您的模型多么先进,...数据集基本上有五个数字,它们对模型说的完全相同,这使得模型很难理解允许机器学习交易者获利的市场波动的复杂性。 数据的相关性显示在下面的分散矩阵内,其中对角线是
  • 运行环境:赛码网题目描述假如一个数组存储了一个股票,在一天交易窗口内各时间点的股票价格(正整数),只允许一次买入和一次卖出,请提供一个算法,计算出通过买入和卖出可以得到的最大利润
  • 使用 Hyperledger Fabric 开展私密交易

    万次阅读 2019-04-26 00:24:36
    “在诸如区块链网络这样的交易系统中,通常是通过强制实施数据保密性和交易参与者匿名性的机制来实现隐私性。” 数据保密性机制可确保个人或组织无法访问他们未被授权访问的数据,例如,其他组织的交易机密...
  • 算法交易简介以及TWAP、VWAP算法原理

    万次阅读 多人点赞 2019-08-10 13:48:03
    1,交易成本: ...一类叫做隐含成本,包含买卖的价差、冲击成本、择时成本、机会成本,这些成本类似于可变的成本,我们可以通过人为的干预,或者交易的方法去进行管理或者是控制。 2,名词解释: ...
  • 这篇文章是用来帮助人们理解以太坊网络上的一些基本概念和体系,包括账户体系、gas、矿工在区块...可以发送交易(以太币转账或者激活合约代码) 通过私钥控制 没有相关联的代码 合约账户一个合约账户拥有一下特性: 有
  • 比特币交易实例分析

    千次阅读 2018-05-03 17:48:36
    概念:比特币交易确认过程: 钱包创建交易钱包软件通过收集UTXO、提供正确的解锁脚本、构造支付给接收者的输出这一系列的方式来创建交易。产生的交易随后将被发送到比特币网络临近的节点,从而使得该交易能够在整个...
  • 港股通收市竞价交易机制科普

    千次阅读 2017-06-02 20:58:30
    香港联合交易所于2016年6月27日发布了《有关在证券市场实施收市竞价交易时段之修订》,拟于2016年7月25日正式实施收市竞价交易: ...仅允许进行竞价限价盘委托 三、收市竞价交易时段介绍 收市竞
  • 以太坊上发送交易的九种办法

    万次阅读 2019-05-14 09:51:49
    本文的目的是为在以太坊生态中发送交易使用的各类技术,模式和机制提供一个指南。由于新技术层出不穷,本文也会随之更新,所以可以认为是未完待续的一个状态。 针对这个公认的大课题,本文将包含以下内容: Brief ...
  • 量化交易初学者指南

    千次阅读 2018-10-01 18:11:37
    本文服务于两类读者:第一类想在量化基金找到量化交易员工作的人,第二类是希望尝试和建立自己的零售算法交易业务的个人。 量化交易是量化金融中一个非常复杂的领域。为了通过面试或者构建自己的交易策略 ,你可能...
  • 一步一步构建量化交易系统

    千次阅读 2019-07-12 09:34:59
    第一步:解决你的交易理念。 1.1 首先要解决的是你的交易理念,所以第一部分主要就是解决交易理念的问题,交易理念非常非常重要,交易理念是摆在首位的。 1.2 交易理念是决定你能否成功的关键!只要交易理念正确,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 89,023
精华内容 35,609
关键字:

不允许进行此交易