发新话题
打印

请教各位飞狐专家。

请教各位飞狐专家。

下式中的I起点改为1就说下标越界了。俺理解为原因是J变负数了,这种情况怎么办?
谢谢。

===============================================
N:=10;
ZF:=1.15;
A:=0;B:=0;FC:=C;

FOR I=11 TO DATACOUNT DO{I改成1就说下标越界了,试了:LBOUND(X)和SETLBOUND(X,N)也没搞好}
FOR J=I-1 DOWNTO I-N DO
IF FC[I]/FC[J]>=ZF THEN BEGIN
A[I]:I-J;
BREAK;
END;

TOP

FOR J=I-1 DOWNTO I-N DO
FC[J] //单 I<10 J 为小于 1 的值,当然越界了

TOP

引用:
hx817 于 2004-11-21 05:39 PM 写道:
FOR J=I-1 DOWNTO I-N DO
FC[J] //单 I<10 J 为小于 1 的值,当然越界了
hx817专家这个毛病俺知道的,那该怎么改呢?教俺吧!

TOP

平时用贯了分析家,一下子不适应。分析家有隐性循环只要一个循环就行了。没此问题的。找了学习资料没看见。摆脱你啦!
谢谢谢!

================================================
{分析家的}
A:=0;
B:=0;
FOR I=1 TO 4 DO
IF CLOSE/REF(CLOSE,I)>=1.1 THEN BEGIN
A:=I;
BREAK;
END
a;

TOP

你的意思好像是这样吧
复制内容到剪贴板
代码:
A:=0;
B:=0;
fc:=c;
FOR I=1 TO 4 DO
for j=i+1 to DATACOUNT do
IF fc[j]/fc[j-i]>=1.1 THEN BEGIN
A:=I;
BREAK;
END;
a;

TOP

好,谢谢,俺先试试,有不懂再请教。

TOP

专家还要越界?你的算法出来是常量,俺改了下要序列变量。
:(
FOR I=11 TO DATACOUNT DO
FOR J=I-1 DOWNTO I-N DO {难道没有涵数可以设定J最小下标为1吗?}

本贴由 股市骑兵00 于 2004-11-21 20:20 最后编辑

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

TOP

A:=0;
这里 A 是单值了
改为
A:=0*c;

TOP

引用:
hx817 于 2004-11-21 09:31 PM 写道:
A:=0;
这里 A 是单值了
改为
A:=0*c;
晕,俺也是的,老忘了这些初级问题。老给你们前辈添麻烦了。谢谢。

下面的问题请你再说说好吗?
:)
FOR I=11 TO DATACOUNT DO
FOR J=I-1 DOWNTO I-N DO {难道没有涵数可以设定J最小下标为1吗?}

TOP

所属类别: 控制语句  参数数量: 0

对下标对应的数组或序列元素进行取值或赋值
数组下标从1开始直到数据数量
例如:
VARIABLE:VARR1[10]=0,SARR[5]='str';VARR1[1]=VARR1[10];
定义1个含10个元素的数组并进行取值和赋值
又如移动平均线可通过如下循环语句和数组操作实现:
INPUT:N(5,2,500);      //参数申明
VARIABLE:i=0,s=0,VAR1:=C; //变量申明
FOR j=1 TO DATACOUNT DO BEGIN
s:=s+VAR1[j];
IF j>=n THEN BEGIN
  IF j>n THEN
    s:=s-VAR1[j-n];
  MA1[j]:s/n;        //实现MA(C,N)
  i:=0;
END;
END;

TOP

谢谢hx817专家耐心教俺。还没完全看懂,要再想想。辛苦你了。

TOP

定义一个数组即可

TOP

hx817专家没成功,请你再说说好吗。谢谢。
用你的循环方法俺会了,就是想不改变下面循环方式下怎么让它下标不越界?


INPUT:N(10,2,500);
VARIABLE:fc[n]=0,fc[1]=fc[n];A:=0*C;
ZF:=1.15;
fc:=c;

FOR I=1 TO DATACOUNT DO
FOR J=I-1 DOWNTO I-N DO
IF FC[I]/FC[J]>=ZF THEN BEGIN
A[I]:I-J;
BREAK;
END;

TOP

专家。俺也没看仔细,你写的公式和俺的数据不同(开始11天不算)。俺要的是自己写的数据。就是要越界不好,请你再比较一下。谢谢。(h)
==============================================
{俺自己的}
N:=10;
ZF:=1.15;
A:=0*;B:=0;FC:=C;
FOR I=11 TO DATACOUNT DO
FOR J=I-1 DOWNTO I-N DO
IF FC[I]/FC[J]>=ZF THEN BEGIN
A[I]:I-J;
BREAK;
END;
==============================================
{专家的}
N:=10;
ZF:=1.15;
A:=0*C;B:=0;FC:=C;
FOR I=1 TO N DO
FOR J=I+1 TO DATACOUNT DO
IF FC[J]/FC[J-I]>=ZF THEN BEGIN
A[J]:I;
BREAK;
END;
附件: 您所在的用户组无法下载或查看附件

TOP

按照你的意思,不就是这样
复制内容到剪贴板
代码:
N:=10;
ZF:=1.15;
A:=0*c;B:=0;FC:=C;
FOR I=11 TO DATACOUNT DO
FOR J=I-1 DOWNTO I-N DO
IF FC[I]/FC[J]>=ZF THEN BEGIN
A[I]:I-J;
BREAK;
END;

TOP

引用:
hx817 于 2004-11-22 06:04 PM 写道:
按照你的意思,不就是这样
复制内容到剪贴板
代码:
N:=10;
ZF:=1.15;
A:=0*c;B:=0;FC:=C;
FOR I=11 TO DATACOUNT DO
FOR J=I-1 DOWNTO I-N DO
IF FC[I]/FC[J]>=ZF THEN BEGIN
A[I]:I-J;
BREAK;
END;
专家你说的啊!就是俺的有漏洞,要上市11天后才有信号的,俺不满意。
可是改了又要说越界,俺又搞不好,只好来请教你啦!拜脱你啊给俺搞一步到位公式吧。俺也好学学。

本贴由 股市骑兵00 于 2004-11-22 18:20 最后编辑

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

TOP

我不明白你要计算什么呀

如果按照 4 楼的意思可这样写

for i=1 to 4 do a:if(CLOSE/REF(CLOSE,I)>=1.1,i,0);

TOP

引用:
hx817 于 2004-11-23 02:53 PM 写道:
我不明白你要计算什么呀

如果按照 4 楼的意思可这样写

for i=1 to 4 do a:if(CLOSE/REF(CLOSE,I)>=1.1,i,0);
谢谢专家。俺还是说明书再多看看了。麻烦你了。

本贴由 股市骑兵00 于 2004-11-23 15:24 最后编辑

TOP

发新话题