设为首页收藏本站

 找回密码
 注册
查看: 4793|回复: 4
打印 上一主题 下一主题

关于快速求和SummationFC用户函数的请教 [复制链接]

Rank: 2

精华
0
UID
2712
积分
77
帖子
9
主题
4
阅读权限
30
注册时间
2008-11-2
最后登录
2019-3-30
跳转到指定楼层
1#
发表于 2008-11-4 12:46:43 |只看该作者 |倒序浏览
  1. Summation
  2. Params
  3.         NumericSeries Price(1);
  4.         Numeric Length(10);
  5. Vars
  6.         Numeric SumValue(0);
  7.         Numeric i;
  8. Begin
  9.         If (CurrentBar >= Length-1)
  10.         {
  11.                 for i = 0 to Length - 1
  12.                 {
  13.                         SumValue = SumValue + Price[i];
  14.                 }
  15.         }Else
  16.         {
  17.                 SumValue = InvalidNumeric;
  18.         }
  19.         Return SumValue;
  20. End
复制代码
  1. SummationFC
  2. Params
  3.         NumericSeries Price(1);
  4.         Numeric Length(10);
  5. Vars
  6.         NumericSeries SumValue(0);
  7.         Numeric i;
  8. Begin
  9.         If ( CurrentBar < Length || Price[Length] == InvalidNumeric || SumValue[1] == InvalidNumeric )
  10.         {
  11.                 for i = 0 to Length - 1
  12.                 {
  13.                         SumValue = SumValue + Price[i];
  14.                 }
  15.         }Else
  16.         {
  17.                 SumValue = SumValue[1] + Price - Price[Length] ;
  18.         }
  19.         Return SumValue;
  20. End
复制代码

我的测试代码
  1. Begin
  2.     FileAppend("D:\\TB\\TB.TXT","bar"+Text(CurrentBar)+": "+Text(SummationFC(CLOSE,10)));
  3. End
复制代码

根据上面测试代码
例如有15个BAR
  1. Bar                      0          1          2          3         4          5          6          7         8             9        10        11        12        13        14        
  2. Price                    10        11        12        13        14        15        16        17        18          19        20        21        22        23        24        
  3. 实际返回的结果
  4. Summation           N/A       N/A      N/A      N/A      N/A      N/A       N/A       N/A      N/A        145      155     165      175      185        195      
  5. SummationFC        N/A       N/A      N/A      N/A      N/A      N/A       N/A       N/A      N/A        145      155     165      175      185        195        
  6. 我理解应该返回的结果
  7. SummationFC        10        21        33        46        60        75        91        108        126       145      155     165      175      185        195        
复制代码


按我对Summation和SummationFC用户函数的理解,Summation运行结果是没有问题的,但SummationFC对每个BAR序列都累计了从BAR首到当前BAR的Price值,赋值给了SumValue,并且返回SumValue值,应该运行结果每个BAR都有合计值呀,怎么前9个返回的是N/A呢?
请教大家啦,谢谢!

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
2#
发表于 2008-11-4 15:03:24 |只看该作者
虽然循环了,但取到的值是无效值,无效值做运算,结果还是无效值。

使用道具 举报

Rank: 2

精华
0
UID
2712
积分
77
帖子
9
主题
4
阅读权限
30
注册时间
2008-11-2
最后登录
2019-3-30
3#
发表于 2008-11-4 16:25:32 |只看该作者
  1. for i = 0 to Length - 1
  2.                 {
  3.                         SumValue = SumValue + Price[i];
  4.                 }
复制代码


这个语句里面Price的取值应该是有效的呀,
例如:
bar=0,SumValue=0+Price[0]+......+Price[9],其中Price[0]=10有效,其他无效,SumValue=10
bar=1,SumValue=0+Price[0]+......+Price[9],其中Price[0]=11和Price[1]=10有效,SumValue=21
bar=2,SumValue=0+Price[0]+......+Price[9],其中Price[0]=12、Price[1]=11和Price[2]=10有效,SumValue=33
......以此类推,最后返回的SumValue不就是含有效值的吗?
我是哪里理解错误了吗?谢谢管理员!

使用道具 举报

Rank: 2

精华
0
UID
2712
积分
77
帖子
9
主题
4
阅读权限
30
注册时间
2008-11-2
最后登录
2019-3-30
4#
发表于 2008-11-4 16:26:55 |只看该作者
哦,我明白了,是否是“无效值=有效值+无效值”?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
5#
发表于 2008-11-4 17:05:44 |只看该作者
原帖由 jzzqwhw 于 2008-11-4 16:26 发表
哦,我明白了,是否是“无效值=有效值+无效值”?


正解

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-4 16:44

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部