辛运28官网:wind api接口 Wind原生TDBAPI封装成WEB API - ▶辛运28计划软件▶辛运28天天计划▶辛运28人工计划▶辛运28在线计划▶辛运28稳赢计划
  • 市民举报垃圾短信被拉黑 12321:服务提供商违规操作 2019-11-12
  • 筑梦命运共同体 习近平的上合日历 2019-11-09
  • 图解:短视频平台频遭约谈敲响警钟,野蛮生长要不得! 2019-11-02
  • 百度地图春运出行大数据:年轻人返乡晚离家早 上班到最后一天 2019-11-01
  • 杭州拱墅区:打造“4+X”巡逻防控体系 2019-10-31
  • 美国派往越南的第五纵队也不少。而越南却没有经过反修防修锻炼的人民。希望越南能闯过难关,不让美国第五纵队得逞。 2019-10-31
  • 黄晓明赵薇街头狂奔被拍 网友减肥的人跑步上班 2019-10-29
  • “中国礼物”项目启动仪式 2019-10-26
  • 新疆巴里坤县:野生玫瑰竞相开放引客来 2019-10-24
  • 2018羊城晚报报业集团招标 2019-10-16
  • [微笑]不管到什么时候,人与人的差异性都是无法完全消除的!有些人在苦读,有些人在贪玩;有些人在练技,有些人在偷懒;有些人在创发,有些人在瞎混…… 2019-10-16
  • 好像经济问题翻遍所有的图书馆都找不出答案,原来经济关系就在《论十大关系》数千个言辞中。 2019-10-14
  • 头皮出油头屑严重 该怎么养发护发?-美食资讯 2019-10-14
  • 你家的早餐,问你家做饭的主妇;我家的问我老伴,逐级上报,在新技术支持下,不要十分钟,全国的就出来了。不懂这个,还算是高科技! 2019-10-14
  • 关键技术要掌握在自己手里 2019-10-06
  • 辛运28官网:辛运28

    有态度的娱乐门户网站!
    当前位置:辛运28 > 股票

    wind api接口 Wind原生TDBAPI封装成WEB API

    2019-08-01 10:32:12  |  来源:辛运28  |  编辑:  |  我要分享:
    Spring Boot ##3. 开发过程## ###3.1 创建项目### 在IntelliJ idea中创建初始项目,具体过程参照Gauic的博客,其中由于本项目不需要数据库,因此只选择了Web,没有选择JPA和H2。另外需要新建lib文件夹,原因看下文。项目结构如下所示: ###3.2 导入jar包和dll文件### 下图是Wind api 提供的jar包,6...
    Spring Boot

    辛运28 www.vtqt2.com ##3. 开发过程##

    ###3.1 创建项目###

    在IntelliJ idea中创建初始项目,具体过程参照Gaussic的博客,其中由于本项目不需要数据库,因此只选择了Web,没有选择JPA和H2。另外需要新建lib文件夹,原因看下文。项目结构如下所示:

    ###3.2 导入jar包和dll文件###

    下图是Wind api 提供的jar包,64bit 的dll文件夹(服务器64bit,也可以按需选32bit 的):

    封装成web api 需要内容: tdbapi.jar, x64文件夹里面的2个dll,lib文件(dll是必须的,lib不太清楚)

    2) 运行时调用dll: 这就更简单了,直接在项目根目录里面添加就可以了。

    以上做法在IntelliJ里面可以正常使用,但是用maven将spring boot 项目打包成jar就有问题了。一是本地jar包找不到,二是dll也找不到,三是打成jar包Test失败。具体如下:

    1)maven 导入本地jar包

    2)运行时调用dll

    在java.library.path里面能够找到dll就可以正常运行,以下是2种解决思路: a. 在程序中导入dll: System.load, System.loadLibrary b. 将dll放在java.library.path中的路径下。 花了大把时间尝试方法a,但是可能因为同阶段有其他bug的影响,快到deadline了还是没有成功。所以直接采用方法b。直接把dll和lib文件放在了jdk的bin文件夹下(不推荐)

    3)打成jar包Test问题

    可能是Spring boot 的test??槲薹ㄕ业絛ll文件,在用maven打jar包的时候一直卡在Test。所以直接把Test??楦蕹?。。。(不推荐)

    ##3.3 功能开发##

    开发环境(在IntelliJ 里) 目前需要实现的功能(目前实现Wind TDBAPI里面的部分功能)

    ###3.3.1 登录???##

    Wind登录??樾丛贑ontroller的构造函数里面,避免每次请求数据重新登录

    ###3.3.2 获取K线数据### 前三点介绍wind api中的数据结构,与其在web api中的对应。(a. Wind 中的数据结构; b. web api中的数据结构)

    1) 请求K线数据结构

    a. Wind 请求K线数据结构

    b. Web api 请求K线数据结构

    注意不需要构造函数,Controller里面会自动匹配。

    2) 枚举类型

    a. Wind 枚举类型

    b. Web Api 枚举类型转换

    为了方便客户端(时间参数: 传 0,1,2 不如传 'second', 'minute' 直观),进行下面的自动转换(switch case 很low就是了,还好类型少。。。。)

    3) 返回数据类型

    a. Wind 原生返回数据类型

    b. web api 返回数据类

    4) 请求K线数据

    //获取K线数据
    @RequestMapping(value = "/getKLine", method = RequestMethod.POST)
    public List<TdbKLine> getKLine(@RequestBody KLineParam kLineParam) {
    int m_nMaxOutputCount = 1000;
    if(kLineParam.getKey() != "xxxxxxx") return null;
    ReqKLine req = new ReqKLine();
    req.setCode(kLineParam.getCode()); //Required
    req.setMarketKey(kLineParam.getMarketKey());//Required
    req.setCQFlag(kLineParam.getCqFlag()); //默认为0
    req.setCQDate(kLineParam.getCqDate()); //默认为0
    req.setQJFlag(kLineParam.getQjFlag()); //默认为0
    req.setCycType(kLineParam.getCycType()); //Required
    req.setCycDef(kLineParam.getCycDef()); //Optional,default 1
    req.setAutoComplete(kLineParam.getAutoComplete()); //自动补齐(0:不补齐,1:补齐)
    req.setBeginDate(kLineParam.getBeginDate()); //Optional,default today
    req.setEndDate(kLineParam.getEndDate()); //Optional,default today
    req.setBeginTime(kLineParam.getBeginTime()); //开始时间
    req.setEndTime(kLineParam.getEndTime()); //结束时间
    KLine[] kline = client.getKLine(req);
    if (kline==null) {
    System.out.println("NetWork Error,getKline failed!");//网络断开,可根据此消息,调用Client.close()后重连
    }
    List<TdbKLine> tdbKLines = new ArrayList<>();
    int nIndex = 0;
    for(KLine k : kline) {
    if (nIndex++ > m_nMaxOutputCount) break;
    TdbKLine tdbKLine = new TdbKLine(k.getWindCode(), k.getCode(), k.getDate(), k.getTime(),
    k.getOpen(), k.getHigh(), k.getLow(), k.getClose(), k.getVolume());
    tdbKLines.add(tdbKLine);
    }
    return tdbKLines;
    }

    ###3.3.3 获取Tick数据### 与获取K线数据类似

    ##3.4 测试用例

    test.py

    #请求tick数据的参数
    tick_param = {'code': 'cu00.SHF', 'marketKey':'SHF-1-0','date':20170608, 'beginTime':0, 'endTime':0}
    #发送请求
    r = requests.post(url=tick_url, json=kline_param)
    #返回json数据
    print(r.json())

    code: github

  • 市民举报垃圾短信被拉黑 12321:服务提供商违规操作 2019-11-12
  • 筑梦命运共同体 习近平的上合日历 2019-11-09
  • 图解:短视频平台频遭约谈敲响警钟,野蛮生长要不得! 2019-11-02
  • 百度地图春运出行大数据:年轻人返乡晚离家早 上班到最后一天 2019-11-01
  • 杭州拱墅区:打造“4+X”巡逻防控体系 2019-10-31
  • 美国派往越南的第五纵队也不少。而越南却没有经过反修防修锻炼的人民。希望越南能闯过难关,不让美国第五纵队得逞。 2019-10-31
  • 黄晓明赵薇街头狂奔被拍 网友减肥的人跑步上班 2019-10-29
  • “中国礼物”项目启动仪式 2019-10-26
  • 新疆巴里坤县:野生玫瑰竞相开放引客来 2019-10-24
  • 2018羊城晚报报业集团招标 2019-10-16
  • [微笑]不管到什么时候,人与人的差异性都是无法完全消除的!有些人在苦读,有些人在贪玩;有些人在练技,有些人在偷懒;有些人在创发,有些人在瞎混…… 2019-10-16
  • 好像经济问题翻遍所有的图书馆都找不出答案,原来经济关系就在《论十大关系》数千个言辞中。 2019-10-14
  • 头皮出油头屑严重 该怎么养发护发?-美食资讯 2019-10-14
  • 你家的早餐,问你家做饭的主妇;我家的问我老伴,逐级上报,在新技术支持下,不要十分钟,全国的就出来了。不懂这个,还算是高科技! 2019-10-14
  • 关键技术要掌握在自己手里 2019-10-06
  • 彩客网胜平负 电子游戏怎么赚钱 方向余弦法球旋转矩阵 11选5客户端下载 通城黑仔唱二八杠视频 篮球计分器队名输入表 宝石迷阵5 大平台国际娱乐 ag平台真钱注册 极速炸金花咋玩 JDB五龙捕鱼技巧 济公心主论坛 博雅德州扑克360账号 体彩e球彩进球数 山东十一选五前三组遗漏数据