![]() |
在這個頁面顯示本主題全部的 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=18072)
動態行情
版主您好:
在以下的程式可取得特定板塊中每支股票今日的漲跌幅
for i= 1 to STKCOUNT(UseBlk) do begin
UseStk:=STKFROMBLK(UseBlk,i);
漲跌幅:=DYNAINFO2(14,UseStk)*100;
end
但由於是用DYNAINFO,所以是動態行情沒有歷史資料,所以我將其改成非動態行情 : 漲跌幅:= "UseStk$Close" - Ref("UseStk$Close",1) 但一直語法錯誤,所以請問是否有可以解決的方法。
謝謝
回覆: 動態行情
引用:
最初由 Touareg_Smart 發表
版主您好:
在以下的程式可取得特定板塊中每支股票今日的漲跌幅
for i= 1 to STKCOUNT(UseBlk) do begin
UseStk:=STKFROMBLK(UseBlk,i);
漲跌幅:=DYNAINFO2(14,UseStk)*100;
end
但由於是用DYNAINFO,所以是動態行情沒有歷史資料,所以我將其改成非動態行情 : 漲跌幅:= "UseStk$Close" - Ref("UseStk$Close",1) 但一直語法錯誤,所以請問是否有可以解決的方法。
謝謝
回覆: 回覆: 動態行情
引用:
最初由 cgjj 發表
原作法存在兩個問題:
1.雙引號內不可有變數存在, 故會語法錯誤
2.相同東西被引用了2次, 多耗費許多效能
請改用 STKINDI 函數來做
將算漲幅的部分, 寫在子公式中, STKINDI直接引用算完的結果
如此只需引用一次就可得到結果
註: STKINDI 函數的第一個參數可帶入 UseStk 變數
回覆: 回覆: 回覆: 動態行情
引用:
最初由 Touareg_Smart 發表
版主您好:
我更改了程式寫,但仍是語法錯誤,請幫忙看一下是那出錯了,謝謝...
for i= 1 to STKCOUNT(UseBlk) do begin
UseStk:=STKFROMBLK(UseBlk,i);
//漲跌幅:=DYNAINFO2(14,UseStk)*100;
漲跌幅:= STKINDI(UseStk, '今日漲跌幅.漲跌幅',0, 6);
end
回覆: 回覆: 回覆: 回覆: 動態行情
引用:
最初由 cgjj 發表
UseBlk 這變數, 您有指定內容給它嗎?
回覆: 回覆: 回覆: 回覆: 回覆: 動態行情
引用:
最初由 Touareg_Smart 發表
有! 若我改回原來的DYNAINFO2,整段是沒問題的,若改成STKINDI會有語法錯誤
回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 動態行情
引用:
最初由 cgjj 發表
試過ok唷, 若仍不行請把整段程式貼上來, 比較好協助您
回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 動態行情
引用:
最初由 Touareg_Smart 發表
版主您好:
我剛才也試了一下,若是原來的程式碼確實是可以的,但如果加入對"漲跌幅"做條件的判斷的程式碼,就不可以了,我想應該是DYNAINFO2是返回常數,而STKINDI是返回序列吧 ?如果是該如何解決呢?
程式如下:
A:=0;
for i= 1 to STKCOUNT(UseBlk) do begin
UseStk:=STKFROMBLK(UseBlk,i);
//漲跌幅:=DYNAINFO2(14,UseStk)*100;
漲跌幅:= STKINDI(UseStk, '今日漲跌幅.漲跌幅',0, 6);
if 漲跌幅 > 0 then A : A + 漲跌幅;
end
原碼:
A:=C*0; for i= 1 to STKCOUNT(UseBlk) do begin UseStk:=STKFROMBLK(UseBlk,i); //漲跌幅:=DYNAINFO2(14,UseStk)*100; 漲跌幅:= STKINDI(UseStk, '今日漲跌幅.漲跌幅',0, 6); if lbound(漲跌幅)>0 then begin A:=A+if(barpos>=lbound(漲跌幅),漲跌幅,0); end; end;
回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 動態行情
引用:
最初由 cgjj 發表
if 條件式 then .....
其中的 條件式 , 不可為數列
需如此處理
原碼:
A:=C*0; for i= 1 to STKCOUNT(UseBlk) do begin UseStk:=STKFROMBLK(UseBlk,i); //漲跌幅:=DYNAINFO2(14,UseStk)*100; 漲跌幅:= STKINDI(UseStk, '今日漲跌幅.漲跌幅',0, 6); if lbound(漲跌幅)>0 then begin A:=A+if(barpos>=lbound(漲跌幅),漲跌幅,0); end; end;
回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 動態行情
引用:
最初由 Touareg_Smart 發表
版主您好:
雖然lbound可取得序列的最下值,但對A變數仍是有不同的反應。若用原來的DYNAINFO2的寫法,會得到A的正確值(但只有一日)。但是若用StkInDI + lbound的寫法,A值一直不是正確的值,且也不會隨著變化,請問是那出錯了?
for i= 1 to STKCOUNT(UseBlk) do begin
UseStk:=STKFROMBLK(UseBlk,i);
漲跌幅:=DYNAINFO2(14,UseStk)*100;
if 漲跌幅 >0 then begin
A : A + 1;
// 漲跌幅:= STKINDI(UseStk, '今日漲跌幅.漲跌幅',0, 6);
//if lbound(漲跌幅)>0 then begin
// A : A + 1;
end;
end;
全部時間均為台灣時間, 現在時間為02:37 | 在這個頁面顯示本主題全部的 10 個文章 |
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved.