Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共1 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:序列模式的运行效率是逐k线模式的10倍

1楼
独孤求败 发表于:2019/10/30 12:14:13

    大家都知道序列模式的运行速度比逐K线快,那么具体能快多少呢?下面我们来做个实验吧!

    以AG00白银连续为例进行测试,1分钟数据,5万根K线计算量,测试公式代码如下:

 

//逐K线模式测试代码

RUNMODE: 0;//逐k线运行模式

if barpos = 1 then
 DEBUGFILE2('D:\2222.TXT','开始',0,1);
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,P1,1);
D:SMA(K,P2,1);
J:3*K-2*D;
if barpos= DATACOUNT then
 DEBUGFILE2('D:\2222.TXT','结束',0,1);


打开图表运行完毕后,关闭图表,然后打开 D:\2222.TXT文件,看到日志记录如下:

2019-10-29 16:39:05.772    开始
2019-10-29 16:39:05.928    结束

其中后缀的 .772和 .928是毫秒数, 928-772 = 156 ,得出本次逐K线模式运行的总计算时间为156毫秒

 

下面我们再将公式的运行模式修改为序列模式

 

//序列模式测试代码

RUNMODE :1;//序列运行模式
DEBUGFILE('D:\2222.TXT','开始',0);
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,P1,1);
D:SMA(K,P2,1);
J:3*K-2*D;
DEBUGFILE('D:\2222.TXT','结束',0);


打开图表运行完毕后,关闭图表,然后打开 D:\2222.TXT文件,看到日志记录如下:

2019-10-29 16:46:43.338    开始
2019-10-29 16:46:43.352    结束

以同样的计算方法 352-338=14, 得出本次序列模式运行的总计算时间为14毫秒,比逐K线模式速度提高了10倍!


之所以序列模式会比逐K线有如此高的运行效率,主要是还是序列模式的运行机制觉定的,但是这种运行机制也带来无法从K线的时间序列上做精细控制的缺点,因此序列模式主要还是用来做指标分析,后台程序化等。其实图表程序化中用到的逐K线模式其实也可以用到序列模式的,那就是使用金字塔提供的“用户函数”功能,通过直接引用序列模式的公式来提高逐k公式的运行效率,示例如下:

我们继续以KDJ交易系统为例来说明如何对我们的交易系统进行改进,原来的KDJ交易系统代码如下:


RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,P1,1);
D:SMA(K,P2,1);
J:3*K-2*D;

手数:=ss;
//交易条件

开多平空条件:=CROSS(J,0);//开多平空条件
开空平多条件:=CROSS(100,J);//开空平多条件

//交易系统
平空:SELLSHORT(开多平空条件,手数,MARKET);
平多:SELL(开空平多条件,手数,MARKET);
开多:BUY(开多平空条件,手数,MARKET);
开空:BUYSHORT(开空平多条件,手数,MARKET);


通过上述公式我们看到,形成KDJ系统的主要算法部分是完全可以单独封装在一个序列公式中的,假设系统自带的KDJ指标就是我们重新封装好的序列公式,那么改进后的代码如下:


J:#KDJ.J(N,P1,P2)#,nodraw;

手数:=ss;
//交易条件

开多平空条件:=CROSS(J,0);//开多平空条件
开空平多条件:=CROSS(100,J);//开空平多条件

//交易系统
平空:SELLSHORT(开多平空条件,手数,MARKET);
平多:SELL(开空平多条件,手数,MARKET);
开多:BUY(开多平空条件,手数,MARKET);
开空:BUYSHORT(开空平多条件,手数,MARKET);


是不是就这么简单?范例代码中的nodraw目的是在图表上输出j值公式线便于调试

有关“用户函数 ”功能,请用户参考软件中的函数帮助

共1 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in .48438 s, 2 queries.