Loading ...

BotVS量化学习日记(三)(更新中...)

Author: 小小梦, Created: 2017-06-03 09:29:22, Updated: 2018-03-18 12:26:35

  • 问题1:

    在使用 _N 函数时的一些发现(API 文档 位置如图:)

    img

    img

    _N 就是用来处理浮点数 小数位数的。

    可以先看代码例子:

    function main(){
        var pi = 3.1415926535897;    // 声明一个变量 储存 圆周率, 小数位数13位。
        Log(_N(pi, 4) * 100);        // 当我们使用 _N 函数 保留4位小数后 再 乘以 100 会是什么结果呢?
    }
    

    当我们使用 _N 函数 保留4位小数后 再 乘以 100 会是什么结果呢?

    我开始是认为 _N(pi, 4) 返回的是 3.1415 , 然后乘以 100 等于 314.15

    实际运行结果:

    img

    我明明用了_N 的,为什么还多出来那么多小数位数 ??

    如果想显示为 314.15 ,只能这样写:

    function main(){
        var pi = 3.1415926535897;
        Log(_N(pi * 100, 2));
    }
    

    img

    另外如果 _N 第一个参数传入 字符串 值 可能引起报错:

    测试代码:

    function main(){
        var pi = "3.1415";     // 传入 字符串 3.1415 , 很多时候解析出来的数据没有检查类型,可能会误传入字符串。
        _N(pi, 2);
    }
    

    我真踩过这个坑,解析出的数据是个字符串,然后看以下报错就蒙圈了。

    img

    DEBUG 好一会儿才找到原因,所以还是动手可以掌握更多。


  • 问题2: safari 游览器 下,机器人 运行页面 Log 输出的 日志 显示问题

    经测试,在safari 游览器下, 机器人运行页面中,如果 一次 Log 输出的 内容过多,可能会导致整条 Log 信息 隐藏,显示 空白。测试 chrome 游览器 可以 正常显示。 特此记录。

  • 问题3: 状态栏 刷新问题

    状态栏刷新,也就是 每次调用 API 函数 LogStatus 函数刷新显示内容时,如果当前日志页 不是在 第一页时,会触发查询机制,此时机器人页面状态栏就不会再显示更新。当日志页选择为第一页时 恢复 状态栏 刷新。所以有时当机器人正在运行,查看机器人日志后,发现状态栏不动了,其实并不是机器人卡了,是这个机制引起的。

  • 问题4: 初学时,我直接复制了我感兴趣的代码到我的策略里,发现回测 和 实盘都报错

    例如,这个用户的报错信息:

    实盘:

    img

    回测:

    img

    这2种报错,原因都是使用了未定义的变量

    原因:

    原因是直接复制代码到策略里,有些 策略的参数是在策略的界面参数上设置的。 策略界面参数上设置一个参数变量就相当于在策略代码中声明了一个全局变量 如果仅仅是复制代码 可能代码里面用到的**策略界面的变量(参数)**就会处于未定义状态 所以就报错了,如果想测试别人的策略,最好是复制整个策略。

    比如,这个策略的复制页面(策略广场点击公开类型的策略就会进入):

    点击 “点击复制并在线回测” 按钮, 就是完整的复制 整个策略了。

    img img

  • 问题5:AEX 交易所 API 报错: GetOrders: type assertion to []interface{} failed 。

    该类型错误 可能是由于没有设置 托管者 IP地址 为 交易所 API KEY IP地址白名单 导致的。 添加IP地址为白名单,可以解决该问题。

  • 问题6: 小知识 盯市盈亏 和 浮动盈亏

    期货浮动盈亏,又称为逐笔浮盈,比如你2480买进1手螺纹钢,不管经历了多少个交易日,当前价格为2520,则浮动盈亏为400元,期货浮动盈亏指当前的持仓相对于开仓价的盈亏; 期货盯市盈亏,又叫盯市浮盈,比如你持有1手螺纹钢多单,上一个交易日的结算价为2500,当前的价格为2520,则盯市盈亏为200元,盯市盈亏代表你当前的仓位相对上一个交易日结算价的盈亏情况 。

  • 问题7:

    数值 和 未定义的 变量相加 会输出 Nan, 对象和未定义的对象相加 会输出 undefined.

    function main(){
        var a = 11// {aa : "aa", bb : 12}
        var b = {}
        Log(a + b.c)
    
    }
    
  • 问题8:

    诡异的 报错: TypeError: cannot read property ‘Sleep’ of undefined at main (FILE:103)

      var id2 = e.Sell(ticker.Sell + ticker.Sell * 0.05, 0.1)
    
      var order2 = e.GetOrder(id2)
      Log("order2:", order).
    
      Sleep(2000)               # 103 行, 这里报错。
    

    看了半天 百思不得其解。 最终仔细阅读下发现 Log(“order2:”, order). 这最后碰上去个点 “.” 所以这里记录下 如发些如此诡异的问题, 想想这个场景。

  • 9、机器人和托管者都显示正常,但实际机器人不运作了,日志也没有任何更新,是什么情况?

随便怎么重启,就是没有日志,像定格了一样。

原因:是老的DB3文件达到了25个G 把国外云服务器占爆了

>_< 遇到此类问题 注意检查 托管者所在 电脑 或者服务器 硬盘 和系统状态。

持续更新中…


More

阿龙·马斯克 大赞!