到奇狐勝券首頁 奇狐社區論壇 購買奇狐勝券 試用奇狐勝券
 
論壇首頁 你可以在這裡編輯你的資料,查看短訊,訂閱主題和論壇參數等等 免費會員註冊 會員列表 論壇幫助 論壇日曆 論壇搜索 加入我的最愛 登出論壇  
奇狐社區論壇 : Powered by vBulletin version 2.3.0 奇狐社區論壇 > 指標公式 > 問題交流 > 條件判斷式出錯求救
  上一主題   下一主題
作者
主題 發表新主題    回覆主題
tycoon868
資深會員

註冊日期: Oct 2008
來  自:
文章數量: 313

條件判斷式出錯求救

請教總版主,以下的條件判斷被報出錯,需要做哪些修改呢?
需求附在註解上,第一次寫 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 只會有一個成立

感謝!

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

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

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

引用:
最初由 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);

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

註冊日期: Oct 2008
來  自:
文章數量: 313

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

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

論壇跳轉:
主題評分:

論壇規定:
你不可以發表新主題
你不可以回覆文章
你不可以上傳附件
你不可以編輯自己的文章
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.  聯絡我們