当前位置: 首页 > 编程日记 > 正文

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

背景

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

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

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

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

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


技术分析

BigOne API 的入口如下所示:

程序入口

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

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

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

API Key and 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:使用身份令牌的方法。

token的使用

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 数据库插入大量数据?

相关文章:

零基础学习java软件开发攻略

Java是主流开发语言&#xff0c;应用普遍。Spring Boot是Java开发时常用框架&#xff0c;有非常丰富的组件和易用的功能。实际开发工作中涉及到的知识点比较多&#xff0c;将它们分门别类&#xff0c;专题攻关&#xff0c;由点到面&#xff0c;学习效率非常高。 软件开发系统学…

Linux--档案/目录 权限及修改

首先所有权限对于三类用户分别设定&#xff1a; User(所有者) / Group(组群) / Others(其他)。 权限也是有三种&#xff1a;Read / Write / eXecute&#xff0c;这三种权限对于文档和目录有不同的意义。 1. 对于文档&#xff1a; Read&#xff1a;可以查看文档的内容 Write&…

sklearn:Python语言开发的通用机器学习库

引言&#xff1a;深入理解机器学习并全然看懂sklearn文档&#xff0c;须要较深厚的理论基础。可是。要将sklearn应用于实际的项目中&#xff0c;仅仅须要对机器学习理论有一个主要的掌握&#xff0c;就能够直接调用其API来完毕各种机器学习问题。本文选自《全栈数据之门》。将向…

资料分享:送你一本《BigONE Developer API V2》电子书!

背景 昨天&#xff0c;我推送了一篇技术图文《如何利用 BigOne 的 API 制作自动化交易系统 – 身份验证》&#xff0c;里面提到了 BigONE Developer API V2。为了方便自己也方便他人&#xff0c;所以把这份文档整理成 PDF。如果大家对封装 BigONE 提供的 API 感兴趣可以下载这…

Web前端培训面试攻略

学会web前端技术之后&#xff0c;接下来就是要找到一份合适的工作&#xff0c;今天小编要跟大家分享的文章是关于web前端面试攻略&#xff0c;做好这些可以给面试环节加分&#xff0c;找到合适的工作几率会更高&#xff0c;希望本篇文章能够对大家有所帮助。 ​  Web前端培训…

微软鲍尔默回应被苹果超越:将开发更好产品

针对苹果超过微软成为全球市值最高的高科技公司的消息&#xff0c;微软首席执行官史蒂夫鲍尔默 (Steve Ballmer)周四表示&#xff0c;其目标是开发更好的产品&#xff0c;提高盈利能力。鲍尔默周四在印度首都新德里说&#xff0c;“我每天思考的是如何改进产品、如何使产品更 具…

技术图文:如何利用C#实现Huffman编码?

背景 Huffman编码 在通信和数据压缩领域具有重要的应用。 在介绍 Huffman 编码具体实现之前&#xff0c;先介绍几个相关的概念。 概念1&#xff1a;树中结点的带权路径长度 – 根结点到该结点的路径长度与该结点权值的乘积。 概念2&#xff1a;树的带权路径长度 – 树中所有…

ELK 5.x日志分析 (二) Elasticserach 5.2 安装

2019独角兽企业重金招聘Python工程师标准>>> 解压安装包到/opt/elasticsearch 目录下面 [roots1-prod-it-web01 opt]# tree -L 1 elasticsearch/ elasticsearch/ ├── bin ├── config ├── lib ├── LICENSE.txt ├── modules ├── NOTICE.txt ├── …

什么样的人适合学习UI?

UI时代的到来&#xff0c;让我们的生活都多姿多彩&#xff0c;很多企业越来越注重UI设计这方面&#xff0c;想要学习UI设计的人也越来越多&#xff0c;暗恶魔什么样的人适合学习UI呢? 什么样的人适合学习UI? 目前的UI设计很多都是停留在手机端设计&#xff0c;网页&#xff0…

Uva 10074【递推dp】

UVa 10074 题意:求01矩阵的最大子0矩阵。 http://www.csie.ntnu.edu.tw/~u91029/MaximumSubarray.html#2 这里说的很清楚。先求Largest Empty Interval,枚举每个点为矩形的右下角。 1 #include<iostream>2 #include<cstdio>3 #include<cstring>4 #include<…

金融时报:谷歌撤离中国有99.9%的可能性

据国外媒体报道&#xff0c;英国《金融时报》周六发表文章称&#xff0c;谷歌与中国政府就监管问题的谈判显然陷入僵局&#xff0c;而这家世界最大的搜索引擎关闭中国业务现在有99.9%的可能性。《金融时报》称&#xff0c;谷歌已经制定了关闭中国搜索引擎的详细计划。该报援引一…

技术图文:匿名方法是怎样演变为Lambda表达试的?

背景 “Lambda 表达式”&#xff08;lambda expression&#xff09;是一个匿名函数&#xff0c;Lambda 表达式基于数学中的 λ演算得名&#xff0c;直接对应于其中的 lambda 抽象&#xff08;lambda abstraction&#xff09;&#xff0c;是一个匿名函数&#xff0c;即没有函数…

python和c++的相互调用教程

日常工作中会遇到需要python与cpp代码之间的相互调用&#xff0c;工作的应用复杂&#xff0c;都是取决于代码的多少&#xff0c;但是总的方法不变&#xff0c;这里用两个简单例子说明下&#xff0c;有兴趣的筒子可以探讨下~~ 我的测试环境&#xff1a;ubuntu1604&#xff0c;py…

技术图文:如何通过 LINQ 查找集合中的重复数据?

背景 在前几天介绍的 如何利用C#实现Huffman编码&#xff1f; 的图文中有以下代码。 private List<HuffmanTreeNode> CreateInitForest(string str) {if (string.IsNullOrEmpty(str))throw new ArgumentNullException();List<HuffmanTreeNode> result new List&…

mysql的基本知识

安装&#xff1a;http://www.cnblogs.com/sshoub/p/4321640.html 导库 http://www.cnblogs.com/yuwensong/p/3955834.html 报错&#xff1a;Error was: No module named PIL pip install image转载于:https://www.cnblogs.com/baldermurphy/p/7403778.html

msys下产生dll的导入库

有些时候在只有一个dll的情况下&#xff0c;如果需要隐式链接的话&#xff0c;就需要为该dll产生一个导入库.注意导入库是不能跨编译器使用的&#xff0c;在mingw中导入库需要以.a结尾,而vs则以.lib 以下的方法是在Msys产生mingw及vs 的导入库 , 打开MSys工具 首先生成dll库的d…

零基础小白如何学习好UI设计

智能时代的来临&#xff0c;很多企业都越来越注重用户体验这一块&#xff0c;想要有一个吸引用户的好页面&#xff0c;UI设计师岗位不可或缺&#xff0c;如今越来越多的人想要学习UI设计技术&#xff0c;那么对于零基础小白如何学习好UI设计呢? 零基础小白如何学习好UI设计? …

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

背景 前几天我们介绍了如何使用 BigONE Developer API V2 来获取身份令牌的方法「如何利用BigOne的API制作自动化交易系统 – 身份验证」。一旦获取了身份令牌&#xff0c;我们就可以在网络请求的 header 中加入令牌来获取自己的账户数据&#xff0c;创建买入、卖出订单&#…

『网站升级』PHPWind8.0至8.3升级过程及问题种种回顾录

上星期的PHPWind杭州峰会之后&#xff0c;PHPWind发布了8.3版。紧接着淘连接&#xff0c;淘满意&#xff0c;团购PHPWind的一系统ARP应用开始进入我们公司技术苦力的耳朵里&#xff08;也就是偶&#xff09;&#xff0c;偶知道有大事要发生了。于是乎。领导悠然降至&#xff0c…

新浪 抓取详情页

转载于:https://www.cnblogs.com/tian-sun/p/7404493.html

零基础如何学习软件测试

很多人想学软件测试是因为软件测试是进入到IT行业里比较快的一门技术&#xff0c;软件测试的门槛比较低&#xff0c;初学者和零基础小白学起来都是比较容易的&#xff0c;下面小编就详细的给大家介绍一下具体零基础如何学习软件测试? 零基础如何学习软件测试?对于初级测试而言…

VPS使用初体验

很早就想建个人网站&#xff0c;但是出于各种限制&#xff0c;一直没有实施。前几天开通了网银&#xff0c;便再次萌发了建站的想法。。。 购买一个了enom的域名&#xff0c;然后寻找比较好的虚拟主机&#xff0c;发现ubuntuchina上有个卖vps的&#xff0c;价格还行&#xff0c…

LeetCode实战:相同的树

题目英文 Given two binary trees, write a function to check if they are the same or not. Two binary trees are considered the same if they are structurally identical and the nodes have the same value. Example 1: Input: 1 1/ \ / \2 3 …

mysql数据库常用命令

登录&#xff1a; mysql -h 服务器地址 -u 登录名 -P 端口 -p 密码 &#xff08;登录时最好先不输入密码&#xff0c;等下一条提示出来之后再输&#xff0c;这样可以在界面中隐藏密码&#xff09; 退出&#xff1a; quit 或者 exit 注意&#xff1a;登录数据库系统后&#xff0…

Java入门学习注意事项有哪些?

想要学好java技术&#xff0c;做好学习规划路线和注意事项是非常重要的&#xff0c;尤其是零基础学员&#xff0c;Java涉及到的知识点非常多&#xff0c;我们需要制定合理的Java学习路线图&#xff0c;这样会事半功倍&#xff0c;下面小编和大家总结一下Java入门学习注意事项有…

在Hibernate中处理批量更新和批量删除

批量更新是指在一个事务中更新大批量数据&#xff0c;批量删除是指在一个事务中删除大批量数据。以下程序直接通过Hibernate API批量更新CUSTOMERS表中年龄大于零的所有记录的AGE字段&#xff1a; 如果CUSTOMERS表中有1万条年龄大于零的记录&#xff0c;那么Session的find()方法…

LeetCode实战:对称二叉树

题目英文 Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For example, this binary tree [1,2,2,3,4,4,3] is symmetric: 1/ \2 2/ \ / \ 3 4 4 3But the following [1,2,2,null,3,null,3] is not: 1/ \2 2\ \3 …

flannel 概述 - 每天5分钟玩转 Docker 容器技术(58)

2019独角兽企业重金招聘Python工程师标准>>> flannel 是 CoreOS 开发的容器网络解决方案。flannel 为每个 host 分配一个 subnet&#xff0c;容器从此 subnet 中分配 IP&#xff0c;这些 IP 可以在 host 间路由&#xff0c;容器间无需 NAT 和 port mapping 就可以跨…

Python如何实现穷举搜索?

穷举搜索就是在整个搜索空间范围内尝试每一种可能性&#xff0c;直到找到目标值或者整个搜索空间都找完也没有找到目标值。最常见的穷举搜索就是线性搜索&#xff0c;即按照顺序简单检查所有不同的可能性。 例如&#xff1a;2个警察追逐强盗到了一个废弃旅馆的二楼走廊&#xf…

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

背景 前面几天&#xff0c;我们一起封装了 BigONE 提供的“身份验证”与“资产账户”部分的 API。 如何利用BigOne的API制作自动化交易系统 – 身份验证如何利用BigOne的API制作自动化交易系统 – 获取账户资产 现在&#xff0c;离搭建咱们的自动化交易系统更近一步了。 本…