金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 2302|回复: 10

vba和pel 速度这样对比正确吗

[复制链接]

6

主题

31

帖子

41

积分

Rank: 4

等级: 专业版

注册:
2022-1-11
曾用名:
发表于 2023-2-2 13:12 | 显示全部楼层 |阅读模式
if islastbar then
begin
MSGOUT(1,'1');
for i:=1 to 5000 do
BEGIN
  ma1:=CU_MA1(c,5);
end;
MSGOUT(1,'2');
for i:=1 to 5000 do
BEGIN
  ma2:=MA(c,5) ;  
end;
MSGOUT(1,'3');
end
都是计算5日平均,一种方法是vba自定义函数,一种是pel自带函数,时间相差18倍
2023/02/02 13:03:30  1
2023/02/02 13:03:48  2
2023/02/02 13:03:49  3
2023/02/02 13:04:02  1
2023/02/02 13:04:21  2
2023/02/02 13:04:22  3
那能否说明  pel实现的指标比  vba实现的指标快10倍以上了

回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2023-2-2 13:49 | 显示全部楼层
是的,本身如果非必要没有必要用vba自定义函数
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

6

主题

31

帖子

41

积分

Rank: 4

等级: 专业版

注册:
2022-1-11
曾用名:
 楼主| 发表于 2023-2-2 14:21 | 显示全部楼层
好像不对
回复

使用道具 举报

6

主题

31

帖子

41

积分

Rank: 4

等级: 专业版

注册:
2022-1-11
曾用名:
 楼主| 发表于 2023-2-2 14:21 | 显示全部楼层
K线数量:barpos,NODRAW;
if islastbar then
begin
MSGOUT(1,'1');
for i:=1 to 5000000 do
BEGIN
  ma1:=CU_MA1(c,5);
end;
MSGOUT(1,'2');
for i:=1 to 5000000 do
BEGIN
  ma2:=fx() ;  //自定义函数  空的
end;
MSGOUT(1,'3');
end


2023/02/02 14:15:33  1
2023/02/02 14:15:37  2
2023/02/02 14:15:39  3
2023/02/02 14:15:48  1
2023/02/02 14:15:51  2
2023/02/02 14:15:53  3
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2023-2-2 14:39 | 显示全部楼层
请问哪里不对??
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

6

主题

31

帖子

41

积分

Rank: 4

等级: 专业版

注册:
2022-1-11
曾用名:
 楼主| 发表于 2023-2-2 15:02 | 显示全部楼层
我也在用不同方法确定
回复

使用道具 举报

6

主题

31

帖子

41

积分

Rank: 4

等级: 专业版

注册:
2022-1-11
曾用名:
 楼主| 发表于 2023-2-2 15:35 | 显示全部楼层
公式 Formula2
fc:=close;  
ma2:=c;
for  i=5  to  datacount  do
begin
a:= (ma2[i]+ma2[i-1]+ma2[i-2]+ma2[i-3]+ma2[i-4]);
fc[i]:a/5;
end;
Formula2 供下面测试引用


公式   速度测试
K线数量:barpos,NODRAW;
if islastbar then
begin
MSGOUT(1,'1');
for i:=1 to 50000 do
BEGIN
  ma1:=CU_MA1(c,5);
end;
MSGOUT(1,'2');
for i:=1 to 5000 do
BEGIN
ma2:=#Formula2.fx#;
end;
MSGOUT(1,'3');
end

2023/02/02 15:34:28  1
2023/02/02 15:34:28  2
2023/02/02 15:34:36  3
2023/02/02 15:34:37  1
2023/02/02 15:34:37  2
2023/02/02 15:34:45  3
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2023-2-2 17:11 | 显示全部楼层
用函数调用的模式,也比较慢?
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

6

主题

31

帖子

41

积分

Rank: 4

等级: 专业版

注册:
2022-1-11
曾用名:
 楼主| 发表于 2023-2-2 17:42 | 显示全部楼层
是不是  在pel里面用循环实现的逻辑功能  相对于  在VBA里用循环实现的逻辑功能    速度慢。 有点拗口
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2023-2-2 19:58 | 显示全部楼层
直接用pel是更快的,类似ma函数都是软件内部用C去实现的,是否有一些加速算法犹未可知
你自己自定义的通过vba方式本身就不一样,中间包括多语言传递以及vba自身效率等等等

所以如非必要,没有必要去做这种来回传递,用系统已经封装好的肯定是更快捷的
而且pel效率本身对绝大部分使用者都是足够的

金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2024-11-16 06:39 , Processed in 0.269259 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表