背景

前几天我们介绍了如何使用 BigONE Developer API V2 来获取身份令牌的方法「如何利用BigOne的API制作自动化交易系统 – 身份验证」。一旦获取了身份令牌,我们就可以在网络请求的 header 中加入令牌来获取自己的账户数据,创建买入、卖出订单,撤销未成交的订单,查询订单状态等,为自己的自动化交易系统搭建底层框架。

有人会问,如果做高频交易这个接口是否满足要求呢?我们来看文档说明:

  • 针对每个独立IP访问限额为: 每5秒钟/500次请求。
  • 针对每个用户账号访问限额为:每小时/2000次请求。

BigONE Developer API V2 每秒钟可以处理大约100次请求,对普通的交易系统应该够用了,我最近利用网格交易法做自动化交易,30秒轮询一遍订单状态,每天平均能有两笔成交,跟预期的差不多。

上次解决了身份验证的问题,本次向大家介绍如何实现账户资产的查询问题。


技术分析

我们先看一下文档中关于账户资产Account的数据结构

  • asset_uuid:表示资产的通用唯一识别码(Universally Unique Identifier,uuid)。
  • balance:账户余额
  • locked_balance:冻结的账户余额

调用 API 返回的结构与文档给出的结构有所出入,除了该三项属性之外,还有一项 asset_id 属性,表示资产的标示,如我们常见的BTCEHTUSDTONE等等。

我们再看一下文档中获取资产的 API

通过该 API 可以获得自己账户中所有资产的集合。


代码实现

Step1:构造账户资产的结构 AccountItem

public class AccountItem
{// 资产标识public string asset_id { get; set; }// 通用唯一识别码(Universally Unique Identifier)的缩写public string asset_uuid { get; set; }// 账户余额public string balance { get; set; }// 冻结的账户余额public string locked_balance { get; set; }//格式化输出public override string ToString(){string result = "asset_id:" + asset_id + ","+ "balance:" + balance + ","+ "locked_balance:" + locked_balance;return result;}
}

Step2:构造网络请求发生错误时接收信息的结构 Errors

public class Errors
{public string message { get; set; }public string code { get; set; }
}

下图列举了部分错误信息以及对应的编码:

Step3:构造接收账户资产的结构 Account

public class Account
{// 资产元素的集合public List<AccountItem> data { get; set; }// 错误信息public List<Errors> errors { get; set; }
}

Account由两部分组成:

  • 第一部分是关于账户资产的集合 List<AccountItem> data,即获取账户中所有的数字货币以及这些数字货币的数量信息。
  • 第二部分是接收网络请求发生错误后返回的错误信息List<Errors> errors

Step4:获取账户全部资产的方法 GetAccount

private string ApiEntryPoint = "https://big.one/api/v2/";private static Account GetAccount()
{string url = ApiEntryPoint + "viewer/accounts";try{HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;if (request != null){request.Method = "GET";string token = "Bearer " + GetToken();request.Headers.Add("authorization", token);ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;IHtmlDocument document = new JumonyParser().LoadDocument(request.GetResponse());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();return serializer.Deserialize<Account>(jsonReader);}return null;}catch (Exception ex){throw new Exception(ex.Message);}
}

Step5:获取账户指定资产的方法 GetAccount

public static List<AccountItem> GetAccount(string[] assetId)
{List<AccountItem> lst = GetAccount().data;List<AccountItem> result = new List<AccountItem>();if (lst == null)return result;for (int i = 0, len = assetId.Length; i < len; i++){List<AccountItem> temp = lst.Where(a =>string.Equals(a.asset_id, assetId[i],StringComparison.CurrentCultureIgnoreCase)).ToList();if (temp.Count != 0){result.AddRange(temp);}}return result;
}

Step6:使用方法举例

string info = @"账户余额数据:" + Environment.NewLine;string[] strs = new string[] {"ONE", "USDT", "BTC"};
List<AccountItem> lstAccount = GetAccount(strs);for (int i = 0, len = lstAccount.Count; i < len; i++)
{info += lstAccount[i] + Environment.NewLine;
}Console.WriteLine(info);
Console.WriteLine(@"------------------");

以上代码演示了获取自己账户中 ONEUSDTBTC 数量的方法。这里主要是介绍自动化交易系统的代码实现而非显摆自己的账户余额,我就不贴 BigONE 的余额啦,见谅!(其实是穷!!)


总结

到此为止,获取账户资产余额的方法就介绍完毕了。通过该方法可以得到自己账户中各项资产的余额,下篇图文是有关订单API的封装,订单搞定之后就可以尝试着验证自己的交易策略了。

今天就到这里吧!如果大家对自动化交易感兴趣,我们可以一起来完善该交易系统。欢迎与我联系啊,See You!


相关图文

  • 数字货币 One 的投资价值分析
  • 赚钱是刚需,如何正确的交易股票?
  • 我们能否效仿李笑来的投资策略?
  • 如何利用 C# 爬取 One 的交易数据?
  • 如何利用 C# 爬取 One 持有者返利数据?
  • 如何利用 C# 爬取BigOne交易所的公告?
  • 如何利用 C# 爬取Gate.io交易所的公告?
  • 如何利用 C# 爬取带 Token 验证的网站数据?
  • 如何利用 C# 开发「股票数据分析软件」(上)
  • 如何利用 C# 开发「股票数据分析软件」(中)
  • 如何利用 C# 开发「股票数据分析软件」(下)
  • 如何利用 C# 爬取「财报说」中的股票数据?
  • 如何利用BigOne的API制作自动化交易系统 – 身份验证

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

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

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

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

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

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

    背景 最近,自己在技术精进方向上有所犹豫,是往"网络渗透"的方向走呢?还是往"量化交易"的方向走? 如果选择精进"网络渗透",就需要学习各种 ...

  4. php新浪获取ip接口,【php】利用新浪api接口与php获取远程数据的步骤,获取IP地址,并获取相应的IP归属地...

    [php]利用新浪api接口与php获取远程数据的方法,获取IP地址,并获取相应的IP归属地 本文与<[Servlet]Javaweb中,利用新浪api接口,获取IP地址,并获取相应的IP归属地 ...

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

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

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

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

  7. php查询ip归属地api接口_【php】利用新浪api接口与php获取远程数据的方法,获取IP地址,并获取相应的IP归属地...

    本文与<[Servlet]Javaweb中,利用新浪api接口,获取IP地址,并获取相应的IP归属地>(点击打开链接)为姊妹篇,只是后端编程语言换成了php. 做出同样的效果,打开页面,得 ...

  8. 【REACT NATIVE 系列教程之十三】利用LISTVIEW与TEXTINPUT制作聊天/对话框获取组件实例常用的两种方式...

    本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/react-native/2346.html ...

  9. 技术图文:如何进行代码的重构?以封装 BigOne API 为例

    背景 自从把"量化交易"作为自己精进的技术方向之后,我做了一些准备工作. 比如: 1. 爬取交易所的公告,根据公告的信息来研判数字货币的短期走势. 这里面有一个"流动性溢 ...

最新文章

  1. SAP Spartacus Org Unit明细页面的工具栏按钮设计
  2. java正则表达式验证密码_最新密码验证正则表达式
  3. 计算机科学和建筑设计结合,智能化建筑中计算机科学与技术的应用
  4. 几个多字节和UNICODE及UTF-8之间相互转化的函数
  5. shell习题第22题:
  6. 2018.5.15Html标签初学
  7. 都说 NoSQL 比 SQL 强,一文揭密 NoSQL 到底有多强!
  8. 马斯克神经网络转换器_通过转换数据来减少人工神经网络的复杂性
  9. 贪吃蛇c语言代码 链表,链表贪吃蛇 附代码
  10. Java输出100以内质数
  11. 【逗老师带你学IT】Yeastar PSTN网关对接FreePBX网关的各种坑-国内VOIP发展感叹
  12. 进行网络广告策划时需要遵循哪些原则呢?
  13. java 动态定时提醒_java实现定时提醒功能
  14. GEE-Scholars MODIS地表温度LST时间变化趋势
  15. 迅雷链基于智能硬件的DPoA共识机制介绍
  16. 【Java】Java基础
  17. Delphi - 对象构造和vmt系列
  18. 从ADS到RealView MDK
  19. Bat文件闪退_启动失败
  20. 电商快递物流的电子面单打印接口API案例代码

热门文章

  1. 树莓派实现人脸识别需要做的那些事
  2. 什么叫PMP?项目管理的本质是什么?
  3. UI设计培训:UI构思创意技巧和方法
  4. 12 Java面向对象之多态
  5. python - 字符串的格式化输出
  6. Spring《五》集合的注入方式
  7. ZeroMq实现跨线程通信
  8. 谁登录了你的linux
  9. MySQL基础day03_数据的导入、导出-MySQL 5.6
  10. 从1.5K到18K 一个程序员的5年成长之路(二)