到奇狐勝券首頁 奇狐社區論壇 購買奇狐勝券 試用奇狐勝券
 
論壇首頁 你可以在這裡編輯你的資料,查看短訊,訂閱主題和論壇參數等等 免費會員註冊 會員列表 論壇幫助 論壇日曆 論壇搜索 加入我的最愛 登出論壇  
奇狐社區論壇 : Powered by vBulletin version 2.3.0 奇狐社區論壇 > 指標公式 > 問題交流 > [求救]請問 陣列的問題
  上一主題   下一主題
作者
主題 發表新主題    回覆主題
Gary_007
初級會員

註冊日期: May 2007
來  自: 台北
文章數量: 3

[求救]請問 陣列的問題

我想計算外資成本
構想如下:
第1日金額:=第1日外資持股*第1日DC;
第1日成本:=第1日金額 / 第1日外資持股;

第2日金額:=第2日G1*第2日DC + 第1日成本*(第1日外資持股-第2日G2);
第2日成本:=第2日金額 / (第1日外資持股+G3);

第3日金額:=第3日G1*第3日DC + 第2日成本*(第2日外資持股-第3日G2);
第3日成本:=第3日金額 / (第2日外資持股+G3);

//==========================================
程式如下:
DC:=(H+L+O+2*C)/5;
G1:galdata(1),Colorwhite,Linethick0; CTG2:=DC*G1; //外資買進量
G2:galdata(2),Colorwhite,Linethick0; //外資賣出量
G3:galdata(3),Colorwhite,Linethick0; //外資買賣超

G1:=if((G1=0) and (G2=0) and G3 >0,G3,G1);
G2:=if((G1=0) and (G2=0) and G3 <0,-G3,G2);

外股:FGNDATA(4)/1000,Colorwhite,Linethick0;
外股1:sum(G1-G2,0),Colorwhite,Linethick0;
ck1:barslast(外股 = 外股1),Colorwhite,Linethick0;
ck2:barslast(外股 <> 外股1),Colorwhite,Linethick0;

G1:=if(ck1 =1 and 外股 > 外股1, 外股,G1);
外股1:=sum(G1-G2,0),Colorwhite,Linethick0;
G2:=if(ck2 =1 and 外股 < 外股1, ref(外股,1),G2);
外股1:=sum(G1-G2,0),Colorwhite,Linethick0;
G3:=G1-G2;

金額:DC*0,Colorwhite,Linethick0;
成本:金額/外股,Colorwhite,Linethick0;

for i = lbound(G1) to datacount do begin
金額[i]:=G1[i]*DC[i]+成本[i-1]*(外股[i-1]-G2[i]);
成本[i]:=金額[i]/(外股[i-1]+G3[i]);
end;


可是一直出現如下訊息:
外資10指標數組下標越界或超出有效數據區間

在此求助版主大人, 感恩

__________________
Gary

向版主報告此篇 | 查IP位址
Old Post 2009-11-30 15:01
Gary_007 現在離線 點選這裡查看 Gary_007 的個人資料 點選這裡給 Gary_007 傳送一條短訊 查找更多關於 Gary_007 的文章 增加 Gary_007 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18289

回覆: [求救]請問 陣列的問題

引用:
最初由 Gary_007 發表
我想計算外資成本
構想如下:
第1日金額:=第1日外資持股*第1日DC;
第1日成本:=第1日金額 / 第1日外資持股;

第2日金額:=第2日G1*第2日DC + 第1日成本*(第1日外資持股-第2日G2);
第2日成本:=第2日金額 / (第1日外資持股+G3);

第3日金額:=第3日G1*第3日DC + 第2日成本*(第2日外資持股-第3日G2);
第3日成本:=第3日金額 / (第2日外資持股+G3);

//==========================================
程式如下:
DC:=(H+L+O+2*C)/5;
G1:galdata(1),Colorwhite,Linethick0; CTG2:=DC*G1; //外資買進量
G2:galdata(2),Colorwhite,Linethick0; //外資賣出量
G3:galdata(3),Colorwhite,Linethick0; //外資買賣超

G1:=if((G1=0) and (G2=0) and G3 >0,G3,G1);
G2:=if((G1=0) and (G2=0) and G3 <0,-G3,G2);

外股:FGNDATA(4)/1000,Colorwhite,Linethick0;
外股1:sum(G1-G2,0),Colorwhite,Linethick0;
ck1:barslast(外股 = 外股1),Colorwhite,Linethick0;
ck2:barslast(外股 <> 外股1),Colorwhite,Linethick0;

G1:=if(ck1 =1 and 外股 > 外股1, 外股,G1);
外股1:=sum(G1-G2,0),Colorwhite,Linethick0;
G2:=if(ck2 =1 and 外股 < 外股1, ref(外股,1),G2);
外股1:=sum(G1-G2,0),Colorwhite,Linethick0;
G3:=G1-G2;

金額:DC*0,Colorwhite,Linethick0;
成本:金額/外股,Colorwhite,Linethick0;

for i = lbound(G1) to datacount do begin
金額[i]:=G1[i]*DC[i]+成本[i-1]*(外股[i-1]-G2[i]);
成本[i]:=金額[i]/(外股[i-1]+G3[i]);
end;


可是一直出現如下訊息:
外資10指標數組下標越界或超出有效數據區間

在此求助版主大人, 感恩



問題可能在於

剛好沒有 外股 = 外股1 的這種情況
此時 barslast(外股 = 外股1) 會傳回一個無效數列
讓 ck1 和 G1 也成為無效數列
而 lbound(G1) 為零, 讓 i 第一次跑為零值
變數[i] ==> 變數[0] , 如此就會導致下標越界

向版主報告此篇 | 查IP位址
Old Post 2009-11-30 17:13
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
Gary_007
初級會員

註冊日期: May 2007
來  自: 台北
文章數量: 3

好快喔

那我該如何修正 ㄚ

__________________
Gary

向版主報告此篇 | 查IP位址
Old Post 2009-11-30 17:20
Gary_007 現在離線 點選這裡查看 Gary_007 的個人資料 點選這裡給 Gary_007 傳送一條短訊 查找更多關於 Gary_007 的文章 增加 Gary_007 至你的好友列表 編輯/刪除訊息 引用回覆
Gary_007
初級會員

註冊日期: May 2007
來  自: 台北
文章數量: 3

版主大大

確實是 ck1 是無效數列ㄝ
我再努力試試看

感恩

__________________
Gary

向版主報告此篇 | 查IP位址
Old Post 2009-11-30 17:24
Gary_007 現在離線 點選這裡查看 Gary_007 的個人資料 點選這裡給 Gary_007 傳送一條短訊 查找更多關於 Gary_007 的文章 增加 Gary_007 至你的好友列表 編輯/刪除訊息 引用回覆
全部時間均為台灣時間, 現在時間為00:40 發表新主題    回覆主題
  上一主題   下一主題
顯示可列印版本 | 訂閱此主題

論壇跳轉:
主題評分:

論壇規定:
你不可以發表新主題
你不可以回覆文章
你不可以上傳附件
你不可以編輯自己的文章
HTML語法禁止
vB 語法核准
表情符號核准
貼圖語法[IMG]核准
 

本站所有內容未經作者授權禁止轉貼節錄, 發表言論僅供參考勿作為投資決策依據。瀏覽本站請使用 IE 5.5 以上版本, 最佳瀏覽解析度 1024 x 768 全彩。

Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.

簡愛洋行 製作 Copyright 2003-. All Rights Reserved.  聯絡我們