到奇狐勝券首頁 奇狐社區論壇 購買奇狐勝券 試用奇狐勝券
 
論壇首頁 你可以在這裡編輯你的資料,查看短訊,訂閱主題和論壇參數等等 免費會員註冊 會員列表 論壇幫助 論壇日曆 論壇搜索 加入我的最愛 登出論壇  
奇狐社區論壇 : Powered by vBulletin version 2.3.0 奇狐社區論壇 > 指標公式 > 問題交流 > IF ... THEN ... ELSE 的問題
  上一主題   下一主題
作者
主題 發表新主題    回覆主題
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 編輯 向版主報告此篇 | 查IP位址
Old Post 2006-04-15 18:37
fox1688 現在離線 點選這裡查看 fox1688 的個人資料 點選這裡給 fox1688 傳送一條短訊 查找更多關於 fox1688 的文章 增加 fox1688 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18091

這問題與下列連結的問題屬同一類
近期升級會修正此 Bug
http://www.chiefox.com.tw/bbs/showt...=&threadid=4908

向版主報告此篇 | 查IP位址
Old Post 2006-04-16 23:16
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
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//設為會輸出的項目
CCC//設為會輸出的項目
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//運用來計算

向版主報告此篇 | 查IP位址
Old Post 2006-07-04 11:30
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
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 個變數失效 ?)

並不符合編寫公式的用意 !!

向版主報告此篇 | 查IP位址
Old Post 2006-07-07 10:06
fox1688 現在離線 點選這裡查看 fox1688 的個人資料 點選這裡給 fox1688 傳送一條短訊 查找更多關於 fox1688 的文章 增加 fox1688 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18091

是不是 Bug 我想每個人見解不同
每套語言都有其特性, 不予置評

我已建議博庭未來能改善
現階段這是可行的方式

另外非常建議您
不要把 13 個公式湊在一起
使用上調整參數不方便
程式也難以維護容易出錯
對系統來說也較沉重
拆開來應用上會比較佳些

向版主報告此篇 | 查IP位址
Old Post 2006-07-07 10:45
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
全部時間均為台灣時間, 現在時間為21:25 發表新主題    回覆主題
  上一主題   下一主題
顯示可列印版本 | 訂閱此主題

論壇跳轉:
主題評分:

論壇規定:
你不可以發表新主題
你不可以回覆文章
你不可以上傳附件
你不可以編輯自己的文章
HTML語法禁止
vB 語法核准
表情符號核准
貼圖語法[IMG]核准
 

本站所有內容未經作者授權禁止轉貼節錄, 發表言論僅供參考勿作為投資決策依據。瀏覽本站請使用 IE 5.5 以上版本, 最佳瀏覽解析度 1024 x 768 全彩。

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

簡愛洋行 製作 Copyright 2003-. All Rights Reserved.  聯絡我們