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

奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- 請問:如何用if..then運算式取得period變數? (http://www.chiefox.com.tw/bbs/showthread.php?threadid=11032)


由 logahsu 在 2009-02-09 17:43 發表:

請問:如何用if..then運算式取得period變數?

小弟從論壇總版主文章範例中得知,若要用單行運算式,可以用以下的方式取得,這部分沒有問題,我的問題在於:

若DATAPERIOD=1 then MA(C,5)
若DATAPERIOD=2 then MA(C,10)
若DATAPERIOD=3 then MA(C,15)
.......
若DATAPERIOD=12 then MA(C,50)

end;
end;
end;
.........(共12個end

目前我都是一個、一個設定,也是可以達到目的,但是這絕對不是經濟的做法,想請問各位,若是用if.....then或 for i=0 to 11迴圈,不知道要怎麼寫?寫了半天都會當機,請教各位前輩。

----------------------------------------------------------------(底下是總版主教學if.....then的文章,我實在寫不出正確的語法)


【範例1】單行運算式

若現週期為5分鐘取最高價,若為其它週期則取收盤價
cc:close;
IF DATAPERIOD=2 THEN cc:=high;

若現市場為臺灣期貨則取收盤價3日的均值,若為其它市場則取收盤價6日的均值
均:close;
IF MARKETLABEL='TF' THEN 均:=ma(均, 3); ELSE 均:=ma(均, 6);

__________________
--------------------------------------------------------
奇狐好 奇狐棒 奇狐呱呱叫


由 peter109 在 2009-02-09 20:58 發表:

一般公式內如果只有少數的條件句 或許可用迴圈
但 經驗法則是
單行的運行速度比迴圈速度快

http://www.chiefox.com.tw/bbs/forum....php?forumid=46
到這邊看看 或許對您有幫助

__________________
至誠能勝天下至偽
至拙能勝天下至巧


由 logahsu 在 2009-02-09 22:05 發表:

引用:
最初由 peter109 發表
一般公式內如果只有少數的條件句 或許可用迴圈
但 經驗法則是
單行的運行速度比迴圈速度快

http://59.124.59.118/bbs/forumdisplay.php?forumid=46
到這邊看看 或許對您有幫助



Peter大:

謝謝指導。我的想法是,如果每一個DATAPERIOD都要設定不同的條件句,這當中又有分:期指tf或tw、to,還有加權指數100,如此一來,每個MARKETLABEL的DATAPERIOD都要設定參數時,是不是要設三、四十次?

例如,TF就有秒∼多秒線,至少13個 詢問式條件句
TW、TO:上市及上櫃 (26個)
100 加權 (13個)
會有這種疑惑,是因為我們設定stickline的長度時,往往因為周期、MARKETLABEL的不同,出現柱狀體有時會很長,有時會很短的現象,尤其是一個附圖內必須有兩項指標參數運算結果要用柱體表現時,就會如此,尤其是指數型與現貨股票之間,差距更大。(如果單一附圖裡中有表達一項運算式的結果就沒有這些問題,各周期都適用。)

或許我有某些地方沒弄清楚,總之,這是目前我所碰上的難題。不知是不是還有什麼更好、更精簡、更不吃記憶體的程式表達方式,望請高手指教。能不能用Array的方式表達?我不太懂。

__________________
--------------------------------------------------------
奇狐好 奇狐棒 奇狐呱呱叫


由 cgjj 在 2009-02-10 08:56 發表:

回覆: 請問:如何用if..then運算式取得period變數?

您可用類似這樣的技巧來簡化

TT[1]:=5;
TT[2]:=10;
TT[3]:=15;
.........
MM: MA(C,TT[DATAPERIOD]);


由 logahsu 在 2009-02-10 09:28 發表:

回覆: 回覆: 請問:如何用if..then運算式取得period變數?

引用:
最初由 cgjj 發表
您可用類似這樣的技巧來簡化

TT[1]:=5;
TT[2]:=10;
TT[3]:=15;
.........
MM: MA(C,TT[DATAPERIOD]);



謝謝總版主賜教,我先收下,收盤後再試作。感激...

__________________
--------------------------------------------------------
奇狐好 奇狐棒 奇狐呱呱叫


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


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

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