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

註冊日期: Sep 2004
來  自: 台中
文章數量: 332

請問語法

請問奇狐的
else
if XXXX then begin

可否直接不跳行以

else if XXXX then begin

來陳述

__________________

就是發蓊梨(ㄛㄥˇ ㄌㄞˊ) 程式交易網站
[教學]指標公式及程式交易系統撰寫 [代工]

學會指標策略程式化的撰寫,將可讓你不再盲目投下辛苦賺來的血汗錢
要知道交易的策略或交易的模式長期執行下確實可獲利
交易才有意義的.否則寧可不交易


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

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

回覆: 請問語法

引用:
最初由 hwyhon 發表
請問奇狐的
else
if XXXX then begin

可否直接不跳行以

else if XXXX then begin

來陳述



可以的, 範例如下:

if AA=1 then begin
......
end else if BB=1 then begin
......
end else if CC=1 then begin
..........
end;

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

註冊日期: Sep 2004
來  自: 台中
文章數量: 332

這樣陳述就更易了解
祝新年快樂
謝謝

__________________

就是發蓊梨(ㄛㄥˇ ㄌㄞˊ) 程式交易網站
[教學]指標公式及程式交易系統撰寫 [代工]

學會指標策略程式化的撰寫,將可讓你不再盲目投下辛苦賺來的血汗錢
要知道交易的策略或交易的模式長期執行下確實可獲利
交易才有意義的.否則寧可不交易


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

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

引用:
最初由 hwyhon 發表
這樣陳述就更易了解
祝新年快樂
謝謝



不客氣, 也祝您新年快樂 ^^

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

註冊日期: Jul 2008
來  自:
文章數量: 112

回覆: 回覆: 請問語法

引用:
最初由 cgjj 發表
可以的, 範例如下:

if AA=1 then begin
......
end else if BB=1 then begin
......
end else if CC=1 then begin
..........
end;



不好意思,剛好碰上我的一個疑惑。

請教總版主:

這裡的條件「AA=1」是不是說,aa只能給出數值的條件,而不能用「aa>bb」做為if .... then 的條件?

例如:

if dataperiod=1 then begin //這樣是沒問題

若改成:
AA:=C>MA(C,5);
if AA=1 then begin //這樣就一直顯示語法錯誤

為什麼?


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

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

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

回覆: 回覆: 回覆: 請問語法

引用:
最初由 logahsu 發表
不好意思,剛好碰上我的一個疑惑。

請教總版主:

這裡的條件「AA=1」是不是說,aa只能給出數值的條件,而不能用「aa>bb」做為if .... then 的條件?

例如:

if dataperiod=1 then begin //這樣是沒問題

若改成:
AA:=C>MA(C,5);
if AA=1 then begin //這樣就一直顯示語法錯誤

為什麼?



奇狐中有兩種 IF
第一種為 IF(cond,a,b)
第二種為 IF cond THEN ...
cond 為條件式


第一種的條件式運算結果可為數列或單值, 例如:
X: IF(close>open,1,2); //cond 結果為數列
X: IF(datatype=2,5,10); //cond 結果為單值


第二種的條件式運算結果必須為單值不可為數列, 例如:
原碼:

IF datatype=2 then begin
  X
:=5;
end else begin
  X
:=10;
end;

第二種IF 通常會搭配迴圈做數列中的單一元素存取
想了解更多, 可看這邊的討論與解說
http://www.chiefox.com.tw/bbs/showt...=&threadid=9991

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

註冊日期: Sep 2004
來  自: 台中
文章數量: 332

建議總版主

能另開個數列迴圈專欄
將之前或日後有關這方面的主題或範例全移至該專欄裡
如此能方便大家學習奇狐更強大的編輯能力
盼能取得總版主的認同
謝謝

__________________

就是發蓊梨(ㄛㄥˇ ㄌㄞˊ) 程式交易網站
[教學]指標公式及程式交易系統撰寫 [代工]

學會指標策略程式化的撰寫,將可讓你不再盲目投下辛苦賺來的血汗錢
要知道交易的策略或交易的模式長期執行下確實可獲利
交易才有意義的.否則寧可不交易


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

註冊日期: Sep 2004
來  自: 台中
文章數量: 332

OO:O;
CC:C;
AA:=CC*0;

for i = lbound(AA) to datacount do begin
if OO[i]>CC[i] then begin
X:=1;
end else if OO[i]<CC[i] then begin
X:=2;
end else if OO[i]=CC[i] then begin
X:=0;

end;
end;
x:x;

照理說當C>O時x應該顯示為1直到C<O時x才會顯示為2
為何x一直都是顯示為2
我如何才能正確表達或帶出x於每根K棒時的值呢
真是搞得有些迷糊
請解惑

__________________

就是發蓊梨(ㄛㄥˇ ㄌㄞˊ) 程式交易網站
[教學]指標公式及程式交易系統撰寫 [代工]

學會指標策略程式化的撰寫,將可讓你不再盲目投下辛苦賺來的血汗錢
要知道交易的策略或交易的模式長期執行下確實可獲利
交易才有意義的.否則寧可不交易


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

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

回覆: 建議總版主

引用:
最初由 hwyhon 發表
能另開個數列迴圈專欄
將之前或日後有關這方面的主題或範例全移至該專欄裡
如此能方便大家學習奇狐更強大的編輯能力
盼能取得總版主的認同
謝謝



之前是已有一些想法了
先把新版忙完, 再來規劃一下

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

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

引用:
最初由 hwyhon 發表
OO:O;
CC:C;

for i=1 to datacount do begin
if OO[i]>CC[i] then begin
X:=1;
end else if OO[i]<CC[i] then begin
X:=2;
end else if OO[i]=CC[i] then begin
X:=0;

end;
end;
x:x;

照理說當C>O時x應該顯示為1直到C<O時x才會顯示為2
為何x一直都是顯示為2
我如何才能正確表達或帶出x於每根K棒時的值呢
真是搞得有些迷糊
請解惑



X:=1; //這方式是存單值給 X, X為單值不為數列
您要的結果是為一個數列, 而非單值

要改為下面的方式:
原碼:

OO
:O
CC:C;
X:C*0//先把X弄成一個零值數列
for i=1 to datacount do begin
  
if OO[i]>CC[ithen begin
     X
[i]:=1//設定 X 數列中的第 i 個元素值為1
  
end else if OO[i]<CC[ithen  begin
     X
[i]:=2//設定 X 數列中的第 i 個元素值為2
  
end else if OO[i]=CC[ithen  begin
     X
[i]:=0//設定 X 數列中的第 i 個元素值為0
  
end;
end;

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

註冊日期: Sep 2004
來  自: 台中
文章數量: 332

原來如此
謝謝

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

註冊日期: Sep 2004
來  自: 台中
文章數量: 332

OO:O;
CC:C;
X:C*0; //先把X弄成一個零值數列
Y:X;
for i=1 to datacount do begin
if OO[i]>CC[i] then begin
X[i]:=1; //設定 X 數列中的第 i 個元素值為1
end else if OO[i]<CC[i] then begin
X[i]:=2; //設定 X 數列中的第 i 個元素值為2
end else if OO[i]=CC[i] then begin
X[i]:=0; //設定 X 數列中的第 i 個元素值為0
end;


if X[i]=1 then begin
Y[i]:=-1;
end else if X[i]=2 then begin
Y[i]:=-2;
end else if X[i]=0 then begin
Y[i]:=0;
end;


end;

終於弄懂了如何再帶入
有了新語法如魚得水

感謝版主的開釋

__________________

就是發蓊梨(ㄛㄥˇ ㄌㄞˊ) 程式交易網站
[教學]指標公式及程式交易系統撰寫 [代工]

學會指標策略程式化的撰寫,將可讓你不再盲目投下辛苦賺來的血汗錢
要知道交易的策略或交易的模式長期執行下確實可獲利
交易才有意義的.否則寧可不交易


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

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

if...then 的特色, 就是可以一次連續處理多個動作
故可以簡化為

原碼:

OO
:O
CC:C;
X:C*0;
Y:X;
for 
i=1 to datacount do begin
  
if OO[i]>CC[ithen begin
     X
[i]:=1Y[i]:=-1
  
end else if OO[i]<CC[ithen  begin
     X
[i]:=2;
     
Y[i]:=-2
  
end else if OO[i]=CC[ithen  begin
     X
[i]:=0Y[i]:=0
  
end;
end;

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

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

單純以上例來說
Y 為 X 的相反, 故不需於迴圈中重複處理
可再精簡優化為:

原碼:

OO
:O
CC:C;
X:C*0;
for 
i=1 to datacount do begin
  
if OO[i]>CC[ithen begin
     X
[i]:=1
  
end else if OO[i]<CC[ithen  begin
     X
[i]:=2;
  
end else if OO[i]=CC[ithen  begin
     X
[i]:=0;
  
end;
end;
Y:-X;


若 Y 在迴圈中還有其他用途, 則可採這樣
原碼:

OO
:O
CC:C;
X:C*0;
Y:X;
for 
i=1 to datacount do begin
  
if OO[i]>CC[ithen begin
     X
[i]:=1
  
end else if OO[i]<CC[ithen  begin
     X
[i]:=2;
  
end else if OO[i]=CC[ithen  begin
     X
[i]:=0;
  
end;
  
Y[i]:=-X[i];
  
//....接其他後續處理
end;

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

論壇跳轉:
主題評分:

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