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

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


由 tycoon868 在 2013-07-17 06:01 發表:

條件判斷式出錯求救

請教總版主,以下的條件判斷被報出錯,需要做哪些修改呢?
需求附在註解上,第一次寫 IF then ,所以麻煩您賜教:

Start:=cross(M2B,30) ;
Startpoint:=barslast(Start)+1; //: 希望根據轉折天數來決定要用以下哪一個評分公式(GSA 或者 GSB)
Bullish:=C>EMA(C,20);

IF Startpoint>4 THEN Begin
BullGSA:=(R2TB>0)*1+(R2TB>30)*1+(R2TB>60)*1+(R2TB>90)*1+(R2TB>120)*1+(R2TB>240)*1;
BearGSA:=(R2TB<0)*-1+(R2TB<-30)*-1+(R2TB<-60)*-1+(R2TB<-90)*-1+(R2TB<-120)*-1+(R2TB<-240)*-1;
GSA:=IF(Bullish=1 ,BullGSA,BearGSA),linethick0; //: Bullish 為第二個條件,決定上面二選一來取分
End;

ELSE Begin
BullGSB:=(R2TB>0)*1+(R2TB>15)*1+(R2TB>30)*1+(R2TB>45)*1+(R2TB>60)*1+(R2TB>120)*1;
BearGSB:=(R2TB<0)*-1+(R2TB<-15)*-1+(R2TB<-30)*-1+(R2TB<-45)*-1+(R2TB<-60)*-1+(R2TB<-120)*-1;
GSB:=IF(Bullish=1 ,BullGSB,BearGSB),linethick0;
End;

GS:GSA+GSB; 根據Startpoint條件,GSA 與 GSB 只會有一個成立

感謝!


由 cgjj 在 2013-07-17 09:56 發表:

回覆: 條件判斷式出錯求救

引用:
最初由 tycoon868 發表
請教總版主,以下的條件判斷被報出錯,需要做哪些修改呢?
需求附在註解上,第一次寫 IF then ,所以麻煩您賜教:

Start:=cross(M2B,30) ;
Startpoint:=barslast(Start)+1; //: 希望根據轉折天數來決定要用以下哪一個評分公式(GSA 或者 GSB)
Bullish:=C>EMA(C,20);

IF Startpoint>4 THEN Begin
BullGSA:=(R2TB>0)*1+(R2TB>30)*1+(R2TB>60)*1+(R2TB>90)*1+(R2TB>120)*1+(R2TB>240)*1;
BearGSA:=(R2TB<0)*-1+(R2TB<-30)*-1+(R2TB<-60)*-1+(R2TB<-90)*-1+(R2TB<-120)*-1+(R2TB<-240)*-1;
GSA:=IF(Bullish=1 ,BullGSA,BearGSA),linethick0; //: Bullish 為第二個條件,決定上面二選一來取分
End;

ELSE Begin
BullGSB:=(R2TB>0)*1+(R2TB>15)*1+(R2TB>30)*1+(R2TB>45)*1+(R2TB>60)*1+(R2TB>120)*1;
BearGSB:=(R2TB<0)*-1+(R2TB<-15)*-1+(R2TB<-30)*-1+(R2TB<-45)*-1+(R2TB<-60)*-1+(R2TB<-120)*-1;
GSB:=IF(Bullish=1 ,BullGSB,BearGSB),linethick0;
End;

GS:GSA+GSB; 根據Startpoint條件,GSA 與 GSB 只會有一個成立

感謝!



Startpoint 的結果是數列, 數列是由一連串的元素所組成
故 "整個數列" 不能直接帶入 IF ... THEN 的判斷式當中
需依序抽取其中的單一元素才能帶入
故通常需要搭配迴圈來使用
例如: IF myvar[n]=16 THEN ....
版上有很多應用的例子, 不再詳述

您的需求, 可採用以下的方式處理:

Start:=cross(M2B,30);
Startpoint:=barslast(Start)+1;
Bullish:=C>EMA(C,20);

BullGSA:=(R2TB>0)*1+(R2TB>30)*1+(R2TB>60)*1+(R2TB>90)*1+(R2TB>120)*1+(R2TB>240)*1;
BearGSA:=(R2TB<0)*-1+(R2TB<-30)*-1+(R2TB<-60)*-1+(R2TB<-90)*-1+(R2TB<-120)*-1+(R2TB<-240)*-1;
GSA:=IF(Bullish=1 ,BullGSA,BearGSA),linethick0;

BullGSB:=(R2TB>0)*1+(R2TB>15)*1+(R2TB>30)*1+(R2TB>45)*1+(R2TB>60)*1+(R2TB>120)*1;
BearGSB:=(R2TB<0)*-1+(R2TB<-15)*-1+(R2TB<-30)*-1+(R2TB<-45)*-1+(R2TB<-60)*-1+(R2TB<-120)*-1;
GSB:=IF(Bullish=1 ,BullGSB,BearGSB),linethick0;

GS: IF(Startpoint>4, GSA, GSB);


由 tycoon868 在 2013-07-17 10:18 發表:

山不轉路轉,原來這麼容易,感謝總版主!


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


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

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