发新话题
打印

请教南客朋友,求得一个数据

请教南客朋友,求得一个数据

我要求得一个数据,   X=(REF(X,1)+C)/2;

假定某一支股票,从它上市第一天开始计算。
因为第一天没有REF(X,1),用X=(C+O)/2来替代。

假定第一天C=10,O=8,则第一天的X=(10+8)/2=9,
第二天C=12,X=(REF(X,1)+C)/2=(9+12)/2=10.5,
第三天C=14,X=(REF(X,1)+C)/2=(10.5+14)/2=12.25,
第四天C=16,X=(REF(X,1)+C)/2=(12.25+16)/2=14.125,
以后以此類推。

实际上就是用X来替代O,(因为第一天没有REF(X,1),则O=X)请教如何把数据转换过来,我对控制语句函数实在是一窍不通。谢谢!
附件: 您所在的用户组无法下载或查看附件

TOP

实际上是个递归函数,可用:

别名: 移动平均
所属类别: 引用函数  参数数量: 3

求移动平均。
用法:
SMA(X,N,M),求X的N日移动平均,M为权重。
算法:
若Y=SMA(X,N,M) 则 Y=(M*X+(N-M)*Y')/N, 其中Y'表示上一周期Y值,N必须大于M。
例如:
SMA(CLOSE,20,1)
表示求20日移动平均价

TOP

非也,我是求一个X=(REF(X,1)+C)/2的数据,不是求N日内的平均,。

TOP

不,我想你没有看懂这个函数的说明。函数里说的是移动平均,其实本身是个递归函数,每日的数值都跟都于前面所有数据相关。

TOP

表达式有了,直接用 x 替换 o 来画 K 线
复制内容到剪贴板
代码:
x:if(BARPOS=1,(C+O)/2,(REF(X,1)+C)/2);

TOP

谢谢两位朋友的帮助,但是未能满足要求,我是想编写一个操盘线的指标,计算的方式如上所述,请看图。

本贴由 cwy 于 2004-8-18 14:03 最后编辑

附件: 您所在的用户组无法下载或查看附件

TOP

哪里不对呢?
按照你的计算思路是这样的呀

TOP

因为第一天的X是从(C+O)/2而来的,所以REF(X,1)就是上一天的(C+O)/2,画操盘线的规则是,第一天只能从C----O处画线,第二天从第一天的X----C处画线,第三天开始从第二天的(X+C)/2----C处画线,以后以此類推,请看图。
附件: 您所在的用户组无法下载或查看附件

TOP

是呀
x:if(BARPOS=1,(C+O)/2,(REF(X,1)+C)/2);
表示,
如果是第一根K线,那么 x=(c+o)/2
否则 x=(ref(x,1)+c)/2

TOP

哦,计算值不对,这样
复制内容到剪贴板
代码:
fc:=CLOSE;fo:=OPEN;
for i=1 to DATACOUNT do begin
  if i=1 then x[i]:=(fc[i]+fo[i])/2;
  if i>1 then x[i]:=(x[i-1]+fc[i])/2;
end;
x;

TOP

OK,完全正确,谢谢版主的热情帮助!
再冒昧的求助版主,此段源码较短(可能说外行话了),麻烦您能否把您的源码仔细地解释一下,是怎么把它转换过来的。
因为我从小家境贫寒,读书只到小学五年级。我对越是难的东西越感兴趣,有关的书我也看过一些,一知半解。对控制语句类的函数实在不能理解,无与似天书一般,常常是心有余而力不足,不理解就不能加以实践。期盼能得到您的指教,谢谢!

本贴由 cwy 于 2004-8-18 19:10 最后编辑

附件: 您所在的用户组无法下载或查看附件

TOP

002022
附件: 您所在的用户组无法下载或查看附件

TOP

复制内容到剪贴板
代码:
fc:=CLOSE;//收盘价赋值给 fc ,为数组准备
fo:=OPEN;//同上
for i=1 to DATACOUNT do begin //循环从 1 到最后一个 K 线
  if i=1 then x[i]:=(fc[i]+fo[i])/2; //判断是否第一根 K 线,如果是,处理第一个数据,即 x[1]=(fc[1]+fo[1])/2=第一个收盘价+开票价除2
  if i>1 then x[i]:=(x[i-1]+fc[i])/2;//除了第一根 K 线以后的算法
end;
x;//所有数据计算后在 x[i] 的数组,就是 x 的序列变量

TOP

谢谢版主的热情帮助,这么仔细地解释,我能看懂理解与消化吸收,以后可以练习与应用,慢慢来,积少成多,到时再向您请教,谢谢!

TOP

请教版主,[i-1]中的-1是表示什么意思?(是减去第一根K线吗?)谢谢!

TOP

当 i=2 时
if i>1 then x[i]:=(x[i-1]+fc[i])/2;
就是 x[2]=(x(1)+fc[2])/2
i-1 就是取前一个数据

TOP

谢谢版主的解释,谢谢!

TOP

xie!

TOP

支持

TOP

发新话题