AT学习报告一 软件的初步使用

来源:互联网 发布:2018开淘宝店挣钱吗 编辑:程序博客网 时间:2024/06/12 19:28

AT 学习报告一·软件的初步使用

首先,表达一下我的歉意。说好周末交的学习报告却推迟到了国庆假期。

接下来,话入正题。这是我的第一篇学习报告。主要是关于新回测结构的四个本地例子的学习笔记。这一篇学习报告主要是学习如何使用 AT 对这些策略本身以及策略代码编写是否合理可靠暂不研究。

CSDN 中 mermaid 似乎不能正常显示的,请见谅

对 AT 回测的认识

目前,我仅接触到用 AT 进行回测。下面谈谈我对 AT 回测的认识。
在 AT 中实现对一个策略的回测由两部分构成。

  • 一是编写一个策略回测的配置脚本,在该脚本中,配置回测的标的,主函数所需要的自定义参数,滑点,祝初始资金等,一系列的内容。最后,通过调用 traderRunBacktestV2 函数还实现回测。
  • 编写策略逻辑主函数。这是整个策略的核心部分。
    该函数的运行过程如下:
graph TBa(全局变量的声明和自定义变量的获取) --> b(通过 blnit 实现账户初始化);b --> c(启动交易);

其中,账户的初始化部分具体如下:

graph LRb(账户初始化) --> b1(设置并行计算);b --> b2(注册数据);b --> b3(计算信号);b --> b4(定义 container 变量)

其中,交易部分逻辑如下:

graph TBa(开始) --> b[获取账户信息];b --> c{判断是否满足交易条件};c -->|是|d[计算相关指标];c -->|否|a;d --> f[平仓];f --> g[开仓]
  • 作为用户能接触到的 AT 回测只有两部分。但是作为回测而言,绩效的计算是相当重要的。AT 中的绩效指标的统计模块并未向用户公开。此部分或可改进,或者允许用户自定义。
  • 对于回测而言,信号的事先计算固然能够提高回测速度,但这样的做法是否合理呢?会不会引起一些问题?或者忽略了一些问题?

需要注意的函数

  1. 策略主函数,比如示例中的 turtle。注意到在 traderRunBacktestV2 函数调用 turtle 时,采用的是以句柄的方式调用。这里要注意的数函数的输入参数。虽然说策略主函数,有三个固定参数,即 bInit、bDayBegin 和 cellPar,但这了前两个参数是所谓的固定结构,事实上在用的时候只给第三个参数赋值。关于这个用法我有点疑惑,有待查阅 matlab 的帮助文档查证一下。
  2. traderSetParalMode 设置并行计算的函数,不需要调试时应当设置为 true。
  3. traderRegKData 用于注册数据的函数。

    • 用法:Idx=traderRegKData(KFrequency, KFreNum);
    • 这两个输入参数容易理解,一个是数据频率,另一个是数据的刷新频率。但是这个函数的输出我很好奇,文意来看是下标。帮助文档中没有说明。所幸后面有策略代码,示范了如何使用这返回的参数,要不然实在不明白。
    • 话说这返回的数据长度也有所困惑,在 Aberration 函数中是 10 ,估计在外层已经用了一次用户自定义的参数,所以读取的数据是一定长度,而不是回测时间段内的所以数据,该函数有待进一步研究。
  4. traderGetRegKData 获取已经注册的 K 线数据

    • 用法:OutMatrix = traderGetRegKData(Idx,len,FilledUp,bpPFCell
    • 与 traderRegKData 是固定搭配,因此也不追求上面的函数到底返回了什么。先学会用,后面慢慢体会。

使用经验

  1. 在这里开仓和平仓完成才算一手交易。一开始我很困惑
    这里写图片描述
    作为起始月份,既然交易次数为0,那么毛利毛损从何而来。后来我才明白。
  2. 这里使用了全局变量和 container 等数据类型,来记录重要数据。比如对 openPrice 的引用。若是低版本的 matlab 没有加进这种数据类型那就尴尬了。
  3. 对于 AT 还没有亲自动手编写过策略,目前的认识也是相当初浅。不过通读了几个示例策略,大体明白了该如何使用 AT 编写策略。文中如有错误认识,请勿见怪。下一篇学习报告,将展示我利用 AT 复现策略库上一些代码时的学习体会。

对AT软件的一点建议

说一句老实话 AT 给我的体验并不是太好。这里给出一些我使用时感觉到的问题和建议。

  • 帮助文档一些部分写的并不是太清晰,甚至有错。比如 tradeGetRegKData 函数返回的是一个包含 time open high low close volume turnover openinterest 等字段组成的矩阵,这些字段是按照列排行的,而帮助文档却是说是 N*1 矩阵。matlab 用户一般而言比较习惯使用列排列,我觉得想这些矩阵调整为列排列会更符合习惯。
  • 有时候回测会出错而迟迟不能完成,关闭 AT 软件,重新启动后同样的策略却能快速完成回测。这里写图片描述
    这个问题出现地非常频繁,望赶紧修正有关 bug。
  • 很有意思同样的策略配置,我将回测时间稍做修改。原来是 20160101-20171005 修改为 20161001-2017 但原来总交易次数为120,而修改后总交易次数却为119,然而从1601 到 1610 发生的交易次数绝对大于 1 这另我非常费解。这里写图片描述
  • 可以在帮助文档中增加解释一下绩效指标的计算,因为有些指标的计算方式,各个平台可能不同会导致困惑。甚至还可以增加自定义绩效指标等模块。这有利于使用者进行个性化分析。
  • 这个回测时间的计时,我认为应该从配置脚本开时而不是从具体策略函数开始。对用户而言,直接感受到回测用时是从配置脚本开始的。而由于各种原因,有时候这两者的计时差距不小。如图:这里写图片描述
  • 在 matlab 已经打开的情况下,已经完成一个策略的回测。从 AT 中选中启动脚本,又新开了一个 matlab。希望不要新开一个 matlab,毕竟计算机配置太低,带不动了。
原创粉丝点击