![]() |
在這個頁面顯示本主題全部的 10 個文章 |
奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- 收盤價陣列寫法 (http://www.chiefox.com.tw/bbs/showthread.php?threadid=21190)
收盤價陣列寫法
請問版主:
MAXKBAR:= 1000; //設定運算近期1000根
StPos:=datacount-MAXKBAR+1;
x:=c;
if StPos<1 then StPos:=1;
for i=datacount downto StPos do begin
x[i]:=close[i]; //將每根K棒收盤價存入X陣列中
end;
但是編譯不通過請問怎麼改?
謝謝
回覆: 收盤價陣列寫法
引用:
最初由 一心不亂 發表
請問版主:
MAXKBAR:= 1000; //設定運算近期1000根
StPos:=datacount-MAXKBAR+1;
x:=c;
if StPos<1 then StPos:=1;
for i=datacount downto StPos do begin
x[i]:=close[i]; //將每根K棒收盤價存入X陣列中
end;
但是編譯不通過請問怎麼改?
謝謝
謝謝版主,
這樣改正後自當前K棒算起1000根K棒的收盤價都存在tmp陣列中是嗎?
如果我要調用自當前K棒算起第M根的收盤價是用 y:=datacount-M+1
tmp[Y] 就是我要的收盤價嗎?
引用:
最初由 一心不亂 發表
謝謝版主,
這樣改正後自當前K棒算起1000根K棒的收盤價都存在tmp陣列中是嗎?
如果我要調用自當前K棒算起第M根的收盤價是用 y:=datacount-M+1
tmp[Y] 就是我要的收盤價嗎?
lambda:=100;
MAXKBAR:= 50;
x:h;Z:=0;H4:=0;H1:=0;HH5:=0;HH2:=0;H2:=0;HH3:=0;H3:=0;HB:=0;H5:=0;
a:=x*0;b:=x*0;c1:=x*0;
if datacount>=MAXKBAR then tmp:=SETLBOUND(X,datacount-MAXKBAR+1);
StPos:=DATACOUNT;
a[tmp]:=1.0+lambda;
b[tmp]:=-2.0*lambda;
c1[tmp]:=lambda;
FOR i=tmp to i<StPos-2 do begin
a[i]=6.0*lambda+1.0;
b[i]=-4.0*lambda;
c1[i]=lambda;
end;
a[tmp]:=5.0*lambda+1;
a[StPos-1]:=1.0+lambda;
a[StPos-2]:=5.0+lambda+1.0;
b[StPos-2]:=-2.0+lambda;
b[StPos-1]:=0.0;
c1[StPos-2]:=0.0;
c1[StPos-1]:=0.0;
//Forward
FOR i=tmp to i<StPos do begin
Z:=a[i]-H4*H1-HH5*HH2;
HB:=b[i];
HH1:=H1;
H1:=(HB-H4*H2)/Z;
b[i]:=H1;
HC:=c1[i];
HH2:=H2;
H2:=HC/Z;
c1[i]:=H2;
a[i]:=(x[i]-HH3*HH5-H3*H4)/Z;
HH3:=H3;
H3:=a[i];
H4:=HB-H5*HH1;
HH5:=H5;
H5:=HC;
end;
//BACKWARD
H2:=0;
H1:=a[StPos-1];
y[StPos-1]:=H1;
for i=StPos-2 downto i<=tmp do begin
y[i]:=a[i]-b[i]*H1-c1[i]*H2;
H2:=H1;
H1:=y[i];
end;
partline(1,y);
出現指標數組下標越界或超出有效數據區間
引用:
最初由 一心不亂 發表
lambda:=100;
MAXKBAR:= 50;
x:h;Z:=0;H4:=0;H1:=0;HH5:=0;HH2:=0;H2:=0;HH3:=0;H3:=0;HB:=0;H5:=0;
a:=x*0;b:=x*0;c1:=x*0;
if datacount>=MAXKBAR then tmp:=SETLBOUND(X,datacount-MAXKBAR+1);
StPos:=DATACOUNT;
a[tmp]:=1.0+lambda;
b[tmp]:=-2.0*lambda;
c1[tmp]:=lambda;
FOR i=tmp to i<StPos-2 do begin
a[i]=6.0*lambda+1.0;
b[i]=-4.0*lambda;
c1[i]=lambda;
end;
a[tmp]:=5.0*lambda+1;
a[StPos-1]:=1.0+lambda;
a[StPos-2]:=5.0+lambda+1.0;
b[StPos-2]:=-2.0+lambda;
b[StPos-1]:=0.0;
c1[StPos-2]:=0.0;
c1[StPos-1]:=0.0;
//Forward
FOR i=tmp to i<StPos do begin
Z:=a[i]-H4*H1-HH5*HH2;
HB:=b[i];
HH1:=H1;
H1:=(HB-H4*H2)/Z;
b[i]:=H1;
HC:=c1[i];
HH2:=H2;
H2:=HC/Z;
c1[i]:=H2;
a[i]:=(x[i]-HH3*HH5-H3*H4)/Z;
HH3:=H3;
H3:=a[i];
H4:=HB-H5*HH1;
HH5:=H5;
H5:=HC;
end;
//BACKWARD
H2:=0;
H1:=a[StPos-1];
y[StPos-1]:=H1;
for i=StPos-2 downto i<=tmp do begin
y[i]:=a[i]-b[i]*H1-c1[i]*H2;
H2:=H1;
H1:=y[i];
end;
partline(1,y);
出現指標數組下標越界或超出有效數據區間
我這裡可以編譯通過,附圖是執行時出現的錯誤訊息
引用:
最初由 一心不亂 發表
我這裡可以編譯通過,附圖是執行時出現的錯誤訊息
謝謝總版主幫忙,已經修正上述錯誤,但是還是出現下標越界的問題,雖然再三檢查程式,實在看不出錯在哪裡?還請總版主幫忙除錯一下! 謝謝
引用:
最初由 一心不亂 發表
謝謝總版主幫忙,已經修正上述錯誤,但是還是出現下標越界的問題,雖然再三檢查程式,實在看不出錯在哪裡?還請總版主幫忙除錯一下! 謝謝
全部時間均為台灣時間, 現在時間為20:37 | 在這個頁面顯示本主題全部的 10 個文章 |
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved.