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

奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- [進階教學] (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=46)
-- 06. 設定數列有效數據起始編號 SETLBOUND 《適用4.0版》 (http://www.chiefox.com.tw/bbs/showthread.php?threadid=2812)


由 cgjj 在 2005-03-31 14:14 發表:

06. SETLBOUND 設定數列有效數據起始編號 《適用4.0版》

【語句】SETLBOUND



【用途】





設定數列有效數據起始編號(最小編號)

可以應用此函數來設定減少運算的K棒數(數列),讓公式跑的更加快速

 

【語法】





SETLBOUND(XAry,
N)





【參數】





XAry
為使用的數列

N 為設定的有效起始編號





【說明】





若前頭有指定變數, 例如 XX:=SETLBOUND(XAry,
N)


運算後 XX 會等於 N,若 N 設定的值超過
XAry 數列的有效範圍(最大或最小)則變數
XX 會等於


由 cgjj 在 2005-03-31 14:18 發表:

【範例1】 只顯示最近500天的收盤價線







cc:c;

xx:=SETLBOUND(cc,UBOUND(cc)-500+1);



也可寫為


cc:c;

xx:=SETLBOUND(cc,DATACOUNT-500+1);


註:DATACOUNT為目前週期K棒的總數量


這個方法有個缺點,若K棒的總數不足500根時,畫面上不會輸出任何收盤價線(xx=0)

可用下列式子解決此問題:

IF DATACOUNT>=500 THEN
xx:=SETLBOUND(cc,DATACOUNT-500+1);


由 cgjj 在 2005-03-31 14:31 發表:

【範例2】 用參數 N 來調整收盤價線顯示的天數(若 N = 0 則顯示全部)







cc:c;

IF DATACOUNT>=N AND
N>0 THEN xx:=SETLBOUND(cc,DATACOUNT-N+1);
註: N 為參數(預設:0, 最小:0, 最大:999999)


由 cgjj 在 2005-03-31 15:01 發表:

【範例3】為KD指標加入可調整計算總K棒數的功能







原 KD 指標

INPUT:N(9,1,100), M1(3,2,40), M2(3,2,40);

{Stochastic Indicator KD Line , KD , 隨機指標KD}

RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100,COLORCYAN;

K:SMA(RSV,M1,1);

D:SMA(K,M2,1);


修改後的 KD 指標

CC:=CLOSE;

HH:=HIGH;

LL:=LOW;

IF DATACOUNT>=MAXKBAR
AND MAXKBAR>0 THEN Begin






xx:=SETLBOUND(CC,DATACOUNT-MAXKBAR+1);

xx:=SETLBOUND(HH,DATACOUNT-MAXKBAR+1);

xx:=SETLBOUND(LL,DATACOUNT-MAXKBAR+1);

End;

INPUT:N(9,1,100), M1(3,2,40), M2(3,2,40);

{Stochastic Indicator KD Line , KD , 隨機指標KD}

RSV:=(CC-LLV(LL,N))/(HHV(HH,N)-LLV(LL,N))*100,COLORCYAN;

K:SMA(RSV,M1,1);

D:SMA(K,M2,1);

註: MAXKBAR 為參數(預設:0, 最小:0, 最大:999999) 用來調整計算總K棒數


由 cgjj 在 2005-03-31 15:27 發表:

4.0 版可由系統選項自行設定1分和5分載入的K棒數

來達到一樣的功能, 請看

http://www.chiefox.com.tw/bbs/showt...=&threadid=2625



用程式以 SETLBOUND 函數搭配參數來調整K棒數,運用上更加彈性


由 cgjj 在 2006-11-08 10:37 發表:

特別注意:


若您將數據有效起始位置變的比原來更前面

(例如:現數據有效起始位置為30, 改變為1)

則原來屬無效數據的部份, 其值為亂數(可能為任何數)

應特別注意小心使用(容易錯的不知所以然)

建議您先將無效數據的部份, 值都先將其歸零再使用




歸零方法示範如下:

CC:MA(C,30); //此時 數列CC 有效起始位置為30

LbCC:=LBOUND(CC); //保存 數列CC 目前有效起始位置

x:=SETLBOUND(CC,5); //變更 數列CC 有效起始位置為5

CC:=if(barpos>=X and (barpos<LBCC or LbCC=0) ,0,CC); //將原本屬無效數據的範圍,值均設為零值


由 cgjj 在 2008-07-24 13:47 發表:

歸零的另一簡便方法(與前例結果相同)

CC:MA(C,30);

CC:=if(barpos>=LBOUND(CC) and LBOUND(CC),CC,0);

x:=SETLBOUND(CC,5);


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


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

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