 |
cgjj
總版主

註冊日期: Oct 2003
來 自:
文章數量: 18257 |
|
回覆: 回覆: 回覆: 當日漲幅前30名
引用: 最初由 L0123 發表
因為還要加其他條件作選股 拜託 大大指導 感恩之至
原碼:
UseBlkName:='上市股票'; //設定選用板塊
SetMaxStkNum:=30; //設定選出數量
UseDIR:=1; //設定排序方向 0.升序 1.降序
BlkStkNum:=STKCOUNT(UseBlkName);
if BlkStkNum=0 then exit;
RdNum:=0; //有效商品數
VARIABLE:RdNo[BlkStkNum]=0; //原始次序
VARIABLE:UseDatAry[BlkStkNum]=0;
VARIABLE:SortPAry[BlkStkNum]=0;
for SNo:=1 to BlkStkNum do begin
UseSTK:=STKFROMBLK(UseBlkName,SNo);
if DYNAINFO2(8,UseSTK)> 0 then begin //檢查總張>0
RdNum:=RdNum+1; RdNo[RdNum]:=SNo;
UseDatAry[RdNum]:=DYNAINFO2(14,UseSTK); //導入漲幅數據
SortPAry[RdNum]:=UseDatAry[RdNum];
end;
end;
MaxStkNum:=if(RdNum<SetMaxStkNum,RdNum,SetMaxStkNum);
tmp:=SORTPOS(SortPAry,UseDIR,1,RdNum);
SelListStr:='';
for SNo:=1 to MaxStkNum do begin
UseSTK:=STKFROMBLK(UseBlkName,RdNo[SortPAry[SNo]]);
SelListStr:=SelListStr+UseSTK+';';
end;
選中:STRFIND(SelListStr,MARKETLABEL+STKLABEL,1)>0;
盤後選出會固定為 30 個 (若不足30個商品, 則有多少選多少)
盤中選出來可能會比30個還多出幾個, 這是正常的
因為盤中行情一直在變, 計算當下這支股票可能剛好在前30名內
選股每支股票被觸發計算的時間, 多少都有些差距, 排名隨時都可能變
計算當下若該股在當時30名內, 就會被列入選中
|
|
向版主報告此篇 |  |
|
2011-05-20 18:03 |
|
|
|  |
 |
Touareg_Smart
中級會員
註冊日期: Nov 2011
來 自:
文章數量: 24 |
|
昨日漲幅前30名
引用: 最初由 cgjj 發表
目前動態行情並無提供 [昨日總張] 此項
僅用動態行情計算速度可以飛快
若要藉由日線, 去拿昨日總張來算
速度會很慢很慢, 因為要載入一堆商品資料
盤中難以跑的動, 就算能動負擔也太大
請問版主,若我的需求是昨日漲幅前30名,但並不需要在盤中
去做計算,那該如何去修改程式?
因為DYNAINFO並不是昨日的行情資料,然若想得到昨日每支股票的漲幅並放進array,似乎又會語法錯誤,請問該如何解決又或有其它方式? 謝謝版主...
(UseDatAry[RdNum]:=Ref("UseSTK$Close" - "UseSTK$Open" / "UseSTK$Opem), 1);
|
|
向版主報告此篇 |  |
|
2012-02-11 23:57 |
|
|
|  |
本站所有內容未經作者授權禁止轉貼節錄, 發表言論僅供參考勿作為投資決策依據。瀏覽本站請使用 IE 5.5 以上版本, 最佳瀏覽解析度 1024 x 768 全彩。
|
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved. 聯絡我們
|