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

註冊日期: Sep 2014
來  自:
文章數量: 117

請問指標問題

請問版主,我根據下圖


寫了公式如下:
UD:=(H-L)-ABS(O-C);
LF:=POW(UD,4);
ZD:SUM(C*V*LF,20)/SUM(V*LF,20);

在日線還好,但是在一分線會出現嚴重偏離現象(如下圖),請問是哪裡寫錯了?

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

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

回覆: 請問指標問題

引用:
最初由 Rosetta 發表
請問版主,我根據下圖


寫了公式如下:
UD:=(H-L)-ABS(O-C);
LF:=POW(UD,4);
ZD:SUM(C*V*LF,20)/SUM(V*LF,20);

在日線還好,但是在一分線會出現嚴重偏離現象(如下圖),請問是哪裡寫錯了?



按你給的圖
UD:=(H-L)-ABS(O-C);
應修正為 UD:=ABS(C-O)-(H-L);
不過那個只會影響到UD正負

嚴重偏離?
每個指標有每個指標的特性

這個算法!
當除號兩邊的元素,數值差異很大時就會出現您所謂的 "偏離",並非是算錯!

適不適用於1分線,以及適不適用所有商品,需要去視該指標的特性,自己審慎評估抉擇!

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

註冊日期: Sep 2014
來  自:
文章數量: 117

回覆: 回覆: 請問指標問題

引用:
最初由 cgjj 發表
按你給的圖
UD:=(H-L)-ABS(O-C);
應修正為 UD:=ABS(C-O)-(H-L);
不過那個只會影響到UD正負

嚴重偏離?
每個指標有每個指標的特性

這個算法!
當除號兩邊的元素,數值差異很大時就會出現您所謂的 "偏離",並非是算錯!

適不適用於1分線,以及適不適用所有商品,需要去視該指標的特性,自己審慎評估抉擇!



將程式改為:
UD:=ABS(O-C)-(H-L),linethick0;
LF:=POW(UD,4),linethick0;
LF1:=MAX(LF,1),linethick0;
ZD1:=SUM(CLOSE*VOL*LF1,N),linethick0;
ZD2:=SUM(VOL*LF1,N);
ZD:ZD1/ZD2;

以6244茂迪,2020年3月23日為例:
當N=1時,ZD、ZD1、ZD2每個數值皆為正
當N=2時,ZD數值開始出現負值
檢查之後,發現是ZD1造成,但是ZD2是正值,但是裡面個別的數值都不可能為負值,每天的數值也不可能為負值,那如何產生負值的?

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

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

回覆: 回覆: 回覆: 請問指標問題

引用:
最初由 Rosetta 發表
將程式改為:
UD:=ABS(O-C)-(H-L),linethick0;
LF:=POW(UD,4),linethick0;
LF1:=MAX(LF,1),linethick0;
ZD1:=SUM(CLOSE*VOL*LF1,N),linethick0;
ZD2:=SUM(VOL*LF1,N);
ZD:ZD1/ZD2;

以6244茂迪,2020年3月23日為例:
當N=1時,ZD、ZD1、ZD2每個數值皆為正
當N=2時,ZD數值開始出現負值
檢查之後,發現是ZD1造成,但是ZD2是正值,但是裡面個別的數值都不可能為負值,每天的數值也不可能為負值,那如何產生負值的?



測試了一下,確實是有點問題!

初步尋找原因,應該是 POW 函數引起的問題!
發生在POW在第一個參數為數列,且數值為零或負數時。
傳回的零可能不是一個絕對的零(精度差異)
細部還要請工程師確認,確認後會進行修正

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

註冊日期: Sep 2014
來  自:
文章數量: 117

回覆: 回覆: 回覆: 回覆: 請問指標問題

引用:
最初由 cgjj 發表
測試了一下,確實是有點問題!

初步尋找原因,應該是 POW 函數引起的問題!
發生在POW在第一個參數為數列,且數值為零或負數時。
傳回的零可能不是一個絕對的零(精度差異)
細部還要請工程師確認,確認後會進行修正



如果將
LF:=POW(UD,4);
改為
LF:=UD*UD*UD*UD;
這樣不涉及POW函數,但是結果沒變

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

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

回覆: 回覆: 回覆: 回覆: 回覆: 請問指標問題

引用:
最初由 Rosetta 發表
如果將
LF:=POW(UD,4);
改為
LF:=UD*UD*UD*UD;
這樣不涉及POW函數,但是結果沒變



是的! 會請工程師盡快查明,盡快解決。
謝謝您

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

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

應該是 SUM(CLOSE*VOL*LF1,N) 計算過程中,產生巨大的數,超過極限值。導致無法繼續正常計算~~

將各自多乘上個數,縮小巨值,即可正常!

UD:=ABS(O-C)-(H-L),linethick0;
LF:=POW(UD,4),linethick0;
LF1:=MAX(LF,1),linethick0;
ZD1:=SUM(CLOSE*VOL*LF1*0.1,N),linethick0;
ZD2:=SUM(VOL*LF1*0.1,N);
ZD:ZD1/ZD2;


其實乘上 LF1 是多餘的,根本沒必要!!!
可直接簡化為這樣!
ZD1:=SUM(CLOSE*VOL,N),linethick0;
ZD2:=SUM(VOL,N);
ZD:ZD1/ZD2;

乘太多東西,容易引起巨數,可能會超過軟體能處理的巨數極限!

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

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

回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 請問指標問題

工程師已經查明原因了!

是SUM函數算法中的單精度浮點誤差引起的攪動,造成了計算失真。
我手邊的最新測試版本,已經修正了這個問題,已經可正常算出數值。
下次軟體升級就會包含此部分的功能修正!

若有急需可先私訊,可先提供新的版本EXE

cgjj 附帶上了此圖片:

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

註冊日期: Sep 2014
來  自:
文章數量: 117

回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 請問指標問題

引用:
最初由 cgjj 發表
工程師已經查明原因了!

是SUM函數算法中的單精度浮點誤差引起的攪動,造成了計算失真。
我手邊的最新測試版本,已經修正了這個問題,已經可正常算出數值。
下次軟體升級就會包含此部分的功能修正!

若有急需可先私訊,可先提供新的版本EXE



將公式改為:
UD:ABS(O-C)-(H-L),linethick0;
LF:POW(UD,4),linethick0;
LF1:MAX(LF,1),linethick0;
ZD1:MA(CLOSE*VOL*LF1,N)*N,linethick0;
ZD2:MA(VOL*LF1,N)*N,linethick0;
ZD:ZD1/ZD2;
避開SUM函數,結果一樣

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

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

回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 請問指標問題

引用:
最初由 Rosetta 發表
將公式改為:
UD:ABS(O-C)-(H-L),linethick0;
LF:POW(UD,4),linethick0;
LF1:MAX(LF,1),linethick0;
ZD1:MA(CLOSE*VOL*LF1,N)*N,linethick0;
ZD2:MA(VOL*LF1,N)*N,linethick0;
ZD:ZD1/ZD2;
避開SUM函數,結果一樣



Yes!
工程師會把有累加成分的函數,都檢視過一次,進行修正! (目前正在進行中)
謝謝回報 ^^

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

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

我手邊的最新測試版本,已經修正了MA這個問題,已經可正常算出數值。

並非有累加成分的函數都有這個問題存在~~

是SUM 和 MA 這兩個函數,有用到了相同的累加優化算法,該算法會有單精度浮點計算累計誤差的問題,現在都已改正。

下次軟體升級就會包含此部分的功能修正!

基本上這問題只有累加到數值大小超過單精度有效位數範圍以上時,才會開始有累計誤差。故不常見!

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

註冊日期: Sep 2014
來  自:
文章數量: 117

引用:
最初由 cgjj 發表
我手邊的最新測試版本,已經修正了MA這個問題,已經可正常算出數值。

並非有累加成分的函數都有這個問題存在~~

是SUM 和 MA 這兩個函數,有用到了相同的累加優化算法,該算法會有單精度浮點計算累計誤差的問題,現在都已改正。

下次軟體升級就會包含此部分的功能修正!

基本上這問題只有累加到數值大小超過單精度有效位數範圍以上時,才會開始有累計誤差。故不常見!



請問版主,有沒有辦法將
ZD1:SUM(CLOSE*VOL*LF1,N)*N,linethick0;
不用SUM、MA函數而可以表達的方式,謝謝

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

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

引用:
最初由 Rosetta 發表
請問版主,有沒有辦法將
ZD1:SUM(CLOSE*VOL*LF1,N)*N,linethick0;
不用SUM、MA函數而可以表達的方式,謝謝



是可以用迴圈自行去累加去實現這部分(範例如下)
但速度會比用內建的 SUM 算來的慢。故不建議! (尤其在資料量大時)
預計最快這周就會發佈軟體升級!

原碼:
ZD1:=C*0; CV:=CLOSE*VOL*LF1; for i=N to datacount do begin for j=i downto i-N+1 do begin ZD1[i]:=ZD1[i]+CV[j]; end; end; ZD1:=ZD1*N; x:=SETLBOUND(ZD1,N);

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

註冊日期: Sep 2014
來  自:
文章數量: 117

引用:
最初由 cgjj 發表
是可以用迴圈自行去累加去實現這部分(範例如下)
但速度會比用內建的 SUM 算來的慢。故不建議! (尤其在資料量大時)
預計最快這周就會發佈軟體升級!

原碼:
ZD1:=C*0; CV:=CLOSE*VOL*LF1; for i=N to datacount do begin for j=i downto i-N+1 do begin ZD1[i]:=ZD1[i]+CV[j]; end; end; ZD1:=ZD1*N; x:=SETLBOUND(ZD1,N);



1.請問版主,x:=SETLBOUND(ZD1,N);代表什麼意思,怎麼看他都等於N

2.將公式改為
UD:ABS(O-C)-(H-L),linethick0;
LF:POW(UD,4),linethick0;
LF1:MAX(LF,1),linethick0;

ZD1:=C*0; CV:=CLOSE*VOL*LF1;
for i=N to datacount do begin
for j=i downto i-N+1 do begin
ZD1[i]:=ZD1[i]+CV[j];
end;
end;
ZD1:ZD1*N,linethick0;
X:SETLBOUND(ZD1,N),linethick0;
ZD2:SUM(VOL*LF1,N),linethick0;
ZD:ZD1/ZD2;

雖然ZD1為正值了,但是看起來還是有問題,還不如用原始程式+還權圖來的好

3.如果要將其寫入選股系統,又不想在選項內將權息校正勾選,要加上哪段程式碼,謝謝

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

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

引用:
最初由 Rosetta 發表
1.請問版主,x:=SETLBOUND(ZD1,N);代表什麼意思,怎麼看他都等於N

2.將公式改為
UD:ABS(O-C)-(H-L),linethick0;
LF:POW(UD,4),linethick0;
LF1:MAX(LF,1),linethick0;

ZD1:=C*0; CV:=CLOSE*VOL*LF1;
for i=N to datacount do begin
for j=i downto i-N+1 do begin
ZD1[i]:=ZD1[i]+CV[j];
end;
end;
ZD1:ZD1*N,linethick0;
X:SETLBOUND(ZD1,N),linethick0;
ZD2:SUM(VOL*LF1,N),linethick0;
ZD:ZD1/ZD2;

雖然ZD1為正值了,但是看起來還是有問題,還不如用原始程式+還權圖來的好

3.如果要將其寫入選股系統,又不想在選項內將權息校正勾選,要加上哪段程式碼,謝謝




x:=SETLBOUND(ZD1,N);
是將 ZD1 這個數列的下界(有效起點)設為第N根


目前:
用已還權的資料做選股,一定要在系統選項中勾選[選股,交易系統權息]校正

若是應用在日線,且是採用未還權的資料做日線選股
才可以透過 SEQDATA 函數取得未還權的日線資料,例如:
未還權日線之收盤價:SEQDATA('','DAY','CLOSE');

向版主報告此篇 | 查IP位址
Old Post 2021-06-03 09:52
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
全部時間均為台灣時間, 現在時間為18:23 發表新主題    回覆主題
總頁數 (2): [1] 2 »   上一主題   下一主題
顯示可列印版本 | 訂閱此主題

論壇跳轉:
主題評分:

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