背景

最近,自己在技术精进方向上有所犹豫,是往"网络渗透"的方向走呢?还是往"量化交易"的方向走?

如果选择精进“网络渗透”,就需要学习各种Web渗透技术、客户端渗透技术、移动环境渗透技术、社会工程学技术等等。随着互联网的深入发展,人们对网络安全的要求也会越来越高,这个领域一定是未来的趋势。况且,学习这些技术也很过瘾,多巴胺分泌旺盛,还能体验电影中黑客的感觉。

可是,对自己来说“网络渗透”属于全新的领域,选择了这个方向就要丢掉以前在机器学习方面的积累。

想来想去,年龄大了,还是走保守的路线吧,选择“量化交易”作为自己今后的技术精进方向。把机器学习中积累的方法应用于量化交易,希望能够在这个领域做出一些东西来啊。

既然选择了“量化交易”方向,就要为运行这些“量化模型”搭建底层框架,于是我封装了 BigOne 交易所为开发者提供的 API


技术分析

BigOne API 的入口如下所示:

由于篇幅的限制,今天先来介绍“身份验证”部分,后面再来介绍订单系统和资产查询部分。

要想使用 BigOne API 需要到 BigOne 交易所申请 API KeyAPI Secret

  • API Key:是网站提供 API 功能的验证参数。
  • API Secret:是加密通讯数据的密钥,用于生成验证身份的令牌。

为了防止别人重复使用请求参数,确保请求的唯一性,在生成身份令牌算法中加入了时间戳 nonce 参数,该 nonce 和当前时间戳之间的间隔不能超过30秒,即这个令牌的有效期为30秒。

生成身份令牌需要 JSON Web Token,可到 https://jwt.io 上查看详细信息。该网站提供了 .netptythonnode.jsjavajavascriptperlruby等语言的使用案例。

我使用的是.net环境,在 https://github.com/dvsekhvalnov/jose-jwt 上可以下载。

在使用的时候添加以下语句即可。

using Jose;

BigOne 也提供了获取服务器端当前时间戳的API,如下图所示:


代码实现

Step1:获取身份认证的参数。

构造接收 时间戳 的类型 Ping

public class Ping
{public string timestamp;
}

获取时间戳的函数 GetTimestamp

private string ApiEntryPoint = "https://big.one/api/v2/";private static long GetTimestamp()
{string url = ApiEntryPoint + "ping";ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;try{IHtmlDocument document = new JumonyParser().LoadDocument(url);List<IHtmlNode> nos = document.Nodes().ToList();string str = nos[0].ToString();StringReader sr = new StringReader(str);JsonTextReader jsonReader = new JsonTextReader(sr);JsonSerializer serializer = new JsonSerializer();Ping one = serializer.Deserialize<Ping>(jsonReader);return Convert.long(one.timestamp);}catch (Exception ex){throw new Exception(ex.Message);}
}

Step2:获取验证身份的令牌。

private static string GetToken()
{Int64 timestamp = GetTimestamp();IDictionary<string, object> payload = new Dictionary<string, object>(){{"type", "OpenAPI"},{"sub", ApiKey},{"nonce", timestamp}};//这里的 ApiSecret 从 BigOne 申请获取。byte[] secretKey = Encoding.Default.GetBytes(ApiSecret);string token = JWT.Encode(payload, secretKey, JwsAlgorithm.HS256);return token;
}

Header 中需要 typesubnonce三个参数,subAPI Key,从 Bigone 申请获取,nonce 是服务器的当前UNIX时间戳,可以通过 Step1 来获取。

Step3:获取身份令牌的例子。

我们对 subnonceApiSecret 赋值如下:

string ApiKey = "cee88ab0bc69435784b7db0545e85647";
string ApiSecret = “testsecret”;
long timestamp = 1527665262168391000;

可以得到如下的 token

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0eXBlIjoiT3BlbkFQSSIsInN1YiI6ImNlZTg4YWIwYmM2OTQzNTc4NGI3ZGIwNTQ1ZTg1NjQ3Iiwibm9uY2UiOjE1Mjc2NjUyNjIxNjgzOTEwMDB9.YNpae4v_-OU7h2sknRPa3XPhDcC3p-To1WxbWV4Vpro

Step4:使用身份令牌的方法。

BigONE Developer API V2 的文档中,我们可以看到在进行网络请求时,header 部分需要加入 Authentication 属性以及对应取值 "Bearer " + token


总结

本篇图文介绍了如何使用 BigONE Developer API V2 来获取身份令牌的方法。一旦获取了身份令牌,我们就可以在网络请求的 header 中加入令牌来获取自己的账户数据,创建买入创建订单、卖出删除订单,查询订单状态等,为自己的自动化交易系统搭建底层基础。

好了今天就到这里吧!如果你对自动化交易感兴趣,我们可以一起来精进技术,完善这个系统。


相关图文

  • 如何利用 C# 实现 K 最邻近算法?
  • 如何利用 C# 实现 K-D Tree 结构?
  • 如何利用 C# + KDTree 实现 K 最邻近算法?
  • 如何利用 C# 对神经网络模型进行抽象?
  • 如何利用 C# 实现神经网络的感知器模型?
  • 如何利用 C# 实现 Delta 学习规则?
  • 如何利用 C# 开发「桌面版百度翻译」软件!
  • 如何利用 C# 开发「股票数据分析软件」(上)
  • 如何利用 C# 开发「股票数据分析软件」(中)
  • 如何利用 C# 开发「股票数据分析软件」(下)
  • 如何利用 C# 爬取「财报说」中的股票数据?
  • 如何利用 C# 爬取 One 持有者返利数据!
  • 如何利用 C# 爬取Gate.io交易所的公告!
  • 如何利用 C# 爬取BigOne交易所的公告!
  • 如何利用 C# 爬取 ONE 的交易数据?
  • 如何利用 C# 爬取「京东 - 计算机与互联网图书销量榜」!
  • 如何利用 C# 爬取「当当 - 计算机与互联网图书销量榜」!
  • 如何利用 C# 爬取「互动出版网 - 计算机图书销量榜」!
  • 如何利用 C# 爬取「中国图书网 - 计算机与互联网图书销量榜」!
  • 如何利用 C# 爬取「猫眼电影:热映口碑榜」及对应影片信息!
  • 如何利用 C# 爬取「猫眼电影专业版:票房」数据!
  • 如何利用 C# 爬取「猫眼电影:最受期待榜」及对应影片信息!
  • 如何利用 C# 爬取「猫眼电影:国内票房榜」及对应影片信息!
  • 如何利用 C# + Python 破解猫眼电影的反爬虫机制?
  • 如何利用 C# 爬取带 Token 验证的网站数据?
  • 如何利用 C# 向 Access 数据库插入大量数据?

技术图文:如何利用BigOne的API制作自动化交易系统 -- 身份验证相关推荐

  1. 技术图文:如何利用BigOne的API制作自动化交易系统--网格交易法

    背景 前面,通过图文 如何利用 C# 爬取 ONE 的交易数据? 向大家介绍了如何爬取在 BigOne 上线的数字资产的交易数据. 其次,通过图文 如何利用BigOne的API制作自动化交易系统 – ...

  2. 技术图文:如何利用BigOne的API制作自动化交易系统 -- 订单系统

    背景 前面几天,我们一起封装了 BigONE 提供的"身份验证"与"资产账户"部分的 API. 如何利用BigOne的API制作自动化交易系统 – 身份验证 如 ...

  3. 技术图文:如何利用BigOne的API制作自动化交易系统 -- 获取账户资产

    背景 前几天我们介绍了如何使用 BigONE Developer API V2 来获取身份令牌的方法「如何利用BigOne的API制作自动化交易系统 – 身份验证」.一旦获取了身份令牌,我们就可以在网 ...

  4. eap aka_使用API​​密钥(aka身份验证令牌)部署到Maven Central

    eap aka 如何在不使用未加密本地密码的情况下与Maven Central / Nexus通信(尤其是使用Gradle,但不仅限于此). 基本原理 不幸的是,Gradle(和许多其他构建工具)没有 ...

  5. java实现iam登录认证_是否可以通过Cloudfront对API网关进行IAM身份验证?

    是否可以通过Cloudfront将IAM角色身份验证用于API网关 endpoints ? 这是一个基本用例: / api - > API网关 / * - > S3 HTML / Java ...

  6. 利用 Lotus Connections API 制作桌面应用

    作为 IBM Lotus™ Connections 1.0.1 的重大更新之一,开发人员可以利用该产品提供的轻量级 API 与已有的 Web 系统轻松实现数据整合.而本文将介绍如何利用这些 API,并 ...

  7. 使用API​​密钥(aka身份验证令牌)部署到Maven Central

    如何在不使用未加密本地密码的情况下与Maven Central / Nexus通信(尤其是使用Gradle,但不仅限于此). 基本原理 不幸的是,Gradle(和许多其他构建工具)没有提供任何机制来本 ...

  8. zap安装提示java_使用API调用进行ZAP身份验证

    我正在使用ZAP API调用来使用命令行测试站点 . 但即使我遵循正确的步骤,我的用户身份验证也有问题 . 但是当蜘蛛作为用户时,我仍然无法设法通过登录页面 . 以下是我要介绍的步骤 . 1.包含在上 ...

  9. 利用百度地图API制作房产酒店地图

    摘要: 想亲手制作一张酷讯.去哪儿.安居客.链接地产那样的房产.酒店地图麼?那赶快来学习吧.(以酷讯为例,如下图) 更多成功案例请点击:http://dev.baidu.com/wiki/map/in ...

最新文章

  1. WMI技术介绍和应用——查询时间信息
  2. SQL创建表语句文档
  3. Linux初学者的感受
  4. 深度学习时代的图模型,清华发文综述图网络
  5. 实验9 结构程序设计 6-1 计算两个复数之积
  6. aspx隐藏前台控件div_javascript总结--div
  7. c语言深入浅出(一)strcpy和memcpy的区别
  8. oracle迁移到greenplum的方案
  9. flutter listview 滚动到指定位置_Flutter 布局原理及实战
  10. IMDB情感分析数据集
  11. 《iPhone与iPad开发实战—iOS经典应用剖析》连载三
  12. 基于MaixPy的摄像头模块---MicroPython图像处理
  13. 调用情迁机器人发送微信或者QQ消息等即时通讯消息
  14. 美国密歇根州立大学计算机专业,密歇根州立大学计算机科学与工程系开设的研究领域有哪些?...
  15. 自动动手打造绿色的Photoshop CS2
  16. Windows环境下Python中multiprocessing关于RuntimeError异常的处理方式
  17. 华新集团再冲刺港交所上市:上半年收入2.6亿元,张德红为董事长
  18. Unity中抛物线的实现
  19. python for finance pdf_python金融大数据分析 pdf
  20. webpack、npm 相关错误汇总

热门文章

  1. IDEA新建springboot项目发生错误
  2. 如何高效学习java课程
  3. PXE全自动安装操作系统--centos7.3学习笔记
  4. 找不到包含 OwinStartupAttribute 的程序集
  5. Airlaunch 快捷设置代码分享
  6. QCon2016旧金山大会焦点分享者确认
  7. c语言-01背包问题
  8. linux守护进程的创建
  9. HTML5 学习笔记(一)- video
  10. 【跟着我们学Golang】之面向对象