Rss & SiteMap

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

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

标题:IF NOT(ISLASTBAR) THEN EXIT;对ATR的影响

1楼
拈花逐影 发表于:2010/3/5 11:39:30

我在程序中使用了TR,和ATR,发现如果在程序第一行使用了IF NOT(ISLASTBAR) THEN EXIT;结果完全不一样。

代码为

TR2:= MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:= MA(TR2,14);


使用IF NOT(ISLASTBAR) THEN EXIT;

则结果

2010-03-05 11:26:08.921    SRY01 ATR=1238.1
2010-03-05 11:26:08.921    SRY01 TR2=6183.0

 

这显然是错的

不检测ISLASTBAR时结果正常

2010-03-05 11:26:28.468    SRY01 ATR=9.4
2010-03-05 11:26:28.468    SRY01 TR2=6.0

 

 


为什么这样?检测ISLASTBAR还对哪些函数有影响?

2楼
admin 发表于:2010/3/5 11:47:13

请提供完整的测试例子

3楼
拈花逐影 发表于:2010/3/5 11:58:33

TR2:= MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:= MA(TR2,14);

IF NOT(ISLASTBAR) THEN EXIT;

TR2:= MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:= MA(TR2,14);

 

4楼
admin 发表于:2010/3/5 12:01:05

2010-03-05 11:26:28.468    SRY01 ATR=9.4
2010-03-05 11:26:28.468    SRY01 TR2=6.0

 

你的如上打印东西是从什么地方搞到的。

 

TR2:= MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:= MA(TR2,14);

 

IF NOT(ISLASTBAR) THEN EXIT;

 

这样搞可能就对了

5楼
拈花逐影 发表于:2010/3/5 12:07:02

那只是是把变量输出到文件。

 DEBUGFILE('E:\LOGS\两次平仓.txt',STKLABEL&' ATR=%.1f',ATR);
 DEBUGFILE('E:\LOGS\两次平仓.txt',STKLABEL&' TR2=%.1f',TR2);

 

我要问的正是这个。为什么ISLASTBAR有这个影响?照道理没有影响的.

6楼
admin 发表于:2010/3/5 12:14:49

这个问题我们后面仔细差一下

7楼
拈花逐影 发表于:2010/3/5 12:20:49

谢谢。这个问题挺重要的,涉及到程序化交易机制执行的根本问题。希望你们能够尽快解答。

8楼
admin 发表于:2010/3/5 13:08:39

RC:=REF(CLOSE,1);

IF NOT(ISLASTBAR) THEN EXIT;

TR2:= MAX(MAX((HIGH-LOW),ABS(RC-HIGH)),ABS(RC-LOW));
ATR:= MA(TR2,14);

 

这样改好就可以了,因为REF是带有统计性质的函数,对于金字塔的逐周期计算的系统来说,丢掉前面的数据不去统计,将影响后来的数据结果。

此外,这样还将你分别使用两次的函数归纳到一次使用,增加系统的效率

[此贴子已经被作者于2010-3-5 13:13:23编辑过]
9楼
拈花逐影 发表于:2010/3/5 14:09:54
哦,是这样。谢谢。
共9 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.81641 s, 3 queries.