 |
fox1688
中級會員
註冊日期: Feb 2004
來 自:
文章數量: 82 |
IF ... THEN ... ELSE 的問題
TOHLC 的參數 N=2 時
為何會同時出現 OO & CC , 應該只有 CC 才對 ??
因為無法上傳圖檔 , 所以上傳 測試公式 TOHLC.ALG
IF N=1 THEN BEGIN
OO : O;
CC := C;
END;
ELSE
IF N=2 THEN BEGIN
OO := O;
CC : C;
END;
|
最後由 fox1688 在 2006-04-16 00:06 編輯 |
向版主報告此篇 |  |
|
2006-04-15 18:37 |
|
|
|  |
 |
cgjj
總版主

註冊日期: Oct 2003
來 自:
文章數量: 18091 |
回覆: IF ... THEN ... ELSE 的問題
引用: 最初由 fox1688 發表
IF N=1 THEN BEGIN
OO : O;
CC := C;
END;
ELSE
IF N=2 THEN BEGIN
OO := O;
CC : C;
END; [/B]
這是一個不是 Bug 的 Bug
原因是公式編譯後, 即決定變數是否要輸出
而不是於 公式執行時期(Run 時) 才決定的
但可以用下列方式來達到我們要的效果:
1.開始均設為要輸出
2.最後將不想要輸出的變數, 均設為無效變數
(可運用 SETLBOUND 指令設為無效變數)
註.設為無效變數後, 後續無法拿來計算
前面的問題, 改寫為這樣即可解決:
原碼:
OO: O; //設為會輸出的項目
CC: C; //設為會輸出的項目
IF N=1 THEN BEGIN
x:=SETLBOUND(CC,0); //設 CC 為無效變數, 使 CC 不輸出
END;
ELSE
IF N=2 THEN BEGIN
x:=SETLBOUND(OO,0); //設 OO 為無效變數, 使 OO 不輸出
END;
若要考慮後續還可拿來計算, 可用另一變數處理之:
原碼:
OO:O; //輸出用
CC:C;
SOO:=OO; //計算用
SCC:=CC;
IF N=1 THEN BEGIN
x:=SETLBOUND(CC,0); //設 CC 為無效變數, 使 CC 不輸出
END;
ELSE
IF N=2 THEN BEGIN
x:=SETLBOUND(OO,0); //設 OO 為無效變數, 使 OO 不輸出
END;
OC:SOO+SCC; //運用來計算
|
|
向版主報告此篇 |  |
|
2006-07-04 11:30 |
|
|
|  |
 |
fox1688
中級會員
註冊日期: Feb 2004
來 自:
文章數量: 82 |
其實這仍是真正的 BUG , 期待下次版本異動時能更正 !
因為 原條件是 正面表列 , 改成 負面表列 是 相當繁複的 ,
以我試寫是的 某公式 條件如下 :
參數 :
技術指標 = 0 - 13 0 : VOL 股票成交張數 / AMOUNT 指數成交量
1 : K線
2 : KD (9,3,3)
3 : KD (21,5,2)
4 : KD (34,5,2)
5 : MACD (26,12,9)
6 : MACD (12,6,5)
7 : BIAS (6,12,24)
8 : RSI (6,12,24)
9 : BOLL (20,20)
10 : BBI
11 : 3日高低
12 : 平均K線 (類似 奇狐K線)
13 : TESTCDP6 (21,13)
當某一條件成立 , 便需使其他不成立的條件失效
(可能 12*2 - 12*3 個變數失效 ?)
並不符合編寫公式的用意 !!
|
|
向版主報告此篇 |  |
|
2006-07-07 10:06 |
|
|
|  |
本站所有內容未經作者授權禁止轉貼節錄, 發表言論僅供參考勿作為投資決策依據。瀏覽本站請使用 IE 5.5 以上版本, 最佳瀏覽解析度 1024 x 768 全彩。
|
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved. 聯絡我們
|