回覆: 條件判斷式出錯求救
引用: 最初由 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);
|