奇狐社區論壇
在這個頁面顯示本主題全部的 4 個文章

奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- [問題]barslast速度一問 (http://www.chiefox.com.tw/bbs/showthread.php?threadid=12626)


由 am1200 在 2009-12-02 16:59 發表:

[問題]barslast速度一問

INPUT:N(9,1,100), M1(3,2,40), M2(3,2,40);
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100,COLORCYAN;
K:=SMA(RSV,M1,1);
D:=SMA(K,M2,1);

CK:=CROSS(K,D);
CC:=C;
for i = ubound(ck) downto lbound(ck) do begin
if CK[i]=1 then break;
end;
KDC:CC[i];
用上面的寫法,與用內建函數barslast都可以求出最近一次KD交叉點,請問barslast為內建函數,速度是否比較快?


由 cgjj 在 2009-12-03 13:07 發表:

回覆: [問題]barslast速度一問

引用:
最初由 am1200 發表
INPUT:N(9,1,100), M1(3,2,40), M2(3,2,40);
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100,COLORCYAN;
K:=SMA(RSV,M1,1);
D:=SMA(K,M2,1);

CK:=CROSS(K,D);
CC:=C;
for i = ubound(ck) downto lbound(ck) do begin
if CK[i]=1 then break;
end;
KDC:CC[i];
用上面的寫法,與用內建函數barslast都可以求出最近一次KD交叉點,請問barslast為內建函數,速度是否比較快?



以此例來說 barslast 會比較慢

因為 barslast 是每一根K棒都會向前找, 距當根最近一次KD交叉的點
每根K棒都有其自己的值

而您這迴圈, 是只有算最後一根
於最後一根向前找, 距最後一根最近一次KD交叉的點
僅有最末根算出的單一值
與 barslast 作用不盡相同

以計算量來說, 只算最後一根, 負擔會非常輕


由 am1200 在 2009-12-03 16:03 發表:

那內建函數barslast為什麼不加上exit的作法呢?都已經找到最後一個成立點,卻還算完全部的值,可以改進嗎?


由 cgjj 在 2009-12-03 17:06 發表:

引用:
最初由 am1200 發表
那內建函數barslast為什麼不加上exit的作法呢?都已經找到最後一個成立點,卻還算完全部的值,可以改進嗎?


用途不同唷
若有個商品有9000根K棒, 其中共有 80 次 KD 黃金交叉
要取得近一次的黃金交叉當時的收盤價
用 barslast 可呈現出這值的歷史變化

若用前面您的迴圈式子只能算最後一根
無法呈現歷史變化, 僅有最新的值
這就是最大差異

迴圈是跑N次, 故可下 break 中途跳出
barslast 是函數, 一個命令就算完, 故無法中途跳出

任務性質不同啦
依不同需求, 選擇較佳的處理方式


全部時間均為台灣時間, 現在時間為01:28
在這個頁面顯示本主題全部的 4 個文章


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

簡愛洋行 製作 Copyright 2003-. All Rights Reserved.