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

奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- 關於 IF THEN (http://www.chiefox.com.tw/bbs/showthread.php?threadid=12619)


由 arthur_ju 在 2009-12-02 11:41 發表:

關於 IF THEN

想請問關於 IF 的用法

我的程式
IF Signal = 0 THEN Weight := 0 ;
結果出現語法錯誤

我有看論壇中關於 If...Then 的寫法
Try了好幾次 一直都不行
請問 錯誤為何??

還是只能用 IF( , , ) ; 這種方式?

感恩


由 cgjj 在 2009-12-02 12:15 發表:

回覆: 關於 IF THEN

引用:
最初由 arthur_ju 發表
想請問關於 IF 的用法

我的程式
IF Signal = 0 THEN Weight := 0 ;
結果出現語法錯誤

我有看論壇中關於 If...Then 的寫法
Try了好幾次 一直都不行
請問 錯誤為何??

還是只能用 IF( , , ) ; 這種方式?

感恩



IF Signal = 0 THEN Weight := 0 ;

您公式中的 Signal 變數應是數列
故不能直接帶入 IF cond THEN 的 條件式cond 當中

看看這邊的解說對您應該有幫助
http://www.chiefox.com.tw/bbs/showt...=&threadid=9991


由 arthur_ju 在 2009-12-02 12:41 發表:

回覆: 回覆: 關於 IF THEN

引用:
最初由 cgjj 發表
IF Signal = 0 THEN Weight := 0 ;

您公式中的 Signal 變數應是數列
故不能直接帶入 IF cond THEN 的 條件式cond 當中

看看這邊的解說對您應該有幫助
http://www.chiefox.com.tw/bbs/showt...=&threadid=9991



如果用這種方式
for i=1 to datacount do begin
if myHour[i]=9 and myMin[i]=1 then begin
........
end;
end;
這樣在計算上會不會變很慢????

如果我只需要從畫面上的第一根K線開始計算
請問要用哪一個函數

感謝您


由 arthur_ju 在 2009-12-02 12:53 發表:

回覆: 回覆: 回覆: 關於 IF THEN

引用:
最初由 arthur_ju 發表
如果用這種方式
for i=1 to datacount do begin
if myHour[i]=9 and myMin[i]=1 then begin
........
end;
end;
這樣在計算上會不會變很慢????

如果我只需要從畫面上的第一根K線開始計算
請問要用哪一個函數

感謝您



看了飛鳥兄給我的一些範例
SNo:=sysparam(2); ENo:=sysparam(3);
我想這樣應該就ok了吧
感謝各位大大


由 hwyhon 在 2009-12-02 13:33 發表:

想起寫下單機是抓動態數據
用vb

if .. then ,,
都還覺得隨心映手

但轉到奇狐這靜態數列
套上
OO:O;
CC:C;
for i=1 to datacount do begin
if OO[i]>CC[i] then begin

腦筋真是臨時轉不過來

不過確實這[i]若稿清楚了奇狐誰能與它相比
因此請版主由簡而繁能多起例

__________________

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

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



由 cgjj 在 2009-12-04 20:27 發表:

引用:
最初由 hwyhon 發表
想起寫下單機是抓動態數據
用vb

if .. then ,,
都還覺得隨心映手

但轉到奇狐這靜態數列
套上
OO:O;
CC:C;
for i=1 to datacount do begin
if OO[i]>CC[i] then begin

腦筋真是臨時轉不過來

不過確實這[i]若稿清楚了奇狐誰能與它相比
因此請版主由簡而繁能多起例



公式以迴圈存取數列的用法 與 VBScript 中以迴圈存取數列的用法
兩者的方式與觀念相同的, 差別僅在語法字元
奇狐公式 CC[i] 相當於 VBScript 中的 CC(i)

下面三個範例結果相同:

範例1: 採用 if(cond,a,b) 寫法

M05:=MA(C,05);
M15:=MA(C,15);
SS:if(M05>=M15,H,L);


由 cgjj 在 2009-12-04 20:28 發表:

範例2: 採用奇狐的迴圈與數列來處理

原碼:

M05
:=MA(C,05);
M15:=MA(C,15);

StNo:=MAX(lbound(M05),lbound(M15)); //有效起始位置,取兩者中最大的
HH:=HLL:=LSS:C*0;
x:=SETLBOUND(SS,StNo); //設定SS數列起始位置
for i=StNo to datacount do begin
  
if M05[i]>M15[ithen begin
    SS
[i]:=HH[i];
  
end else begin
    SS
[i]:=LL[i];
  
end;
end;


由 cgjj 在 2009-12-04 20:30 發表:

範例3:換用 VBScript 處理迴圈與數列

原碼:

M05
:=MA(C,05);
M15:=MA(C,15);

StNo:=MAX(lbound(M05),lbound(M15)); //有效起始位置,取兩者中最大的
HH:=HLL:=LSS:C*0;
x:=SETLBOUND(SS,StNo); //設定SS數列起始位置
<%
M05=FFL.VarData("M05"'將公式 M05 這數列,導入VBS裡的 M05 數列
M15=FFL.VarData("M15") '
將公式 M15 這數列,導入VBS裡的 M15 數列
SHH
=FFL.VarData("HH"'將公式 HH 這數列,導入VBS裡的 SHH 數列
SLL=FFL.VarData("LL") '
將公式 LL 這數列,導入VBS裡的 SLL 數列
SSS
=FFL.VarData("SS"'將公式 SS 這數列,導入VBS裡的 SSS 數列
for i=lbound(SSS) to ubound(SSS)
  if M05(i)>M15(i) then 
    SSS(i)=SHH(i)
  else 
    SSS(i)=SLL(i)
  end if
next
FFL.VarData("SS")=SSS '
將VBS裡的 SSS 這數列導出給公式 SS 數列
%>



您會發覺 範例2 與 範例3 迴圈中的式子幾乎完全雷同

有學過 Basic 這類傳統程式語言過的人
把它想像成您是在處理 VB中的迴圈與數列
自然就不會被 [i] 迷惑嚕


由 hwyhon 在 2009-12-05 09:23 發表:

感謝版主的回應與教導
盼請版主有機會多用類似此例
於奇狐基本函數能做到的語法與迴圈數列的求法
相輝映的利子

再深入到基本函數無法辦到的式子
如此定是我等狐友之福音阿

__________________

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

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



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


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

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