加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

虚拟货币自动化交易之路(四)

(2014-10-10 19:24:51)
标签:

股票

it

杂谈

分类: 程序
Botvs平台API简介:
 平台的API文档已经有全面的介绍,本文主要写一点自己的理解。
 交易所常量,exchange,默认的主交易所,如果添加了多个交易所exchange也等同于exchanges[0]。
 record的数据结构即是K线,通过GetRecords()返回,周期在添加策略时选定。默认的长度为60(?),records.length-1为最近的一根K线。Trade也类似。
Depth市场深度,由GetDepth()函数返回。Asks为卖单数组,Asks【0】为卖一单。Bids为买单数组,Bids[0]为买一单。其中Asks和原来的版本不同。这个曾经给我带来了极大的困惑,使我的结果在另一台电脑上运行处的结果不同。
另外,当调用交易所函数时,一定要做好重试,否则由于网络错误会直接导致程序中断。常见的重试方法:
function GetOrders() {
    var orders = null;
    while (!(orders = exchange.GetOrders())) {
        Sleep(1000);
    }
    return orders;
  }
 这样相当于重新写了GetOrders()方法,相当于exchange.GetOrders()。即使一次网络失败,还会循环重试直至成功。
 多个交易所时如:
function GetTicker(e) {
    if (typeof(e) == 'undefined') {
        e = exchange;
    }
    var ticker;
    while (!(ticker = e.GetTicker())) {
        Sleep(1000);
    }
    return ticker;
 }
参数e即为所需交易所。
就算你做好了重试,但会发生API网络连接错误,尤其是交易高峰期,常常会卡的几分钟API无法使用。没有任何办法。火币,OKcoin均会出现网络连接错误,貌似火币更甚,最近才有所改善。
本来想写多一点,但想想没必要,只要认真研究Zero大神编写的模板,会很快掌握编写的技巧,大神的程序没有一点多余,搞清楚每一行的意义对我的启发很大。关键还是采取什么策略。
Ps:上面两个代码例子来自Zero。


 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有