 |
kokyo
初級會員
註冊日期: Jun 2006
來 自:
文章數量: 16 |
[問題] IF 的用法
請問為何例1ok,例2為何會說"語法錯誤"?百思不解呀。
例1:
If DATATYPE=2 then begin
...
end;
例2:
If L=70 then begin
...
end;
|
|
向版主報告此篇 |  |
|
2007-02-22 04:13 |
|
|
|  |
 |
yuting_lin
凌波微步
註冊日期: May 2006
來 自:
文章數量: 40 |
因為L是序列, 你可以想做是一個陣列 L[i] ,i= 0 ~ barcount
, 所以應該要先取出陣列中的某個值才能相比.
奇狐的教學文件做的極差, 很多重要的東西都沒有講清楚.
實在是應該要好好參考國外的軟體, 像是wealth-lab, 從內建的函式包含範例, 程式語法說明, 到回測系統, 各種東西寫的一清二楚.
|
|
向版主報告此篇 |  |
|
2007-02-23 01:39 |
|
|
|  |
 |
kokyo
初級會員
註冊日期: Jun 2006
來 自:
文章數量: 16 |
引用: 最初由 yuting_lin 發表
因為L是序列, 你可以想做是一個陣列 L[i] ,i= 0 ~ barcount
, 所以應該要先取出陣列中的某個值才能相比.
奇狐的教學文件做的極差, 很多重要的東西都沒有講清楚.
實在是應該要好好參考國外的軟體, 像是wealth-lab, 從內建的函式包含範例, 程式語法說明, 到回測系統, 各種東西寫的一清二楚.
請問該如何取出陣列中的某個值呢?實際想應用的是:
IF MA(c,6)>REF(MA(c,6),1) then
這樣的用法,該如何寫?謝謝了。
|
|
向版主報告此篇 |  |
|
2007-03-15 04:27 |
|
|
|  |
 |
cgjj
總版主

註冊日期: Oct 2003
來 自:
文章數量: 18100 |
引用: 最初由 kokyo 發表
請問該如何取出陣列中的某個值呢?實際想應用的是:
IF MA(c,6)>REF(MA(c,6),1) then
這樣的用法,該如何寫?謝謝了。
大多的狀況都可採用 if(cond,a,b); 來處理
可支援數列對數列的運算,簡單快速
原碼:
HH:=H;
LL:=L;
MM: if(MA(c,6)>REF(MA(c,6),1),(HH+LL)/2,0);
|
|
向版主報告此篇 |  |
|
2007-03-15 09:15 |
|
|
|  |
 |
cgjj
總版主

註冊日期: Oct 2003
來 自:
文章數量: 18100 |
再以 KD 指標的K為例
原公式:
原碼:
{Stochastic Indicator KD Line , KD , 隨機指標KD}
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,M1,1);
新公式: SMA 部份改為自己用數列處理
原碼:
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
KK:c*0;
for I=lbound(RSV)+1 to datacount do begin
KK[I]:=(1*RSV[I]+(M1-1)*KK[I-1])/M1;
end;
註解:
SMA(X,N,M), 求X的N週期移動平均,M為權重。
若 Y=SMA(X,N,M)
則 Y=(M*X+(N-M)*Y')/N, 其中Y'表示上一週期Y值,N必須大於M。
例如: SMA(CLOSE,20,1) 表示求20日移動平均價
|
|
向版主報告此篇 |  |
|
2007-03-15 09:28 |
|
|
|  |
 |
kokyo
初級會員
註冊日期: Jun 2006
來 自:
文章數量: 16 |
感謝cgjj大指導,瞭解了,
但是對奇狐的邏輯仍不大明白,
例如下面的程式,目的是要得知在每一根K線的位置,
EMA已經連續向下幾天了(超過7天算7天)?
不過得到的是最後一根K線的,
不知該如何修改才是,謝謝。
KK:=EMA(C,32); II:=UBOUND(KK); JJ:=0;
For I = 0 to 6 DO BEGIN
if KK[II-I]<KK[II-I-1] THEN JJ:=JJ+1;
END
DRAWNUMBER(1,C,JJ,0);
|
|
向版主報告此篇 |  |
|
2007-03-16 04:54 |
|
|
|  |
 |
kokyo
初級會員
註冊日期: Jun 2006
來 自:
文章數量: 16 |
大大好,再請教:
關於IF…then不可用在序列,但IF(cond,A,B)可以用在序列,雖然大部分的情況可用後者解決,但可以的話還是習慣前者的方式。因此想到山不轉路轉,先用QQ當人頭,如下程式,但是還是發生錯誤了,莫非這樣出來的QQ仍是序列?
QQ:=IF(c>ref(c,1),1,0);
IF QQ then …
感溫。
|
|
向版主報告此篇 |  |
|
2007-03-18 09:50 |
|
|
|  |
 |
alanpaul
初級會員
註冊日期: Aug 2007
來 自:
文章數量: 4 |
小弟在HTS上的程式想轉到奇狐上來用, 但是好像是碰到了這裡討論到的資料序列問題, 沒法直接套用...
原始的程式是要在一個指標成立後, 把旗號設出, 然後等另一個指標成立後再成立買賣訊號:
(HTS):
IF XXX THEN FLAG=1 ELSE IF YYY THEN FLAG=-1
因為FLAG是序列 (沒錯吧? 但是用REF(FLAG,1)好像也調不出來?), 所以沒法用IF...THEN...ELSE, 所以改成:
(奇狐)
FLAG := IF(XXX, 1, IF(YYY, -1, FLAG));
但是問題出現了 ... > 沒有輸出...?
如果寫成
FLAG := IF(XXX. 1, IF(YYY, -1, 0));
是可以跑, 但是就變成FLAG和下一個條件要同時成立才成立買賣訊號, 跑出來天差地遠 (勝率100% vs 50%...我承認是參數優化的關係...)
請問到底要怎麼寫才行呀?
|
|
向版主報告此篇 |  |
|
2007-08-31 23:05 |
|
|
|  |
 |
L0123
資深會員

註冊日期: Mar 2004
來 自: 彰化 海口郎
文章數量: 400 |
引用: 最初由 alanpaul 發表
小弟在HTS上的程式想轉到奇狐上來用, 但是好像是碰到了這裡討論到的資料序列問題, 沒法直接套用...
原始的程式是要在一個指標成立後, 把旗號設出, 然後等另一個指標成立後再成立買賣訊號:
(HTS):
IF XXX THEN FLAG=1 ELSE IF YYY THEN FLAG=-1
因為FLAG是序列 (沒錯吧? 但是用REF(FLAG,1)好像也調不出來?), 所以沒法用IF...THEN...ELSE, 所以改成:
(奇狐)
FLAG := IF(XXX, 1, IF(YYY, -1, FLAG));
但是問題出現了 ... > 沒有輸出...?
如果寫成
FLAG := IF(XXX. 1, IF(YYY, -1, 0));
是可以跑, 但是就變成FLAG和下一個條件要同時成立才成立買賣訊號, 跑出來天差地遠 (勝率100% vs 50%...我承認是參數優化的關係...)
請問到底要怎麼寫才行呀?
FLAG := IF(XXX, 1, IF(YYY, -1, FLAG));
但是問題出現了 ... > 沒有輸出...?
把 FLAG := IF(XXX, 1, IF(YYY, -1, FLAG));
改 FLAG : IF(XXX, 1, IF(YYY, -1, FLAG)); //去除=號
試試看(偶用猜的)
|
|
向版主報告此篇 |  |
|
2007-09-02 02:28 |
|
|
|  |
 |
alanpaul
初級會員
註冊日期: Aug 2007
來 自:
文章數量: 4 |
感謝回覆, 但是問題應該是出在FLAG的初始值上面...
小弟這兩天試著先用Variable: FLAG=0; 宣告, 程式是可以跑, 但是一旦condition XXX or YYY 成立但成交的condion尚不成立時, FLAG本來不應該歸0, 但是實際上卻被歸0了, 像這樣:
Variable: FLAG=0;
FLAG := IF(XXX, 1, IF(YYY,-1), FLAG);
SHORTCONDITION:= IF(FLAG=1 AND AAA, 1, 0);
LONGCONDITION:= IF(FLAG=-1 AND BBB, 1, 0);
FLAG:= IF(SHORTCONDITION or LONGCONDITION, 0, FLAG);
難道奇狐在每一個週期都讀一次Variable初始值, 而沒有把前一週期的Variable值留下? 試著用
FLAG:= IF(XXX, 1, IF(YYY, -1, REF(FLAG,1));
也不行呀!
頭痛!
|
|
向版主報告此篇 |  |
|
2007-09-02 07:43 |
|
|
|  |
本站所有內容未經作者授權禁止轉貼節錄, 發表言論僅供參考勿作為投資決策依據。瀏覽本站請使用 IE 5.5 以上版本, 最佳瀏覽解析度 1024 x 768 全彩。
|
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved. 聯絡我們
|