以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 功能教学汇总区 (http://222.73.7.161/bbs/list.asp?boardid=17) ---- 序列模式的运行效率是逐k线模式的10倍 (http://222.73.7.161/bbs/dispbbs.asp?boardid=17&id=172703) |
-- 作者:独孤求败 -- 发布时间:2019/10/30 12:14:13 -- 序列模式的运行效率是逐k线模式的10倍 大家都知道序列模式的运行速度比逐K线快,那么具体能快多少呢?下面我们来做个实验吧! 以AG00白银连续为例进行测试,1分钟数据,5万根K线计算量,测试公式代码如下:
//逐K线模式测试代码 RUNMODE: 0;//逐k线运行模式 if barpos = 1 then 打开图表运行完毕后,关闭图表,然后打开 D:\\2222.TXT文件,看到日志记录如下: 2019-10-29 16:39:05.772 开始 其中后缀的 .772和 .928是毫秒数, 928-772 = 156 ,得出本次逐K线模式运行的总计算时间为156毫秒
下面我们再将公式的运行模式修改为序列模式
//序列模式测试代码 RUNMODE :1;//序列运行模式 打开图表运行完毕后,关闭图表,然后打开 D:\\2222.TXT文件,看到日志记录如下: 2019-10-29 16:46:43.338 开始 以同样的计算方法 352-338=14, 得出本次序列模式运行的总计算时间为14毫秒,比逐K线模式速度提高了10倍! 之所以序列模式会比逐K线有如此高的运行效率,主要是还是序列模式的运行机制觉定的,但是这种运行机制也带来无法从K线的时间序列上做精细控制的缺点,因此序列模式主要还是用来做指标分析,后台程序化等。其实图表程序化中用到的逐K线模式其实也可以用到序列模式的,那就是使用金字塔提供的“用户函数”功能,通过直接引用序列模式的公式来提高逐k公式的运行效率,示例如下: 我们继续以KDJ交易系统为例来说明如何对我们的交易系统进行改进,原来的KDJ交易系统代码如下: RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100; 手数:=ss; 开多平空条件:=CROSS(J,0);//开多平空条件 //交易系统 通过上述公式我们看到,形成KDJ系统的主要算法部分是完全可以单独封装在一个序列公式中的,假设系统自带的KDJ指标就是我们重新封装好的序列公式,那么改进后的代码如下: J:#KDJ.J(N,P1,P2)#,nodraw; 手数:=ss; 开多平空条件:=CROSS(J,0);//开多平空条件 //交易系统 是不是就这么简单?范例代码中的nodraw目的是在图表上输出j值公式线便于调试 有关“用户函数 ”功能,请用户参考软件中的函数帮助 |