以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  金字塔软件问题提交  (http://222.73.7.161/bbs/list.asp?boardid=2)
----  BUG反馈  (http://222.73.7.161/bbs/dispbbs.asp?boardid=2&id=342)

--  作者:轮回
--  发布时间:2009/12/2 10:39:29
--  BUG反馈

昨天开始看金字塔的公式编程,发现一些问题.下面贴几个我已经确认的,还有一些极可能有问题但还没具体整理或确认的将在后续逐步发贴.

1.COUNT()函数错误,这个问题很容易发现,直接用说明中的范例验证一下就可以看到.

统计满足条件的周期数。
用法:
COUNT(X,N),统计N周期中满足X条件的周期数,若N=0则从第一个有效值开始。
例如:COUNT(CLOSE>OPEN,20)表示统计20周期内收阳的周期数

2.逻辑判断出现第三者.逻辑判断的结果不是真就是假,这是众所周知的,但在这个DATE<>REFX(DATE,1)的输出结果中出现了-1,出现时机在最后的BAR上,毫无疑问,DATE<>REFX(DATE,1)是求逻辑,逻辑输出不应该有-1.

3.OR逻辑有瑕疵.当两个或以上逻辑或时,只要任意一个为真,结果为真,也就是说只要有一个逻辑为真,就没有必要继续向下判断,这样也有利于提高速度.看下面例子:

IF(ISLASTBAR OR DATE<>REFX(DATE,1),1,0);

当在最后BAR执行时逻辑输出结果为-1,肯定不对。虽然这里也是引用第2个问题的语句,但这里与第2个问题还是有本质区别的,因为在其他方面完全有可能出现一个正确的逻辑与另一有瑕疵的逻辑相或,其结果将溢出或非法,肯定也是不对的。


--  作者:admin
--  发布时间:2009/12/2 10:45:03
--  

COUNT() 函数是具体哪个错误,能否指出?

另外金字塔目前对未来函数支持的不够理想,尤其是REFX函数更是应该避免在程序中出现,我们发现最近几乎所有文华的公式前面都有这个东西,似乎都是一个人写的


--  作者:轮回
--  发布时间:2009/12/2 11:18:15
--  关于后台程式化交易的一个问题:
test:=count(wintrade>0,barpos) / count(wintrade<>0,barpos);
drawnumber(islastbar,h,test,2,colorblue,1);
单独显示count(wintrade>0,barpos)或者count(wintrade<>0,barpos)正常了。但上面这样还不行,昨天连测试范例都一直为0。
上面的REFX()函数,我主要是为了用它在分钟K图上判断隔日分界线,发生在每天最后一根K线上,金字塔有其他好的方法没有?

--  作者:金字塔
--  发布时间:2009/12/2 12:02:10
--  

文华的:

NN1:=BARSLAST(DATE<>REFX(DATE,1));
NN:=MAX(NN1,1);

 

在金字塔中用这一条指令替换

NN:=barslast(DATE<>REF(DATE,1))+1;



--  作者:轮回
--  发布时间:2009/12/2 12:13:00
--  
文华计算当天周期数也是这样用的,但我要在每天最后一根K线统计盈亏和胜率,不是每天开盘第一根统计,况且也不全部是日内单,有隔几天的单子。
--  作者:wtx128153
--  发布时间:2009/12/2 12:17:54
--  
轮回老师来了,高兴!!!
--  作者:admin
--  发布时间:2009/12/2 12:20:10
--  
以下是引用轮回在2009-12-2 11:18:15的发言:
test:=count(wintrade>0,barpos) / count(wintrade<>0,barpos);
drawnumber(islastbar,h,test,2,colorblue,1);
单独显示count(wintrade>0,barpos)或者count(wintrade<>0,barpos)正常了。但上面这样还不行,昨天连测试范例都一直为0。
上面的REFX()函数,我主要是为了用它在分钟K图上判断隔日分界线,发生在每天最后一根K线上,金字塔有其他好的方法没有?

能否给出一个具体可用的公式例子,以便于我们这里运行看到效果,


--  作者:轮回
--  发布时间:2009/12/2 12:22:03
--  
你们也贴不了图,打字很难说清楚啊。
--  作者:admin
--  发布时间:2009/12/2 12:23:08
--  

置顶帖子上有何贴图的说明的

 

test:=count(wintrade>0,barpos) / count(wintrade<>0,barpos);
drawnumber(islastbar,h,test,2,colorblue,1);

这个段代码,你需要告诉我 wintrade 的参数是多少,否则我这里无法运行


--  作者:轮回
--  发布时间:2009/12/2 12:27:48
--  
像1楼所说的2,3两个问题,对于被认为非法的或计算溢出的建议结果全替代为真,这样有利于实盘和测试同步,对实盘特别重要。而对测试又没有什么影响。