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

註冊日期: Jan 2012
來  自:
文章數量: 8

請問版主 IF 語法錯誤 要如何修正

/TR:= MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
TR:= MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
CI:=log((sum(TR,14)/(HHV(high,14)-LLV(Low,14))))/log(14);
CIA:EMA(CI,1);
Partline(CIA<=ref(CIA,1),CIA), color0066cc,linethick4;
Partline(CIA>ref(CIA,1),CIA), colorgray,linethick4;


Partline(1,0.618),colorbrown,linethick1;
Partline(1,0.382),colorbrown,linethick1;
Drawicon(CI>=0.618, 0.618,12);
Drawicon(CI<0.382,0.382,10);


{Relative Strenth Indicator , RSI , 相對強弱指標}
//LC := REF(CLOSE,1);
//RSI:SMA(MAX(CLOSE-LC,0),Q,1)/SMA(ABS(CLOSE-LC),Q,1)*100,colorblue,linethick2;
Partline(1,0.70),colorgray,linethick1;
Partline(1,0.30),colorgray,linethick1;

oo:= (o + ref(c,1)) / 2;
hh:= MAX(h, ref(c,1));
ll:= MIN(l, ref(c,1));
cc := (oo + hh + ll + c) / 4;
L0 := (1 -CI) * cc + CI * ref(L0,1);
L1 := -CI * L0 + ref(L0,1) + CI * ref(L1,1);
L2 := -CI * L1 + ref(L1,1) + CI * ref(L2,1);
L3 := -CI * L2 + ref(L2,1) + CI * ref(L3,1);

if L0 >= L1 then begin
CU1 := L0 - L1;
CD1 := 0;
end else begin
CD1 := L1 - L0;
CU1 := 0;
end;
if L1 >= L2 then begin
CU2 := CU1 + L1 - L2;
CD2 := CD1;
end else begin
CD2 := CD1 + L2 - L1;
CU2 := CU1;
end;
if L2 >= L3 then begin
CU := CU2 + L2 - L3;
CD := CD2;
end else begin
CU := CU2;
CD := CD2 + L3 - L2;
end;

RSI : if CU + CD <> 0 then CU / (CU + CD) else 0;

上面語法錯在 IF then else 部分 要如何修正

謝謝

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

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

回覆: 請問版主 IF 語法錯誤 要如何修正

引用:
最初由 eyho 發表
/TR:= MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
TR:= MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
CI:=log((sum(TR,14)/(HHV(high,14)-LLV(Low,14))))/log(14);
CIA:EMA(CI,1);
Partline(CIA<=ref(CIA,1),CIA), color0066cc,linethick4;
Partline(CIA>ref(CIA,1),CIA), colorgray,linethick4;


Partline(1,0.618),colorbrown,linethick1;
Partline(1,0.382),colorbrown,linethick1;
Drawicon(CI>=0.618, 0.618,12);
Drawicon(CI<0.382,0.382,10);


{Relative Strenth Indicator , RSI , 相對強弱指標}
//LC := REF(CLOSE,1);
//RSI:SMA(MAX(CLOSE-LC,0),Q,1)/SMA(ABS(CLOSE-LC),Q,1)*100,colorblue,linethick2;
Partline(1,0.70),colorgray,linethick1;
Partline(1,0.30),colorgray,linethick1;

oo:= (o + ref(c,1)) / 2;
hh:= MAX(h, ref(c,1));
ll:= MIN(l, ref(c,1));
cc := (oo + hh + ll + c) / 4;
L0 := (1 -CI) * cc + CI * ref(L0,1);
L1 := -CI * L0 + ref(L0,1) + CI * ref(L1,1);
L2 := -CI * L1 + ref(L1,1) + CI * ref(L2,1);
L3 := -CI * L2 + ref(L2,1) + CI * ref(L3,1);

if L0 >= L1 then begin
CU1 := L0 - L1;
CD1 := 0;
end else begin
CD1 := L1 - L0;
CU1 := 0;
end;
if L1 >= L2 then begin
CU2 := CU1 + L1 - L2;
CD2 := CD1;
end else begin
CD2 := CD1 + L2 - L1;
CU2 := CU1;
end;
if L2 >= L3 then begin
CU := CU2 + L2 - L3;
CD := CD2;
end else begin
CU := CU2;
CD := CD2 + L3 - L2;
end;

RSI : if CU + CD <> 0 then CU / (CU + CD) else 0;

上面語法錯在 IF then else 部分 要如何修正

謝謝



這不是奇狐的語法

不同軟體
就算語法相同, 算出的結果不一定是一樣的
運算基礎方法和處理方式等等.... 都會造成差異

為避免誤用,請給原理,否則恕不協助

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

註冊日期: Jan 2012
來  自:
文章數量: 8

這是LaGuerre Time transform 的方式來計算rsi, 這個計算只是邏輯,希望改成奇狐語法. 再次感謝,望版主協助。

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

註冊日期: Jan 2012
來  自:
文章數量: 8

若是板主有興趣 LaGuerre Time Transform請參考下文:
https://en.wikipedia.org/wiki/Laguerre_transform

謝謝

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

註冊日期: Jan 2012
來  自:
文章數量: 8

或參考下文

http://systemtradersuccess.com/lagu...vs-classic-rsi/

謝謝

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

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

引用:
最初由 eyho 發表
這是LaGuerre Time transform 的方式來計算rsi, 這個計算只是邏輯,希望改成奇狐語法. 再次感謝,望版主協助。

若是板主有興趣 LaGuerre Time Transform請參考下文:
https://en.wikipedia.org/wiki/Laguerre_transform

或參考下文

http://systemtradersuccess.com/lagu...vs-classic-rsi/

謝謝



兩個連結中的算法,跟您給的程式碼,差異頗大
給您小部分的修改示例,做為參考

原始程式:
if L0 >= L1 then begin
CU1 := L0 - L1;
CD1 := 0;
end else begin
CD1 := L1 - L0;
CU1 := 0;
end;

修改後的樣子:
CU1:=if(L0 >= L1, L0 - L1, 0 );
CD1:=if(L0 >= L1, 0, L1 - L0 );

若想深入了解IF,可參考這邊的討論
http://www.chiefox.com.tw/bbs/showt...=&threadid=9991

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

註冊日期: Jan 2012
來  自:
文章數量: 8

謝謝版主
現在 IF語法沒問題了 新問題出現

oo:= (o + ref(c,1)) / 2;
hh:= MAX(h, ref(c,1));
ll:= MIN(l, ref(c,1));
cc := (oo + hh + ll + c) / 4;

以上ok 下一行無法計算出數值

L0 := (1 -CI) * cc + CI * ref(L0,1);

這個邏輯是:

L0 是 (1-CI) * cc 加 CI * 之前的 L0值 ....

不知道為何 語法沒錯 但沒有算出值 ????

再次感謝

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

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

引用:
最初由 eyho 發表
謝謝版主
現在 IF語法沒問題了 新問題出現

oo:= (o + ref(c,1)) / 2;
hh:= MAX(h, ref(c,1));
ll:= MIN(l, ref(c,1));
cc := (oo + hh + ll + c) / 4;

以上ok 下一行無法計算出數值

L0 := (1 -CI) * cc + CI * ref(L0,1);

這個邏輯是:

L0 是 (1-CI) * cc 加 CI * 之前的 L0值 ....

不知道為何 語法沒錯 但沒有算出值 ????

再次感謝



您這式子
L0 := (1 -CI) * cc + CI * ref(L0,1);
算 L0 有用到 L0 前一根的值,也就是有累算
有累算,在奇狐中必須跑迴圈來實現
(也必須決定L0起始值為何)

它跟 EMA 的狀況是相同的,其也是有累算
請見下面這範例,就知道如何處理它。
http://www.chiefox.com.tw/bbs/showt...=&threadid=9836

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

註冊日期: Jan 2012
來  自:
文章數量: 8

引用:
最初由 38ORCHID 發表
要取MA(C,50)的數值,第52根起取EMA(C,50)的數值,謝謝!


//按前面說的, 應是第51根起唷

原碼:


XX:=MA(C,50);

StNo:=lbound(XX); 請問這是什麼用意?

YY:XX*0; 請問這是什麼用意?


YY[StNo]:=XX[StNo]; 請問這是什麼用意?


for I=StNo+1 to datacount do begin

YY[I]:=(2*XX[i]+(N-1)*YY[I-1])/(N+1);

end; 請問datacount是?

不好意思 不清楚如何寫?

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

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

引用:
最初由 eyho 發表
請問datacount是?

不好意思 不清楚如何寫?



datacount 是當前週期總K棒數

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

註冊日期: Jan 2012
來  自:
文章數量: 8

請問版主

L0 := (1 -CI) * cc + CI * ref(L0,1);
是要改成這樣嗎

L0X:=(1-CI)*cc;
StNo:=lbound(L0X);
L0:=L0X*0;
L0[StNo]:=L0x[StNo];
for i=StNo+1 to datacount do begin
L0[i]:=L0X[i]+CI*L0[i-1];
end;

謝謝

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

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

引用:
最初由 eyho 發表
請問版主

L0 := (1 -CI) * cc + CI * ref(L0,1);
是要改成這樣嗎

L0X:=(1-CI)*cc;
StNo:=lbound(L0X);
L0:=L0X*0;
L0[StNo]:=L0x[StNo];
for i=StNo+1 to datacount do begin
L0[i]:=L0X[i]+CI*L0[i-1];
end;

謝謝



CI 也是數列,在該迴圈中必須以 CI[i] 存取

您沒有明確定義 L0 初始值如何算
故答案對錯請自行判斷

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

註冊日期: Jan 2012
來  自:
文章數量: 8

還是不了解也不懂迴圈語法 所以不懂版主提示

謝謝版主

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

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

引用:
最初由 eyho 發表
還是不了解也不懂迴圈語法 所以不懂版主提示

謝謝版主



原始為
for i=StNo+1 to datacount do begin
L0[i]:=L0X[i]+CI*L0[i-1];
end;

更改為
for i=StNo+1 to datacount do begin
L0[i]:=L0X[i]+CI[i]*L0[i-1];
end;

L0 為累算值,最初必定會有一個初始值
初始值為何,您必須定義給它
按目前的程式
您給的是 (1-CI)*cc 第一個有效數值
結果是否為您想要的,對錯與否,請自行判斷

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

論壇跳轉:
主題評分:

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