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

奇狐社區論壇 (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=23723)


由 Markchu7 在 2023-07-27 08:48 發表:

[問題]何者較為耗用資源?

分鐘首K:=ISREGULARFBAR;
換日首K:=TRADEDATE<>REF(TRADEDATE,1);
歷史首K:=BARPOS=1;
當沖週期:=DATATYPE=11 OR DATATYPE=1 OR DATATYPE=2;
DBCK:=IF(當沖週期,分鐘首K OR 換日首K,歷史首K),LINETHICK;
非首K:=NOT(DBCK);
日盤時間:=TIME>084500 AND TIME<=134500;

AB何者較為耗用資源?
一,
A,
D1KDAY:=STKINDI('FITX1','X引用動能2.動能',0,12),COLORRED,LINETHICK;
D1DDAY:=STKINDI('FITX1','X引用動能2.軌跡',0,12),COLORBLUE,LINETHICK;
D1KNIGHT:=STKINDI('FITX1+','X引用動能2.動能',0,12),COLORRED,LINETHICK;
D1DNIGHT:=STKINDI('FITX1+','X引用動能2.軌跡',0,12),COLORBLUE,LINETHICK;
D1K:IF(日盤時間,D1KDAY,D1KNIGHT),COLORRED,LINETHICK;
D1D:IF(日盤時間,D1DDAY,D1DNIGHT),COLORBLUE,LINETHICK;
B,
D1K:IF(日盤時間,STKINDI('FITX1','X引用動能2.動能',0,12),STKINDI('FITX1+','X引用動能2.動能',0,12)),COLORRED,LINETHICK;
D1D:IF(日盤時間,STKINDI('FITX1','X引用動能2.軌跡',0,12),STKINDI('FITX1+','X引用動能2.軌跡',0,12)),COLORBLUE,LINETHICK;

二,
A,
PARTLINE(NOT(DBCK),.....);
PARTLINE(NOT(DBCK),.....);
PARTLINE(NOT(DBCK),.....);
PARTLINE(NOT(DBCK),.....);
PARTLINE(NOT(DBCK),.....);
PARTLINE(NOT(DBCK),.....);
B,
PARTLINE(非首K,.....);
PARTLINE(非首K,.....);
PARTLINE(非首K,.....);
PARTLINE(非首K,.....);
PARTLINE(非首K,.....);
PARTLINE(非首K,.....);


由 cgjj 在 2023-07-27 08:56 發表:

回覆: [問題]何者較為耗用資源?

引用:
最初由 Markchu7 發表
分鐘首K:=ISREGULARFBAR;
換日首K:=TRADEDATE<>REF(TRADEDATE,1);
歷史首K:=BARPOS=1;
當沖週期:=DATATYPE=11 OR DATATYPE=1 OR DATATYPE=2;
DBCK:=IF(當沖週期,分鐘首K OR 換日首K,歷史首K),LINETHICK;
非首K:=NOT(DBCK);
日盤時間:=TIME>084500 AND TIME<=134500;

AB何者較為耗用資源?
一,
A,
D1KDAY:=STKINDI('FITX1','X引用動能2.動能',0,12),COLORRED,LINETHICK;
D1DDAY:=STKINDI('FITX1','X引用動能2.軌跡',0,12),COLORBLUE,LINETHICK;
D1KNIGHT:=STKINDI('FITX1+','X引用動能2.動能',0,12),COLORRED,LINETHICK;
D1DNIGHT:=STKINDI('FITX1+','X引用動能2.軌跡',0,12),COLORBLUE,LINETHICK;
D1K:IF(日盤時間,D1KDAY,D1KNIGHT),COLORRED,LINETHICK;
D1D:IF(日盤時間,D1DDAY,D1DNIGHT),COLORBLUE,LINETHICK;
B,
D1K:IF(日盤時間,STKINDI('FITX1','X引用動能2.動能',0,12),STKINDI('FITX1+','X引用動能2.動能',0,12)),COLORRED,LINETHICK;
D1D:IF(日盤時間,STKINDI('FITX1','X引用動能2.軌跡',0,12),STKINDI('FITX1+','X引用動能2.軌跡',0,12)),COLORBLUE,LINETHICK;

二,
A,
PARTLINE(NOT(DBCK),.....);
PARTLINE(NOT(DBCK),.....);
PARTLINE(NOT(DBCK),.....);
PARTLINE(NOT(DBCK),.....);
PARTLINE(NOT(DBCK),.....);
PARTLINE(NOT(DBCK),.....);
B,
PARTLINE(非首K,.....);
PARTLINE(非首K,.....);
PARTLINE(非首K,.....);
PARTLINE(非首K,.....);
PARTLINE(非首K,.....);
PARTLINE(非首K,.....);




A & B 都不合格,都有嚴重重複引用,浪費許多資源!!!
STKINDI('FITX1','X引用動能2.動能',0,12)
STKINDI('FITX1+','X引用動能2.軌跡',0,12)
這兩個部分都應該先設在變數,再以變數帶入,而非直接重複放置於程式中
簡單說,STKINDI 出現的次數越少越好,不該重複!


也是A,但AB 兩者差異甚微
程式維護上,B也會比較方便


由 cgjj 在 2023-07-27 09:10 發表:

Sorry! 看太快,沒注意到細節。

更正! 一
STKINDI('FITX1','X引用動能2.動能',0,12)
STKINDI('FITX1','X引用動能2.軌跡',0,12)
STKINDI('FITX1+','X引用動能2.動能',0,12)
STKINDI('FITX1+','X引用動能2.軌跡',0,12)

這四個部分雖然不一樣(沒有重複引用)

但實務應用上應該不需如此做
不會有需要同時引用 FITX1 和 FITX1+ 的狀況 !!!
因為 FITX1+ 就包含了 FITX1 時段的行情數據了


由 Markchu7 在 2023-07-27 09:33 發表:

感謝總版主回覆!
有關一的狀況說明一下!因為引用的週期為多秒週期,故下午三點以後FITX1+D1K,D1D的數據就清盤了,有時晚上要研究分析一下,就要調出FITX1的數據來!
其實是我想偷懶,不想商品換來換去!
我還是再設一個夜盤時間專用的視窗佈局才能一勞永逸!
再次感謝指導!


由 cgjj 在 2023-07-27 10:10 發表:

引用:
最初由 Markchu7 發表
感謝總版主回覆!
有關一的狀況說明一下!因為引用的週期為多秒週期,故下午三點以後FITX1+D1K,D1D的數據就清盤了,有時晚上要研究分析一下,就要調出FITX1的數據來!
其實是我想偷懶,不想商品換來換去!
我還是再設一個夜盤時間專用的視窗佈局才能一勞永逸!
再次感謝指導!



最好是用類似這樣的架構判別,各自跑
if .... then begin
//處理 FITX1
end else begin
//處理 FITX1+
end;

就不會發生 FITX1 和 FITX1+ 兩者處理的部分,都同時都被跑到,節省資源


由 Markchu7 在 2023-07-27 10:48 發表:

一,可以這樣寫嗎?
if 日盤時間 then begin
D1K:STKINDI('FITX1','X引用動能2.動能',0,12),COLORRED,LINETHICK;
D1D:STKINDI('FITX1','X引用動能2.軌跡',0,12),COLORBLUE,LINETHICK;
end else begin
D1K:=STKINDI('FITX1+','X引用動能2.動能',0,12),COLORRED,LINETHICK;
D1D:=STKINDI('FITX1+','X引用動能2.軌跡',0,12),COLORBLUE,LINETHICK;
end;

二,
常見總版主再寫這樣的公式語句時,
if .... then begin//前面會有空格,有何規則,慣例嗎?
.....
end else begin
.....
end;
完全未有程式寫作基礎,請見諒!謝謝!


由 cgjj 在 2023-07-27 11:29 發表:

引用:
最初由 Markchu7 發表
一,可以這樣寫嗎?
if 日盤時間 then begin
D1K:STKINDI('FITX1','X引用動能2.動能',0,12),COLORRED,LINETHICK;
D1D:STKINDI('FITX1','X引用動能2.軌跡',0,12),COLORBLUE,LINETHICK;
end else begin
D1K:=STKINDI('FITX1+','X引用動能2.動能',0,12),COLORRED,LINETHICK;
D1D:=STKINDI('FITX1+','X引用動能2.軌跡',0,12),COLORBLUE,LINETHICK;
end;

二,
常見總版主再寫這樣的公式語句時,
if .... then begin//前面會有空格,有何規則,慣例嗎?
.....
end else begin
.....
end;
完全未有程式寫作基礎,請見諒!謝謝!



Re:一
日盤時間:=TIME>084500 AND TIME<=134500;
你的 "日盤時間" 這個變數,結果是數列,並非單值,故不能帶入 if ... then 判斷式中
必需是單值才可行

最理想的方式,是不要偷懶
建議還是另設視窗各自作業,效能好!

Re:二
那是寫程式的一種習慣,叫作階層內縮(程式碼縮排)
可明確易讀看出程式結構,不易混淆
有興趣可用 "程式碼縮排" 當關鍵字,去用Google 搜尋一下


由 Markchu7 在 2023-07-27 12:25 發表:

感謝指導!


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


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

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