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

奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- SAR轉向問題 (http://www.chiefox.com.tw/bbs/showthread.php?threadid=21837)


由 a9681054 在 2019-04-01 18:22 發表:

SAR轉向問題

版主你好,

目前內建的SAR, 是當K線交叉到SAR時,下一根K就開始進行多空轉向,想增加一個條件

規則如下:
(向上)
1)原趨勢向下走時,當有K棒最高價交叉到SAR,且交叉的當根K棒收盤價要大於SAR才轉向,否則SAR維持原向下趨勢

(向下)
1)原趨勢向上走時,當有K棒最低價交叉到SAR,且交叉的當根K棒收盤價要小於SAR才轉向,否則SAR維持原向上趨勢

以上需求,麻煩版主協助!

__________________
chiu


由 a9681054 在 2019-04-01 18:29 發表:

更正規則:

規則如下:
(向上)
原趨勢向下走時,當有K棒最高價交叉到SAR,且交叉的當根K棒收盤價要大於SAR(下一根K棒)才轉向,否則SAR維持原向下趨勢

(向下)
原趨勢向上走時,當有K棒最低價交叉到SAR,且交叉的當根K棒收盤價要小於SAR(下一根K棒)才轉向,否則SAR維持原向上趨勢

以上需求,麻煩版主協助!

__________________
chiu


由 cgjj 在 2019-04-02 10:10 發表:

引用:
最初由 a9681054 發表
更正規則:

規則如下:
(向上)
原趨勢向下走時,當有K棒最高價交叉到SAR,且交叉的當根K棒收盤價要大於SAR(下一根K棒)才轉向,否則SAR維持原向下趨勢

(向下)
原趨勢向上走時,當有K棒最低價交叉到SAR,且交叉的當根K棒收盤價要小於SAR(下一根K棒)才轉向,否則SAR維持原向上趨勢

以上需求,麻煩版主協助!



SAR 公式是由內建的 SAR 函數直接完成
無法改變函數內部的轉向算法

您必須去了解 SAR 原理,重新自行撰寫SAR指標
才有可能去實現您所想的轉向方法


由 a9681054 在 2019-04-02 10:54 發表:

了解,謝謝版主說明

__________________
chiu


由 a9681054 在 2019-04-03 09:21 發表:

版主你好,
SAR(10,2,20)當極值走到20上限時,只想在每次第1個20畫上記號,公式要如何表達?謝謝

__________________
chiu


由 cgjj 在 2019-04-03 10:40 發表:

引用:
最初由 a9681054 發表
版主你好,
SAR(10,2,20)當極值走到20上限時,只想在每次第1個20畫上記號,公式要如何表達?謝謝



SAR 公式是由內建的 SAR 函數直接完成
故無法直接得知,當前K棒是否達到極值

您需自行依據 SAR 原理,重新撰寫SAR指標
才有可能去實現您要的...


由 a9681054 在 2019-04-03 10:56 發表:

了解,謝謝

__________________
chiu


由 a9681054 在 2019-04-22 22:15 發表:

版主你好,
我有試著去了解sar原理,擬了上下翻轉新規則(為與原sar做區分, 名稱叫yar)如下,程式方面麻煩版主幫忙,謝謝~

**以最近台指期為例
//往上拋物線規則定義(轉折翻轉採用收盤價)
1)例如1/8確認收盤價>當日yar後,隔天1/9才開始轉為向上翻轉.
2)上翻轉第1天…取前次往下翻轉的1/4最低點9305當初始的yar.
3)上翻轉第1天…取1/8收盤價>當日yar那一天的最高點9611當初始區間極值(ep),之後上漲後的ep為每日到昨天為止的上漲最高點.
4)上翻轉第1天…加速因子(af)值從0.02開始,第2天af取決於前二天高點做比較,假如昨高>前高,則af+0.02否則不變,唯其af最高累加上限值為0.2,當af值到0.2時,爾後即使股價再創新高,其af值還是以0.2代入計算.
5)上翻轉第1個yar計算…今yar=昨yar+af*(昨ep-昨yar)


//往下拋物線規則定義(轉折翻採用收盤價)
1)例如3/5確認收盤價<當日yar後,隔天3/6才開始轉為向下翻轉.
2)下翻轉第1天…取前次往上翻轉的3/4最高點10400當初始的yar.
3)下翻轉第1天…取3/5收盤價<當日yar那一天的最低點10248當初始區間極值(ep),之後上漲後的ep為每日到昨天為止的下跌最低點.
4)下翻轉第1天…加速因子(af)值從0.02開始,第2天af取決於前二天低點做比較,假如昨低<前低,則af+0.02否則不變,唯其af最高累加上限值為0.2,當af值到0.2時,爾後即使股價再創新低,其af值還是以0.2代入計算.
5)下翻轉第1個yar計算…今yar=昨yar+af*(昨ep-昨yar)

__________________
chiu


由 cgjj 在 2019-04-23 08:53 發表:

引用:
最初由 a9681054 發表
版主你好,
我有試著去了解sar原理,擬了上下翻轉新規則(為與原sar做區分, 名稱叫yar)如下,程式方面麻煩版主幫忙,謝謝~

**以最近台指期為例
//往上拋物線規則定義(轉折翻轉採用收盤價)
1)例如1/8確認收盤價>當日yar後,隔天1/9才開始轉為向上翻轉.
2)上翻轉第1天…取前次往下翻轉的1/4最低點9305當初始的yar.
3)上翻轉第1天…取1/8收盤價>當日yar那一天的最高點9611當初始區間極值(ep),之後上漲後的ep為每日到昨天為止的上漲最高點.
4)上翻轉第1天…加速因子(af)值從0.02開始,第2天af取決於前二天高點做比較,假如昨高>前高,則af+0.02否則不變,唯其af最高累加上限值為0.2,當af值到0.2時,爾後即使股價再創新高,其af值還是以0.2代入計算.
5)上翻轉第1個yar計算…今yar=昨yar+af*(昨ep-昨yar)


//往下拋物線規則定義(轉折翻採用收盤價)
1)例如3/5確認收盤價<當日yar後,隔天3/6才開始轉為向下翻轉.
2)下翻轉第1天…取前次往上翻轉的3/4最高點10400當初始的yar.
3)下翻轉第1天…取3/5收盤價<當日yar那一天的最低點10248當初始區間極值(ep),之後上漲後的ep為每日到昨天為止的下跌最低點.
4)下翻轉第1天…加速因子(af)值從0.02開始,第2天af取決於前二天低點做比較,假如昨低<前低,則af+0.02否則不變,唯其af最高累加上限值為0.2,當af值到0.2時,爾後即使股價再創新低,其af值還是以0.2代入計算.
5)下翻轉第1個yar計算…今yar=昨yar+af*(昨ep-昨yar)



1. 請先試著自己嘗試寫作看看
2. 您沒有定義首算點之YAR,要採上翻還是下翻計算?(如何判定)


由 a9681054 在 2019-04-23 09:59 發表:

版主你好,

1.我有嚐試寫過但沒辦法完成.....
2.如何判定?我有做以下圖片統計推算.....

__________________
chiu


由 a9681054 在 2019-04-23 10:00 發表:

下翻轉

__________________
chiu


由 cgjj 在 2019-04-23 17:56 發表:

引用:
最初由 a9681054 發表
版主你好,

1.我有嚐試寫過但沒辦法完成.....
2.如何判定?我有做以下圖片統計推算.....



並沒有回答到我所問的 2. 唷!

圖片中沒有說明!!!
歷史K棒首個 yar值,您是如決定要用上翻或下翻來計算它?


由 a9681054 在 2019-04-23 19:39 發表:

版主好,
就採上翻,謝謝∼

__________________
chiu


由 cgjj 在 2019-04-24 00:22 發表:

引用:
最初由 a9681054 發表
版主好,
就採上翻,謝謝∼



首個yar,並沒有 昨yar 可供計算!!!


由 a9681054 在 2019-04-24 10:22 發表:

版主你好,

上翻...首個yar,取4天前的最低點
下翻...首個yar,取4天前的最高點

__________________
chiu


由 cgjj 在 2019-04-24 23:44 發表:

引用:
最初由 a9681054 發表
版主你好,

上翻...首個yar,取4天前的最低點
下翻...首個yar,取4天前的最高點



規則還是不完善,且有可能會衝突!!!!!!

您說: 歷史K棒首個 yar值,就採上翻計算
又說: 上翻...首個yar,取4天前的最低點

3)上翻轉第1天…取1/8收盤價>當日yar那一天的最高點9611當初始區間極值(ep),

如此在首根,3) 的假設則有可能不會成立!
雖然首個yar是取4天前的最低點
但你怎知道首個yar這根,走勢一定是往上呢?
也可能是 收盤價<當日yar 呀!
這時 ep 要給多少? <== 衝突

請試著自己先驗算一遍
把歷史首個 yar值 與 ep 值算出來
連算二根以上無誤確定可行後
再寫出邏輯規則來


由 a9681054 在 2019-04-25 08:55 發表:

版主你好,
了解,我再想一下.....謝謝

__________________
chiu


由 cgjj 在 2019-04-25 09:59 發表:

引用:
最初由 a9681054 發表
版主你好,
了解,我再想一下.....謝謝



不客氣^^


由 a9681054 在 2019-04-25 18:30 發表:

版主你好,

針對版主所提問題,我驗算後重新擬規則如下,再麻煩確認是否可行?謝謝~

第2版….2019/4/25
//往上拋物線規則定義
1)以(歷史)前二根收盤價做比較,假如c>ref(c,1),則在第4根k棒開始起畫上翻yar.
2)(歷史)上翻轉第1天…取前三天最低點當初始的yar.
3)(歷史)上翻轉第1天…取前三天最高點當初始區間極值(ep),之後上漲後的ep為每日到昨天為止的上漲最高點.
4)(之後)上翻轉第1天…取前次往下翻轉的最低點當初始的yar.
5)(之後)上翻轉第1天…取收盤價>當日yar那一天的最高點當初始區間極值(ep),之後上漲後的ep為每日到昨天為止的上漲最高點.
6)上翻轉第1天…加速因子(af)值從0.02開始,第2天af取決於前二天高點做比較,假如昨高>前高,則af+0.02否則不變,唯其af最高累加上限值為0.2,當af值到0.2時,爾後即使股價再創新高,其af值還是以0.2代入計算.
7)上翻轉第1個yar計算…今yar=昨yar+af*(昨ep-昨yar)
8)上翻轉後直到當日收盤價<當日上翻轉的yar, 上翻才結束.


//往下拋物線規則定義
1)以(歷史)前二根收盤價做比較,假如c<ref(c,1),則在第4根k棒開始起畫下翻yar.
2) (歷史)下翻轉第1天…取前三天最高點當初始的yar.
3) (歷史)下翻轉第1天…取前三天最低點當初始區間極值(ep),之後下跌後的ep為每日到昨天為止的下跌最低點.
4)(之後)下翻轉第1天…取前次往上翻轉的最高點當初始的yar.
5)(之後)下翻轉第1天…取收盤價<當日yar那一天的最低點當初始區間極值(ep),之後下跌後的ep為每日到昨天為止的下跌最低點.
6)下翻轉第1天…加速因子(af)值從0.02開始,第2天af取決於前二天低點做比較,假如昨低<前低,則af+0.02否則不變,唯其af最高累加上限值為0.2,當af值到0.2時,爾後即使股價再創新低,其af值還是以0.2代入計算.
7)下翻轉第1個yar計算…今yar=昨yar+af*(昨ep-昨yar)
8)下翻轉後直到當日收盤價>當日下翻轉的yar, 下翻才結束.

__________________
chiu


由 cgjj 在 2019-04-26 14:04 發表:

引用:
最初由 a9681054 發表
版主你好,

針對版主所提問題,我驗算後重新擬規則如下,再麻煩確認是否可行?謝謝~

第2版….2019/4/25
//往上拋物線規則定義
1)以(歷史)前二根收盤價做比較,假如c>ref(c,1),則在第4根k棒開始起畫上翻yar.
2)(歷史)上翻轉第1天…取前三天最低點當初始的yar.
3)(歷史)上翻轉第1天…取前三天最高點當初始區間極值(ep),之後上漲後的ep為每日到昨天為止的上漲最高點.
4)(之後)上翻轉第1天…取前次往下翻轉的最低點當初始的yar.
5)(之後)上翻轉第1天…取收盤價>當日yar那一天的最高點當初始區間極值(ep),之後上漲後的ep為每日到昨天為止的上漲最高點.
6)上翻轉第1天…加速因子(af)值從0.02開始,第2天af取決於前二天高點做比較,假如昨高>前高,則af+0.02否則不變,唯其af最高累加上限值為0.2,當af值到0.2時,爾後即使股價再創新高,其af值還是以0.2代入計算.
7)上翻轉第1個yar計算…今yar=昨yar+af*(昨ep-昨yar)
8)上翻轉後直到當日收盤價<當日上翻轉的yar, 上翻才結束.


//往下拋物線規則定義
1)以(歷史)前二根收盤價做比較,假如c<ref(c,1),則在第4根k棒開始起畫下翻yar.
2) (歷史)下翻轉第1天…取前三天最高點當初始的yar.
3) (歷史)下翻轉第1天…取前三天最低點當初始區間極值(ep),之後下跌後的ep為每日到昨天為止的下跌最低點.
4)(之後)下翻轉第1天…取前次往上翻轉的最高點當初始的yar.
5)(之後)下翻轉第1天…取收盤價<當日yar那一天的最低點當初始區間極值(ep),之後下跌後的ep為每日到昨天為止的下跌最低點.
6)下翻轉第1天…加速因子(af)值從0.02開始,第2天af取決於前二天低點做比較,假如昨低<前低,則af+0.02否則不變,唯其af最高累加上限值為0.2,當af值到0.2時,爾後即使股價再創新低,其af值還是以0.2代入計算.
7)下翻轉第1個yar計算…今yar=昨yar+af*(昨ep-昨yar)
8)下翻轉後直到當日收盤價>當日下翻轉的yar, 下翻才結束.



少考慮一種情況!
(歷史)前二根收盤價做比較,若 c=ref(c,1) 您要怎樣處理?


由 a9681054 在 2019-04-26 15:51 發表:

引用:
最初由 cgjj 發表
少考慮一種情況!
(歷史)前二根收盤價做比較,若 c=ref(c,1) 您要怎樣處理?



版主好,

我再想一下......謝謝~

__________________
chiu


由 a9681054 在 2019-04-29 09:55 發表:

版主你好,

yar規則重新整理如下,麻煩版主再幫忙確認是否可行?謝謝~

第3版….2019/4/28
//往上拋物線規則定義
1)以(歷史)前三根收盤價做比較,假如c>=ref(c,2),則在第4根k棒開始起畫上翻yar.
2)(歷史)上翻轉第1天…取前三天最低點當初始的yar.
3)(歷史)上翻轉第1天…取前三天最高點當初始區間極值(ep),之後上漲後的ep為每日到昨天為止的上漲最高點.
4)(之後)上翻轉第1天…取從前次收盤價<當日yar那一天開始到往下翻轉的區間最低點當初始的yar.
5)(之後)上翻轉第1天…取收盤價>當日yar那一天的最高點當初始區間極值(ep),之後上漲後的ep為每日到昨天為止的上漲最高點.
6)上翻轉第1天…加速因子(af)值從0.02開始,第2天af取決於前二天高點做比較,假如昨高>前高,則af+0.02否則不變,唯其af最高累加上限值為0.2,當af值到0.2時,爾後即使股價再創新高,其af值還是以0.2代入計算.
7)上翻轉第1個yar計算…今yar=昨yar+af*(昨ep-昨yar)
8)上翻轉後直到當日收盤價<當日yar, 上翻才結束,並由隔天開始往下翻轉.


//往下拋物線規則定義
1)以(歷史)前三根收盤價做比較,假如c<ref(c,2),則在第4根k棒開始起畫下翻yar.
2) (歷史)下翻轉第1天…取前三天最高點當初始的yar.
3) (歷史)下翻轉第1天…取前三天最低點當初始區間極值(ep),之後下跌後的ep為每日到昨天為止的下跌最低點.
4)(之後)下翻轉第1天…取從前次收盤價>當日yar那一天開始到往上翻轉的區間最高點當初始的yar.
5)(之後)下翻轉第1天…取收盤價<當日yar那一天的最低點當初始區間極值(ep),之後下跌後的ep為每日到昨天為止的下跌最低點.
6)下翻轉第1天…加速因子(af)值從0.02開始,第2天af取決於前二天低點做比較,假如昨低<前低,則af+0.02否則不變,唯其af最高累加上限值為0.2,當af值到0.2時,爾後即使股價再創新低,其af值還是以0.2代入計算.
7)下翻轉第1個yar計算…今yar=昨yar+af*(昨ep-昨yar)
8)下翻轉後直到當日收盤價>當日yar, 下翻才結束, 並由隔天開始往上翻轉.

__________________
chiu


由 cgjj 在 2019-04-29 21:55 發表:

引用:
最初由 a9681054 發表
版主你好,

yar規則重新整理如下,麻煩版主再幫忙確認是否可行?謝謝~

第3版….2019/4/28
//往上拋物線規則定義
1)以(歷史)前三根收盤價做比較,假如c>=ref(c,2),則在第4根k棒開始起畫上翻yar.
2)(歷史)上翻轉第1天…取前三天最低點當初始的yar.
3)(歷史)上翻轉第1天…取前三天最高點當初始區間極值(ep),之後上漲後的ep為每日到昨天為止的上漲最高點.
4)(之後)上翻轉第1天…取從前次收盤價<當日yar那一天開始到往下翻轉的區間最低點當初始的yar.
5)(之後)上翻轉第1天…取收盤價>當日yar那一天的最高點當初始區間極值(ep),之後上漲後的ep為每日到昨天為止的上漲最高點.
6)上翻轉第1天…加速因子(af)值從0.02開始,第2天af取決於前二天高點做比較,假如昨高>前高,則af+0.02否則不變,唯其af最高累加上限值為0.2,當af值到0.2時,爾後即使股價再創新高,其af值還是以0.2代入計算.
7)上翻轉第1個yar計算…今yar=昨yar+af*(昨ep-昨yar)
8)上翻轉後直到當日收盤價<當日yar, 上翻才結束,並由隔天開始往下翻轉.


//往下拋物線規則定義
1)以(歷史)前三根收盤價做比較,假如c<ref(c,2),則在第4根k棒開始起畫下翻yar.
2) (歷史)下翻轉第1天…取前三天最高點當初始的yar.
3) (歷史)下翻轉第1天…取前三天最低點當初始區間極值(ep),之後下跌後的ep為每日到昨天為止的下跌最低點.
4)(之後)下翻轉第1天…取從前次收盤價>當日yar那一天開始到往上翻轉的區間最高點當初始的yar.
5)(之後)下翻轉第1天…取收盤價<當日yar那一天的最低點當初始區間極值(ep),之後下跌後的ep為每日到昨天為止的下跌最低點.
6)下翻轉第1天…加速因子(af)值從0.02開始,第2天af取決於前二天低點做比較,假如昨低<前低,則af+0.02否則不變,唯其af最高累加上限值為0.2,當af值到0.2時,爾後即使股價再創新低,其af值還是以0.2代入計算.
7)下翻轉第1個yar計算…今yar=昨yar+af*(昨ep-昨yar)
8)下翻轉後直到當日收盤價>當日yar, 下翻才結束, 並由隔天開始往上翻轉.

原碼:
if datacount<3 then exit; //K棒不足 CC:=C; HH:=H; LL:=L; HH3:=HHV(H,3); LL3:=LLV(L,3); RHCK:=ref(H>ref(H,1),1); RLCK:=ref(L<ref(L,1),1); DIR:=CC[3]>=CC[1]; DIR:=1-(DIR=0)*2; YAR:CC*0 CIRCLEDOT; x:=setlbound(YAR,3); if DIR=1 then begin yar[3]:=LL3[3]; ep:=HH3[3]; end else begin yar[3]:=HH3[3]; ep:=LL3[3]; end; af:=0.02; NowDir:=DIR; SwapF:=0; NewYar:=0; for i=3+1 to datacount do begin if SwapF=1 then begin yar[i]:=NewYar; SwapF:=0; end else begin yar[i]:=yar[i-1]+af*(ep-yar[i-1]); end; if NowDir=1 then begin if RHCK[i] then af:=af+0.02; if CC[i]<yar[i] then begin SwapF:=1; NewYar:=ep; ep:=LL[i]; end else begin if HH[i]>ep then ep:=HH[i]; end; end else begin if RLCK[i] then af:=af+0.02; if CC[i]>yar[i] then begin SwapF:=1; NewYar:=ep; ep:=HH[i]; end else begin if LL[i]<ep then ep:=LL[i]; end; end; if af>0.2 then af:=0.2; if SwapF=1 then begin af:=0.02; NowDir:=-NowDir; end; end;


由 a9681054 在 2019-04-29 22:22 發表:

版主你好,

謝謝,辛苦了!
大致符合想法,但還有點小差異,我再確認一下問題,之後再向版主提出.....

__________________
chiu


由 a9681054 在 2019-04-30 09:41 發表:

版主好,

目前有發現不管是往上或往下翻轉,yar都是從第3根k棒起畫, 原規則定義是希望從第4根起畫,麻煩版主再幫忙看一下.......謝謝~

__________________
chiu


由 cgjj 在 2019-04-30 14:07 發表:

引用:
最初由 a9681054 發表
版主好,

目前有發現不管是往上或往下翻轉,yar都是從第3根k棒起畫, 原規則定義是希望從第4根起畫,麻煩版主再幫忙看一下.......謝謝~



修正並再精簡了一下!
原碼:
if datacount<4 then exit; //K棒不足 CC:=C; HH:=H; LL:=L; HH3:=HHV(H,3); LL3:=LLV(L,3); RHCK:=ref(H>ref(H,1),1); RLCK:=ref(L<ref(L,1),1); DIR:=CC[3]>=CC[1]; DIR:=1-(DIR=0)*2; YAR:CC*0 CIRCLEDOT; x:=setlbound(YAR,4); if DIR=1 then begin yar[4]:=LL3[3]; ep:=HH3[3]; end else begin yar[4]:=HH3[3]; ep:=LL3[3]; end; af:=0.02; NowDir:=DIR; SwapF:=0; NewYar:=0; for i=4+1 to datacount do begin if SwapF=1 then begin yar[i]:=NewYar; SwapF:=0; af:=0.02; NowDir:=-NowDir; end else begin yar[i]:=yar[i-1]+af*(ep-yar[i-1]); end; if NowDir=1 then begin if RHCK[i] then af:=af+0.02; if CC[i]<yar[i] then begin SwapF:=1; NewYar:=ep; ep:=LL[i]; end else begin if HH[i]>ep then ep:=HH[i]; end; end else begin if RLCK[i] then af:=af+0.02; if CC[i]>yar[i] then begin SwapF:=1; NewYar:=ep; ep:=HH[i]; end else begin if LL[i]<ep then ep:=LL[i]; end; end; if af>0.2 then af:=0.2; end;


由 a9681054 在 2019-04-30 19:03 發表:

引用:
最初由 a9681054 發表
版主好,

目前有發現不管是往上或往下翻轉,yar都是從第3根k棒起畫, 原規則定義是希望從第4根起畫,麻煩版主再幫忙看一下.......謝謝~




版主好,

第4根起畫問題已解決,非常感謝您~
我再確認每日yar的計算是否正確?如還有問題再跟版主反應.....

__________________
chiu


由 a9681054 在 2019-04-30 19:55 發表:

版主你好,

剛驗算之後每日yar計算,發現我原定義的ep取法有誤.
往上轉ep....是取到"前日"為止的上漲最高點(不是昨日).

往下轉ep....是取到"前日"為止的下跌最低點(不是昨日).

以上,再次麻煩版主幫忙修正,謝謝~

__________________
chiu


由 cgjj 在 2019-05-02 09:01 發表:

引用:
最初由 a9681054 發表
版主你好,

剛驗算之後每日yar計算,發現我原定義的ep取法有誤.
往上轉ep....是取到"前日"為止的上漲最高點(不是昨日).

往下轉ep....是取到"前日"為止的下跌最低點(不是昨日).

以上,再次麻煩版主幫忙修正,謝謝~



重新答覆,應該是把
if HH[i]>ep then ep:=HH[i];
if LL[i]<ep then ep:=LL[i];
改為
if HH[i-1]>ep then ep:=HH[i-1];
if LL[i-1]<ep then ep:=LL[i-1];

完整的新程式碼,如下:
原碼:
if datacount<4 then exit; //K棒不足 CC:=C; HH:=H; LL:=L; HH3:=HHV(H,3); LL3:=LLV(L,3); RHCK:=ref(H>ref(H,1),1); RLCK:=ref(L<ref(L,1),1); DIR:=CC[3]>=CC[1]; DIR:=1-(DIR=0)*2; YAR:CC*0 CIRCLEDOT; x:=setlbound(YAR,4); if DIR=1 then begin yar[4]:=LL3[3]; ep:=HH3[3]; end else begin yar[4]:=HH3[3]; ep:=LL3[3]; end; af:=0.02; NowDir:=DIR; SwapF:=0; NewYar:=0; for i=4+1 to datacount do begin if SwapF=1 then begin yar[i]:=NewYar; SwapF:=0; af:=0.02; NowDir:=-NowDir; end else begin yar[i]:=yar[i-1]+af*(ep-yar[i-1]); end; if NowDir=1 then begin if RHCK[i] then af:=af+0.02; if CC[i]<yar[i] then begin SwapF:=1; NewYar:=ep; ep:=LL[i]; end else begin if HH[i-1]>ep then ep:=HH[i-1]; end; end else begin if RLCK[i] then af:=af+0.02; if CC[i]>yar[i] then begin SwapF:=1; NewYar:=ep; ep:=HH[i]; end else begin if LL[i-1]<ep then ep:=LL[i-1]; end; end; if af>0.2 then af:=0.2; end;


由 a9681054 在 2019-05-02 09:22 發表:

版主好,

yar還有一些其它發現到的問題,我重新統一整理如下,麻煩版主再幫我看一下......謝謝~

第3版….2019/4/28
//往上拋物線規則定義
1)以(歷史)前三根收盤價做比較,假如c>=ref(c,2),則在第4根k棒開始起畫上翻yar.
說明:ok
2)(歷史)上翻轉第1天…取前三天最低點當初始的yar.
說明:ok
3)(歷史)上翻轉第1天…取前三天最高點當初始區間極值(ep),之後上漲後的ep為每日到昨天為止的上漲最高點.
說明:規則定義有誤……2019/5/2版主已幫忙修正
4)(之後)上翻轉第1天…取從前次收盤價<當日yar那一天開始到往下翻轉的區間最低點當初始的yar.
說明:ok
5)(之後)上翻轉第1天…取收盤價>當日yar那一天的最高點當初始區間極值(ep),之後上漲後的ep為每日到昨天為止的上漲最高點.
說明1:上翻初始ep程式取到上翻第1天的最高點…需求為收盤價>當日yar那一天的最高點
說明2: 之後上漲後的ep規則定義有誤……2019/5/2版主已幫忙修正.
6)上翻轉第1天…加速因子(af)值從0.02開始,第2天af取決於前二天高點做比較,假如昨高>前高,則af+0.02否則不變,唯其af最高累加上限值為0.2,當af值到0.2時,爾後即使股價再創新高,其af值還是以0.2代入計算.
說明1:上翻開始前1天收盤價>yar,當日af一律給0,即af=0
說明2:第1天…af固定給0.02,即af=0.02
說明3:第2天…af取決於前二天高點做比較,假如昨高>前高,則af+0.02否則不變…需求更正為第2天af取決於”今天與昨天”高點做比較,假如”今高>昨高”,則af+0.02否則不變
7)上翻轉第1個yar計算…今yar=昨yar+af*(昨ep-昨yar)
說明:ok
8)上翻轉後直到當日收盤價<當日yar, 上翻才結束,並由隔天開始往下翻轉.
說明:ok


//往下拋物線規則定義
1)以(歷史)前三根收盤價做比較,假如c<ref(c,2),則在第4根k棒開始起畫下翻yar.
說明:ok
2) (歷史)下翻轉第1天…取前三天最高點當初始的yar.
說明:ok
3) (歷史)下翻轉第1天…取前三天最低點當初始區間極值(ep),之後下跌後的ep為每日到昨天為止的下跌最低點.
說明:規則定義有誤……2019/5/2版主已幫忙修正
4)(之後)下翻轉第1天…取從前次收盤價>當日yar那一天開始到往上翻轉的區間最高點當初始的yar.
說明:ok
5)(之後)下翻轉第1天…取收盤價<當日yar那一天的最低點當初始區間極值(ep),之後下跌後的ep為每日到昨天為止的下跌最低點.
說明1:下翻初始ep程式取到下翻第1天的最低點…需求為收盤價<當日yar那一天的最低點
說明2: 之後下跌後的ep規則定義有誤……2019/5/2版主已幫忙修正
6)下翻轉第1天…加速因子(af)值從0.02開始,第2天af取決於前二天低點做比較,假如昨低<前低,則af+0.02否則不變,唯其af最高累加上限值為0.2,當af值到0.2時,爾後即使股價再創新低,其af值還是以0.2代入計算.
說明1:下翻開始前1天收盤價<yar,當日af一律給0,即af=0
說明2:第1天…af固定給0.02,即af=0.02
說明3:第2天…af取決於前二天低點做比較,假如昨低<前低,則af+0.02否則不變…需求更正為第2天af取決於”今天與昨天”低點做比較,假如”今低<昨低”,則af+0.02否則不變
7)下翻轉第1個yar計算…今yar=昨yar+af*(昨ep-昨yar)
說明:ok
8)下翻轉後直到當日收盤價>當日yar, 下翻才結束, 並由隔天開始往上翻轉.
說明:ok

__________________
chiu


由 a9681054 在 2019-05-02 09:27 發表:

版主你好,

剛我提的問題先等一下....我先驗算剛版主給的新程式.......謝謝~

__________________
chiu


由 cgjj 在 2019-05-02 09:31 發表:

引用:
最初由 a9681054 發表
版主你好,

剛我提的問題先等一下....我先驗算剛版主給的新程式.......謝謝~



嗯嗯


由 a9681054 在 2019-05-02 09:40 發表:

版主你好,

剛驗算還是有一些差異,可能是一些問題連動 性關係,麻煩版主依我早上所提的問題說明...再幫我整個問題看一下,謝謝~

__________________
chiu


由 cgjj 在 2019-05-02 09:42 發表:

引用:
最初由 a9681054 發表
版主你好,

剛驗算還是有一些差異,可能是一些問題連動 性關係,麻煩版主依我早上所提的問題說明...再幫我整個問題看一下,謝謝~



說明1:上翻開始前1天收盤價>yar,當日af一律給0,即af=0
說明2:第1天…af固定給0.02,即af=0.02

說明1 vs 說明2 兩者衝突!!!


由 a9681054 在 2019-05-02 09:54 發表:

版主你好,

文字上我可能表達不是很清楚....,我另傳以下圖片,裡面的數據是我要的結果,給版主修改程式參考,謝謝~

__________________
chiu


由 a9681054 在 2019-05-02 09:58 發表:

剛傳圖片有誤...以目前這張為準

__________________
chiu


由 cgjj 在 2019-05-02 10:42 發表:

引用:
最初由 a9681054 發表
剛傳圖片有誤...以目前這張為準


翻轉是基於昨日(翻轉前最末根)發生:當日收盤價<當日yar 或 當日收盤價>當日yar

有沒有去想過,翻轉前最末根,該日的 yar 是如何來的? 今yar=昨yar+af*(昨ep-昨yar)

你把 AF 設為零,是基於 "事後" !!!
設為零,有設等於沒設,不會影響結果
因為隔根(翻轉後首根)是被配置固定採 0.02 計算
故設為零,不影響隔根和當根計算

Excel 中 並沒有 yar 採用 AF=0 計算的部分!!!


由 a9681054 在 2019-05-02 11:07 發表:

版主好,

了解

說明1:上翻開始前1天收盤價>yar,當日af一律給0,即af=0
說明1:下翻開始前1天收盤價<yar,當日af一律給0,即af=0

以上問題需求取消,其它的再麻煩版主....謝謝~

__________________
chiu


由 cgjj 在 2019-05-02 11:11 發表:

引用:
最初由 a9681054 發表
版主好,

了解

說明1:上翻開始前1天收盤價>yar,當日af一律給0,即af=0
說明1:下翻開始前1天收盤價<yar,當日af一律給0,即af=0

以上問題需求取消,其它的再麻煩版主....謝謝~



Re: 6) 說明3


RHCK:=ref(H>ref(H,1),1);
RLCK:=ref(L<ref(L,1),1);
改為
RHCK:=H>ref(H,1);
RLCK:=L<ref(L,1);


由 a9681054 在 2019-05-02 11:42 發表:

版主好,

第6點我已依版主資料修正,另下圖圖片上我增加箭頭及下面文字說明,看能不能加速問題的釐清.....謝謝~

__________________
chiu


由 cgjj 在 2019-05-02 12:23 發表:

引用:
最初由 a9681054 發表
版主好,

第6點我已依版主資料修正,另下圖圖片上我增加箭頭及下面文字說明,看能不能加速問題的釐清.....謝謝~



您定義的 YAR 基本算法是 今yar=昨yar+af*(昨ep-昨yar)
3/6 開始下翻…取3/5 ep(10400)當初始 yar 也就是說 3/6的 yar 為 10400

3/6 第一個 yar 計算…10248+0.02*(10248-10400)=10369.96
您前面已經說過 取3/5 ep(10400)當初始 yar,怎麼還會在翻轉首日3/6計算yar
剛翻轉,並沒有昨yar 給你算,當日 yar 應該用上面算的初始值 10400


由 a9681054 在 2019-05-02 12:26 發表:

版主好,

sorry, 我日期key錯了,應該是3/7開始計算第1個yar值才對....

__________________
chiu


由 a9681054 在 2019-05-02 12:29 發表:

另3/14也弄錯了日期,應該是3/15開始計算第1個yar值.....

__________________
chiu


由 cgjj 在 2019-05-02 13:21 發表:

引用:
最初由 a9681054 發表
版主好,

sorry, 我日期key錯了,應該是3/7開始計算第1個yar值才對....
另3/14也弄錯了日期,應該是3/15開始計算第1個yar值..



那這樣目前的結果,還有什麼問題嗎?


由 a9681054 在 2019-05-02 14:40 發表:

版主好,

(3008大立光月線)問題如圖片說明....

__________________
chiu


由 a9681054 在 2019-05-02 14:43 發表:

問題如圖片

__________________
chiu


由 cgjj 在 2019-05-02 15:20 發表:

引用:
最初由 a9681054 發表

(3008大立光月線)問題如圖片說明....
問題如圖片



並沒有錯唷!
上翻第1天 af 被設為 0.02
且該根 yar 值並不需要用到 af 做計算。
只是讓 af 值,回歸起點


由 a9681054 在 2019-05-02 16:26 發表:

版主好,
以下圖片,是我比較出的差異點,麻煩版主再看一下.....謝謝~

__________________
chiu


由 a9681054 在 2019-05-02 16:28 發表:

更正...程式是顯示156.12

__________________
chiu


由 cgjj 在 2019-05-02 17:24 發表:

引用:
最初由 a9681054 發表
更正...程式是顯示156.12


是算 2003/9/30 那根的唷
那根 af 是帶 0.04算,你的 excel 表 也是 0.04
不應該帶 0.02 計算!!!

152+0.04*(255-152)=156.12 沒錯呀


由 a9681054 在 2019-05-02 18:06 發表:

版主好,

不曉得是我的yar規則公式表達有誤,我再用以下圖片說明,看能不能讓問題清楚一點.....

__________________
chiu


由 a9681054 在 2019-05-02 18:44 發表:

版主你好,

剛以3008取了上翻轉各3段做首af驗算,我是以以每段第2天計算yar反推每段第1個af值,發現有不樣的問題,如以下圖片說明....

__________________
chiu


由 cgjj 在 2019-05-03 01:06 發表:

引用:
最初由 a9681054 發表
版主好,

不曉得是我的yar規則公式表達有誤,我再用以下圖片說明,看能不能讓問題清楚一點.....



自己訂定的規則,自己請看清楚!!!

6)上翻轉第1天…加速因子(af)值從0.02開始,
第2天af取決於前二天高點做比較,假如昨高>前高,則af+0.02否則不變...(略)
7)上翻轉第1個yar計算…今yar=昨yar+af*(昨ep-昨yar)

基於 6) 上翻轉第1天(20030829) af=0.02,雖然當根yar沒用到此值做計算,但歸回af起點
第二天(20030930)因為昨高>前高,故 af+0.02,af = 0.04

按您給的 yar 算式
今yar=昨yar+af*(昨ep-昨yar) = 152+0.04*(255-152)=156.12

若的算式換為 今yar=昨yar+昨af*(昨ep-昨yar)
才會是您現在講的 152+0.02*(255-152)

引用:
最初由 a9681054 發表
版主你好,

剛以3008取了上翻轉各3段做首af驗算,我是以以每段第2天計算yar反推每段第1個af值,發現有不樣的問題,如以下圖片說明....



您驗算的基準,本身應該就有問題了!
每個翻轉的首根 af 必定都是 0.02 不會有例外
因為程式是直接針對翻轉首根配置 0.02 (程式直接寫死!)
且首af 的 0.02 並沒用被用來計算首根 yar
它只是讓af歸回起點自 0.02 開始


由 a9681054 在 2019-05-03 07:56 發表:

版主好,

謝謝版主的說明與指正,也辛苦你了,問題應該如版主所說是我原定義yar計算規則有誤造成,那針對第7點規則重新定義如下:
算式換為 今yar=昨yar+昨af*(昨ep-昨yar)

以上,再煩請版主幫忙處理,謝謝~

__________________
chiu


由 cgjj 在 2019-05-03 10:03 發表:

引用:
最初由 a9681054 發表
版主好,

謝謝版主的說明與指正,也辛苦你了,問題應該如版主所說是我原定義yar計算規則有誤造成,那針對第7點規則重新定義如下:
算式換為 今yar=昨yar+昨af*(昨ep-昨yar)

以上,再煩請版主幫忙處理,謝謝~



原碼:
if datacount<4 then exit; //K棒不足 CC:=C; HH:=H; LL:=L; HH3:=HHV(H,3); LL3:=LLV(L,3); RHCK:=H>ref(H,1); RLCK:=L<ref(L,1); DIR:=CC[3]>=CC[1]; DIR:=1-(DIR=0)*2; YAR:CC*0 CIRCLEDOT; x:=setlbound(YAR,4); if DIR=1 then begin yar[4]:=LL3[3]; ep:=HH3[3]; end else begin yar[4]:=HH3[3]; ep:=LL3[3]; end; af:=0.02; NowDir:=DIR; SwapF:=0; NewYar:=0; for i=4+1 to datacount do begin if SwapF=1 then begin yar[i]:=NewYar; SwapF:=0; af:=0.02; NowDir:=-NowDir; end else begin yar[i]:=yar[i-1]+af*(ep-yar[i-1]); if NowDir=1 then begin if RHCK[i] then af:=af+0.02; end else begin if RLCK[i] then af:=af+0.02; end; if af>0.2 then af:=0.2; end; if NowDir=1 then begin if CC[i]<yar[i] then begin SwapF:=1; NewYar:=ep; ep:=LL[i]; end else begin if HH[i-1]>ep then ep:=HH[i-1]; end; end else begin if CC[i]>yar[i] then begin SwapF:=1; NewYar:=ep; ep:=HH[i]; end else begin if LL[i-1]<ep then ep:=LL[i-1]; end; end; end;


由 a9681054 在 2019-05-03 11:15 發表:

版主你好,

剛驗算了一下今天新程式,發現上下反轉時都有發生,有的線段初始yar無法取到上漲最高點及下跌最低點?不曉得是不是我的規則哪裡還有問題?如以下圖片,煩請版主再幫忙看一下.......謝謝~

__________________
chiu


由 a9681054 在 2019-05-03 11:19 發表:

補圖片

__________________
chiu


由 a9681054 在 2019-05-03 12:24 發表:

版主好,

我自己有重新先看一下ep規則定義,發現是我表達有誤....

5/2早上要求修正規則...
之後上漲後的ep為每日到前天為止的上漲最高點....版主有幫忙修正.

5/3重新定義ep規則如下
之後上漲後的ep為到"昨天"為止的上漲"區間極值"最高點.

之後下跌後的ep為到"昨天"為止的下跌"區間極值"最低點.

以上,再請版主幫忙修正,謝謝~

__________________
chiu


由 cgjj 在 2019-05-03 13:20 發表:

引用:
最初由 a9681054 發表
版主好,

我自己有重新先看一下ep規則定義,發現是我表達有誤....

5/2早上要求修正規則...
之後上漲後的ep為每日到前天為止的上漲最高點....版主有幫忙修正.

5/3重新定義ep規則如下
之後上漲後的ep為到"昨天"為止的上漲"區間極值"最高點.

之後下跌後的ep為到"昨天"為止的下跌"區間極值"最低點.

以上,再請版主幫忙修正,謝謝~



if HH[i-1]>ep then ep:=HH[i-1];
if LL[i-1]<ep then ep:=LL[i-1];

if HH[i]>ep then ep:=HH[i];
if LL[i]<ep then ep:=LL[i];


由 a9681054 在 2019-05-03 14:19 發表:

版主你好,

上下翻初始yar已正常.

我再看看有沒有其它問題,再向版主提出幫忙.....謝謝~

__________________
chiu


由 cgjj 在 2019-05-03 16:54 發表:

引用:
最初由 a9681054 發表
版主你好,

上下翻初始yar已正常.

我再看看有沒有其它問題,再向版主提出幫忙.....謝謝~



不客氣^^


由 a9681054 在 2019-05-03 18:33 發表:

版主你好,

還是有問題但還辦法想通問題出在哪裡?我先以今天5/3 10:03版主給的最後原碼來提出看到的問題,目前這一版程式,yar上下計算式都正常,只有發現每當要上下翻轉時,隔天要取的初始yar值,並沒有每段依規則都能取到最高點或最低點.......(有的有,有的沒有)

12:24我提出之後ep取昨天
13:20版主提供修改資料,套入程式後雖然解決了初始yar問題,但yar計算式又出現錯誤,感覺有點衝突.....

以上說明,麻煩版主再幫我確認一下問題是出在哪裡?謝謝~

__________________
chiu


由 a9681054 在 2019-05-03 19:00 發表:

以今天5/3 10:03版主給的最後原碼比對,以下圖片說明供版主參考....

__________________
chiu


由 a9681054 在 2019-05-03 19:05 發表:

補圖片

__________________
chiu


由 a9681054 在 2019-05-03 21:20 發表:

引用:
最初由 a9681054 發表
版主好,

謝謝版主的說明與指正,也辛苦你了,問題應該如版主所說是我原定義yar計算規則有誤造成,那針對第7點規則重新定義如下:
算式換為 今yar=昨yar+昨af*(昨ep-昨yar)

以上,再煩請版主幫忙處理,謝謝~




目前最後一版yar計算式
yar[i]:=yar[i-1]+af*(ep-yar[i-1]);

是不是af及ep沒有更新到新的計算式....造成衝突?

__________________
chiu


由 a9681054 在 2019-05-05 18:38 發表:

版主你好,

部份初始yar無法取到最高點及最低點,我用推算與程式比較發現問題如下:

if NowDir=1 then begin
if CC[i]<yar[i] then begin
SwapF:=1; NewYar:=ep; ep:=LL[i];
end else begin
if HH[i-1]>ep then ep:=HH[i-1];
end;
end else begin
if CC[i]>yar[i] then begin
SwapF:=1; NewYar:=ep; ep:=HH[i];
end else begin
if LL[i-1]<ep then ep:=LL[i-1];
end;

上下翻轉時第一天要取的ep,
newyar:=ep...這裡程式newyar都會取到前天為止的ep, 我目前newyar需求是要取到昨天為止的ep, 麻煩版王再幫我確認 一下....謝謝~

__________________
chiu


由 a9681054 在 2019-05-05 22:51 發表:

補照片

__________________
chiu


由 cgjj 在 2019-05-06 00:56 發表:

引用:
最初由 a9681054 發表
版主你好,

部份初始yar無法取到最高點及最低點,我用推算與程式比較發現問題如下:

if NowDir=1 then begin
if CC[i]<yar[i] then begin
SwapF:=1; NewYar:=ep; ep:=LL[i];
end else begin
if HH[i-1]>ep then ep:=HH[i-1];
end;
end else begin
if CC[i]>yar[i] then begin
SwapF:=1; NewYar:=ep; ep:=HH[i];
end else begin
if LL[i-1]<ep then ep:=LL[i-1];
end;

上下翻轉時第一天要取的ep,
newyar:=ep...這裡程式newyar都會取到前天為止的ep, 我目前newyar需求是要取到昨天為止的ep, 麻煩版王再幫我確認 一下....謝謝~



我最後答覆你的是以下內容 (2019-05-03 13:20)

if HH[i-1]>ep then ep:=HH[i-1];
if LL[i-1]<ep then ep:=LL[i-1];

if HH[i]>ep then ep:=HH[i];
if LL[i]<ep then ep:=LL[i];

有照著改嗎?,
若有改,怎麼您貼出來,還是未改的樣子

舊的程式請拋棄刪除好嗎...(不要留)
不然你自己常常會誤用,對雙方也很困擾!!!


由 a9681054 在 2019-05-06 09:30 發表:

版主你好,

抱歉,造成版主多日困擾,以下是我們最後討論的原碼....
if datacount<4 then exit; //K棒不足
CC:=C; HH:=H; LL:=L;
HH3:=HHV(H,3); LL3:=LLV(L,3);
RHCK:=H>ref(H,1);
RLCK:=L<ref(L,1);
DIR:=CC[3]>=CC[1]; DIR:=1-(DIR=0)*2;
YAR:CC*0 CIRCLEDOT; x:=setlbound(YAR,4);
if DIR=1 then begin
yar[4]:=LL3[3]; ep:=HH3[3];
end else begin
yar[4]:=HH3[3]; ep:=LL3[3];
end;
af:=0.02; NowDir:=DIR; SwapF:=0; NewYar:=0;
for i=4+1 to datacount do begin
if SwapF=1 then begin
yar[i]:=NewYar; SwapF:=0; af:=0.02; NowDir:=-NowDir;
end else begin
yar[i]:=yar[i-1]+af*(ep-yar[i-1]);
if NowDir=1 then begin
if RHCK[i] then af:=af+0.02;
end else begin
if RLCK[i] then af:=af+0.02;
end;
if af>0.2 then af:=0.2;
end;
if NowDir=1 then begin
if CC[i]<yar[i] then begin
SwapF:=1; NewYar:=ep; ep:=LL[i];
end else begin
if HH[i]>ep then ep:=HH[i];
end;
end else begin
if CC[i]>yar[i] then begin
SwapF:=1; NewYar:=ep; ep:=HH[i];
end else begin
if LL[i]<ep then ep:=LL[i];
end;
end;
end;

目前程式上下翻初始yar都能正常,只有計算式出來的數值跟自己推算的有不一樣,想請教5/3 01:06版主有提到我的計算式規則有誤,5/3 07:56我依版主說明重新定義計算式
....今yar=昨yar+昨af*(昨ep-昨yar),這個新的yar計算式不知我們最後原碼是否有修正到?

__________________
chiu


由 cgjj 在 2019-05-06 11:04 發表:

引用:
最初由 a9681054 發表
版主你好,

抱歉,造成版主多日困擾,以下是我們最後討論的原碼....
if datacount<4 then exit; //K棒不足
CC:=C; HH:=H; LL:=L;
HH3:=HHV(H,3); LL3:=LLV(L,3);
RHCK:=H>ref(H,1);
RLCK:=L<ref(L,1);
DIR:=CC[3]>=CC[1]; DIR:=1-(DIR=0)*2;
YAR:CC*0 CIRCLEDOT; x:=setlbound(YAR,4);
if DIR=1 then begin
yar[4]:=LL3[3]; ep:=HH3[3];
end else begin
yar[4]:=HH3[3]; ep:=LL3[3];
end;
af:=0.02; NowDir:=DIR; SwapF:=0; NewYar:=0;
for i=4+1 to datacount do begin
if SwapF=1 then begin
yar[i]:=NewYar; SwapF:=0; af:=0.02; NowDir:=-NowDir;
end else begin
yar[i]:=yar[i-1]+af*(ep-yar[i-1]);
if NowDir=1 then begin
if RHCK[i] then af:=af+0.02;
end else begin
if RLCK[i] then af:=af+0.02;
end;
if af>0.2 then af:=0.2;
end;
if NowDir=1 then begin
if CC[i]<yar[i] then begin
SwapF:=1; NewYar:=ep; ep:=LL[i];
end else begin
if HH[i]>ep then ep:=HH[i];
end;
end else begin
if CC[i]>yar[i] then begin
SwapF:=1; NewYar:=ep; ep:=HH[i];
end else begin
if LL[i]<ep then ep:=LL[i];
end;
end;
end;

目前程式上下翻初始yar都能正常,只有計算式出來的數值跟自己推算的有不一樣,想請教5/3 01:06版主有提到我的計算式規則有誤,5/3 07:56我依版主說明重新定義計算式
....今yar=昨yar+昨af*(昨ep-昨yar),這個新的yar計算式不知我們最後原碼是否有修正到?



Re: 今yar=昨yar+昨af*(昨ep-昨yar),這個新的yar計算式不知我們最後原碼是否有修正到?
2019-05-03 10:03 就已經答覆處理過了唷!!!

這是目前最後這段程式算出的數值
3/6 yar= 10400
3/14 yar= 10162
還有什麼問題嗎?

請把不符的 哪個商品哪個週期哪個日期
舉例列出!


由 a9681054 在 2019-05-06 12:23 發表:

RE:請把不符的 哪個商品哪個週期哪個日期
舉例列出!

版主好,之前較早的問題就暫時不用幫我處理,我提以下3個新需求....
1)今天要取昨天的ep,要如何表述.
2)想在af=0.2時,只在當日顯示符號,之後同段的af=0.2都不再顯示.
3)當日的yar值,顯示在解盤區.

以上新需求,再次麻煩版主,謝謝~

__________________
chiu


由 B.S. 在 2019-05-06 14:01 發表:

EXPLAIN(1,'STP弧線:'),COLORYELLOW;//
EXPLAINEX(1 and C>YAR,'收: ',c,2,0),Colorred;
EXPLAIN(1 AND C>YAR,'YAR :→'+NUMTOSTR(YAR,2)),COLORRED;
EXPLAIN(1 AND C<YAR,'YAR :→'+NUMTOSTR(YAR,2)),COLORGREEN;
EXPLAINEX(1 and C<YAR,'收: ',c,2,0),ColorWHITE;


由 B.S. 在 2019-05-06 14:02 發表:

3)當日的yar值,顯示在解盤區.


由 cgjj 在 2019-05-06 14:14 發表:

引用:
最初由 a9681054 發表
RE:請把不符的 哪個商品哪個週期哪個日期
舉例列出!

版主好,之前較早的問題就暫時不用幫我處理,我提以下3個新需求....
1)今天要取昨天的ep,要如何表述.
2)想在af=0.2時,只在當日顯示符號,之後同段的af=0.2都不再顯示.
3)當日的yar值,顯示在解盤區.

以上新需求,再次麻煩版主,謝謝~



Re1: 目前就是取昨ep算YAR (故不需做任何處置)


Re2&3:
原碼:
if datacount<4 then exit; //K棒不足 CC:=C; HH:=H; LL:=L; HH3:=HHV(H,3); LL3:=LLV(L,3); RHCK:=H>ref(H,1); RLCK:=L<ref(L,1); DIR:=CC[3]>=CC[1]; DIR:=1-(DIR=0)*2; YAR:CC*0 CIRCLEDOT; x:=setlbound(YAR,4); if DIR=1 then begin yar[4]:=LL3[3]; ep:=HH3[3]; end else begin yar[4]:=HH3[3]; ep:=LL3[3]; end; af:=0.02; NowDir:=DIR; SwapF:=0; NewYar:=0; PrAF:YAR*0 linethick; //顯示當根 YAR 計算採用之AF值 for i=4+1 to datacount do begin if SwapF=1 then begin yar[i]:=NewYar; SwapF:=0; af:=0.02; NowDir:=-NowDir; end else begin PrAF[i]:=AF; yar[i]:=yar[i-1]+af*(ep-yar[i-1]); if NowDir=1 then begin if RHCK[i] then af:=af+0.02; end else begin if RLCK[i] then af:=af+0.02; end; if af>0.2 then af:=0.2; end; if NowDir=1 then begin if CC[i]<yar[i] then begin SwapF:=1; NewYar:=ep; ep:=LL[i]; end else begin if HH[i]>ep then ep:=HH[i]; end; end else begin if CC[i]>yar[i] then begin SwapF:=1; NewYar:=ep; ep:=HH[i]; end else begin if LL[i]<ep then ep:=LL[i]; end; end; end; AFCK:=PRAF=0.02; VERTLINE(AFCK=1 and ref(AFCK=0,1)) linedot; //YAR 計算首根採用AF=0.02 畫垂直線 EXPLAINEX(1,'YAR: ',YAR,2,0);


由 a9681054 在 2019-05-06 14:34 發表:

版主你好,

謝謝B.S及版主的說明.

1)今天要取昨天的ep,要如何表述
2)想在af=0.2時,只在當日顯示符號,之後同段的af=0.2都不再顯示.
3)當日的yar值,顯示在解盤區.

Re1....了解版主的意思.
Re2.....我想表達是af達到0.2上限做記號,目前好像是回覆到0.02做記號?
Re3.....ok

__________________
chiu


由 cgjj 在 2019-05-06 14:43 發表:

引用:
最初由 a9681054 發表
版主你好,

謝謝B.S及版主的說明.

1)今天要取昨天的ep,要如何表述
2)想在af=0.2時,只在當日顯示符號,之後同段的af=0.2都不再顯示.
3)當日的yar值,顯示在解盤區.

Re1....了解版主的意思.
Re2.....我想表達是af達到0.2上限做記號,目前好像是回覆到0.02做記號?
Re3.....ok



把 AFCK:=PRAF=0.02;
改為 AFCK:=PRAF=0.2;
就可以了


由 a9681054 在 2019-05-06 15:01 發表:

引用:
最初由 cgjj 發表
把 AFCK:=PRAF=0.02;
改為 AFCK:=PRAF=0.2;
就可以了



版主你好,

第2個新問題...已ok,謝謝~
但我另發現一個新問題,為什麼在上下翻轉第1天af值是給0?我原始規則需求是要0.02

//2019/4/28第3版規則提到

6)上翻轉第1天…加速因子(af)值從0.02開始...

__________________
chiu


由 cgjj 在 2019-05-06 16:16 發表:

引用:
最初由 a9681054 發表
版主你好,

第2個新問題...已ok,謝謝~
但我另發現一個新問題,為什麼在上下翻轉第1天af值是給0?我原始規則需求是要0.02

//2019/4/28第3版規則提到

6)上翻轉第1天…加速因子(af)值從0.02開始...



那一天 AF 顯示多少,不重要!!!!!!

因為那天 yar 計算根本沒用到 AF
只是那天會設 af:=0.02 當起點

程式註解我寫的非常清楚!!!!!!
PrAF:YAR*0 linethick; //顯示當根 YAR 計算採用之AF值

PrAF 為 當根 YAR 計算採用之AF值
既然沒有採用AF 計算,所以將 AF 顯示為零值


由 a9681054 在 2019-05-06 20:14 發表:

af問題回覆,我有確認ok, 謝謝版主~

唯上下翻轉時,第1天取ep有點狀況,我整理如下....
5)(之後)上翻轉第1天…取收盤價>當日yar那一天的最高點當初始區間極值(ep),
if CC[i]>yar[i] then begin
SwapF:=1; NewYar:=ep; ep:=HH[i];

上面程式ep:=HH[i],取到的值不一定是規則講的那一天?


5)(之後)下翻轉第1天…取收盤價<當日yar那一天的最低點當初始區間極值(ep),
if CC[i]<yar[i] then begin
SwapF:=1; NewYar:=ep; ep:=LL[i];

上面程式ep:=LL[i],取到的值不一定是規則講的那一天?

例如1/8上翻第1天 ep應取1/7最高點當ep...結果取到當日3/8的最高點

例如3/14上翻 第1天ep應取3/13最高點當ep...結果取到當日3/14的最高點

以上問題,麻煩版主再幫我看一下....感謝~

__________________
chiu


由 a9681054 在 2019-05-06 20:34 發表:

版主你好,

sorry, 剛才再檢查一下,好像是我訂的規則有誤....
5)(之後)上翻轉第1天…取收盤價>當日yar那一天的最高點當初始區間極值(ep),
規則更正為:
5)(之後)上翻轉第1天…取"昨天"收盤價>當日yar那一天的最高點當初始區間極值(ep),



5)(之後)下翻轉第1天…取收盤價<當日yar那一天的最低點當初始區間極值(ep),
規則更正為:
5)(之後)下翻轉第1天…取"昨天"收盤價<當日yar那一天的最低點當初始區間極值(ep),


以上新規則,再麻煩版主幫忙修正,謝謝~

__________________
chiu


由 cgjj 在 2019-05-07 09:15 發表:

引用:
最初由 a9681054 發表
af問題回覆,我有確認ok, 謝謝版主~

唯上下翻轉時,第1天取ep有點狀況,我整理如下....
5)(之後)上翻轉第1天…取收盤價>當日yar那一天的最高點當初始區間極值(ep),
if CC[i]>yar[i] then begin
SwapF:=1; NewYar:=ep; ep:=HH[i];

上面程式ep:=HH[i],取到的值不一定是規則講的那一天?


5)(之後)下翻轉第1天…取收盤價<當日yar那一天的最低點當初始區間極值(ep),
if CC[i]<yar[i] then begin
SwapF:=1; NewYar:=ep; ep:=LL[i];

上面程式ep:=LL[i],取到的值不一定是規則講的那一天?

例如1/8上翻第1天 ep應取1/7最高點當ep...結果取到當日3/8的最高點

例如3/14上翻 第1天ep應取3/13最高點當ep...結果取到當日3/14的最高點

以上問題,麻煩版主再幫我看一下....感謝~



你是採用什麼方式檢驗的?

我這邊驗證過沒有問題唷!!!
台當月日線
1/8 的 EP 是 9588 (9588為1/7的最高點)
1/9 的 EP 是 9611 (9611為1/8的最高點)
3/14 的 EP 是 10365 (10365為3/13的最高點)
3/15 的 EP 是 10392 (10392為3/14的最高點)

這四行說的 EP,是指用來算當根 YAR 使用的 EP 值
註:翻轉首根,並未用到EP值算YAR


由 cgjj 在 2019-05-07 09:18 發表:

引用:
最初由 a9681054 發表
版主你好,

sorry, 剛才再檢查一下,好像是我訂的規則有誤....
5)(之後)上翻轉第1天…取收盤價>當日yar那一天的最高點當初始區間極值(ep),
規則更正為:
5)(之後)上翻轉第1天…取"昨天"收盤價>當日yar那一天的最高點當初始區間極值(ep),



5)(之後)下翻轉第1天…取收盤價<當日yar那一天的最低點當初始區間極值(ep),
規則更正為:
5)(之後)下翻轉第1天…取"昨天"收盤價<當日yar那一天的最低點當初始區間極值(ep),


以上新規則,再麻煩版主幫忙修正,謝謝~



規則 不能有所謂的 "好像",恕不協助所謂的 "好像" !!!
請自行先確認檢驗方式是否無誤


由 a9681054 在 2019-05-07 09:39 發表:

引用:
最初由 cgjj 發表
規則 不能有所謂的 "好像",恕不協助所謂的 "好像" !!!
請自行先確認檢驗方式是否無誤



了解!

那麼請版主依我昨天最後更正的需求規則修正,謝謝~

__________________
chiu


由 cgjj 在 2019-05-07 09:43 發表:

引用:
最初由 a9681054 發表
了解!

那麼請版主依我昨天最後更正的需求規則修正,謝謝~



沒有需要修正的地方

結果就是您現在圖中講的樣子
我前面回的驗證,有看嗎!!!


由 a9681054 在 2019-05-07 10:00 發表:

引用:
最初由 cgjj 發表
你是採用什麼方式檢驗的?

我這邊驗證過沒有問題唷!!!
台當月日線
1/8 的 EP 是 9588 (9588為1/7的最高點)
1/9 的 EP 是 9611 (9611為1/8的最高點)
3/14 的 EP 是 10365 (10365為3/13的最高點)
3/15 的 EP 是 10392 (10392為3/14的最高點)

這四行說的 EP,是指用來算當根 YAR 使用的 EP 值
註:翻轉首根,並未用到EP值算YAR



版主你好,
上面說的日期ep.......是沒錯
翻轉首根,並未用到EP值算YAR.....也是沒錯

但3/15我算的
yar=10162+0.02*(10365-10162)=10166.06

目前程式卻是顯示10166.60?
yar=10162+0.02*(10392-10162)=10166.60

我的疑問是在這裡......

__________________
chiu


由 a9681054 在 2019-05-07 10:02 發表:

補照片說明

__________________
chiu


由 cgjj 在 2019-05-07 10:33 發表:

引用:
最初由 a9681054 發表
版主你好,
上面說的日期ep.......是沒錯
翻轉首根,並未用到EP值算YAR.....也是沒錯

但3/15我算的
yar=10162+0.02*(10365-10162)=10166.06

目前程式卻是顯示10166.60?
yar=10162+0.02*(10392-10162)=10166.60

我的疑問是在這裡......



你 3/15 計算YAR的 EP 值帶入錯誤,導致結果錯誤

3/15 是上翻的第二天,不是第一天,根據規則
第一天之後上漲後的ep為每日到昨天為止的上漲最高點
3/15 計算YAR的 EP 是 10392 (10392為3/14的最高點)


由 a9681054 在 2019-05-07 11:29 發表:

引用:
最初由 cgjj 發表
你 3/15 計算YAR的 EP 值帶入錯誤,導致結果錯誤

3/15 是上翻的第二天,不是第一天,根據規則
第一天之後上漲後的ep為每日到昨天為止的上漲最高點
3/15 計算YAR的 EP 是 10392 (10392為3/14的最高點)



版主你好,
抱歉,剛再次檢查一下ep取法,應該是我的規則定義錯誤造成....

我重新定義如下:
(上翻)...第二天之後上漲後的ep為每日到昨天為止的上漲最高點

(下翻)...第二天之後下跌後的ep為每日到昨天為止的下跌最低點

以上新規則,再次麻煩版主了,感謝~

__________________
chiu


由 cgjj 在 2019-05-07 14:32 發表:

引用:
最初由 a9681054 發表
版主你好,
抱歉,剛再次檢查一下ep取法,應該是我的規則定義錯誤造成....

我重新定義如下:
(上翻)...第二天之後上漲後的ep為每日到昨天為止的上漲最高點

(下翻)...第二天之後下跌後的ep為每日到昨天為止的下跌最低點

以上新規則,再次麻煩版主了,感謝~



原碼:
if datacount<4 then exit; //K棒不足 CC:=C; HH:=H; LL:=L; HH3:=HHV(H,3); LL3:=LLV(L,3); RHCK:=H>ref(H,1); RLCK:=L<ref(L,1); DIR:=CC[3]>=CC[1]; DIR:=1-(DIR=0)*2; YAR:CC*0 CIRCLEDOT; x:=setlbound(YAR,4); if DIR=1 then begin yar[4]:=LL3[3]; ep:=HH3[3]; end else begin yar[4]:=HH3[3]; ep:=LL3[3]; end; af:=0.02; NowDir:=DIR; SwapF:=0; NewYar:=0; PrAF:YAR*0 linethick; //顯示當根 YAR 計算採用之AF值 for i=4+1 to datacount do begin if SwapF=1 then begin yar[i]:=NewYar; SwapF:=0; af:=0.02; NowDir:=-NowDir; end else begin PrAF[i]:=AF; yar[i]:=yar[i-1]+af*(ep-yar[i-1]); if NowDir=1 then begin if RHCK[i] then af:=af+0.02; if HH[i]>ep then ep:=HH[i]; end else begin if RLCK[i] then af:=af+0.02; if LL[i]<ep then ep:=LL[i]; end; if af>0.2 then af:=0.2; end; if NowDir=1 then begin if CC[i]<yar[i] then begin SwapF:=1; NewYar:=ep; ep:=LL[i]; end; end else begin if CC[i]>yar[i] then begin SwapF:=1; NewYar:=ep; ep:=HH[i]; end; end; end; AFCK:=PRAF=0.2; VERTLINE(AFCK=1 and ref(AFCK=0,1)) linedot; //首根AF=0.2畫垂直線 EXPLAINEX(1,'YAR: ',YAR,2,0);


由 a9681054 在 2019-05-07 15:16 發表:

版主你好,
最新版程式我再仔細驗算一下...如還有狀況再向版主反應,在此先感謝您的幫忙與指正∼

__________________
chiu


由 cgjj 在 2019-05-07 15:56 發表:

引用:
最初由 a9681054 發表
版主你好,
最新版程式我再仔細驗算一下...如還有狀況再向版主反應,在此先感謝您的幫忙與指正∼



不客氣


由 a9681054 在 2019-05-07 17:01 發表:

版主你好,

程式確認OK了,非常感謝你幫忙~

另需求今日收完盤後顯示"明日的yar值在解盤區要如何表達?.........謝謝~

__________________
chiu


由 cgjj 在 2019-05-07 17:31 發表:

引用:
最初由 a9681054 發表
版主你好,

程式確認OK了,非常感謝你幫忙~

另需求今日收完盤後顯示"明日的yar值在解盤區要如何表達?.........謝謝~



原碼:
if datacount<4 then exit; //K棒不足 CC:=C; HH:=H; LL:=L; HH3:=HHV(H,3); LL3:=LLV(L,3); RHCK:=H>ref(H,1); RLCK:=L<ref(L,1); DIR:=CC[3]>=CC[1]; DIR:=1-(DIR=0)*2; YAR:CC*0 CIRCLEDOT; x:=setlbound(YAR,4); 明YAR:YAR linethick0; if DIR=1 then begin yar[4]:=LL3[3]; ep:=HH3[3]; end else begin yar[4]:=HH3[3]; ep:=LL3[3]; end; af:=0.02; NowDir:=DIR; SwapF:=0; NewYar:=0; PrAF:YAR*0 linethick; //顯示當根 YAR 計算採用之AF值 for i=4+1 to datacount do begin if SwapF=1 then begin yar[i]:=NewYar; SwapF:=0; af:=0.02; NowDir:=-NowDir; end else begin PrAF[i]:=AF; yar[i]:=yar[i-1]+af*(ep-yar[i-1]); if NowDir=1 then begin if RHCK[i] then af:=af+0.02; if HH[i]>ep then ep:=HH[i]; end else begin if RLCK[i] then af:=af+0.02; if LL[i]<ep then ep:=LL[i]; end; if af>0.2 then af:=0.2; end; if NowDir=1 then begin if CC[i]<yar[i] then begin SwapF:=1; NewYar:=ep; ep:=LL[i]; end; end else begin if CC[i]>yar[i] then begin SwapF:=1; NewYar:=ep; ep:=HH[i]; end; end; if SwapF=1 then 明yar[i]:=NewYar; if SwapF=0 then 明yar[i]:=yar[i]+af*(ep-yar[i]); end; AFCK:=PRAF=0.2; VERTLINE(AFCK=1 and ref(AFCK=0,1)) linedot; //首根AF=0.2畫垂直線 EXPLAINEX(1,'今YAR: ',YAR,2,0); EXPLAINEX(1,'明YAR: ',明YAR,2,0);


由 a9681054 在 2019-05-07 17:44 發表:

版主你好,

明yar需求顯示....已ok, 謝謝~

__________________
chiu


由 a9681054 在 2019-05-07 18:14 發表:

版主你好,

另需求像sar拋物線轉向點用在副圖,要如何達成?

sar拋物線轉向點...A:SARTURN(10,2,20);

yar拋物線轉向點...A:SARTURN(??? );

__________________
chiu


由 cgjj 在 2019-05-08 09:17 發表:

引用:
最初由 a9681054 發表
版主你好,

另需求像sar拋物線轉向點用在副圖,要如何達成?

sar拋物線轉向點...A:SARTURN(10,2,20);

yar拋物線轉向點...A:SARTURN(??? );




利用 Swap 就可判斷 (翻轉時 Swap=1 or Swap=-1)

原碼:
if datacount<4 then exit; //K棒不足 CC:=C; HH:=H; LL:=L; HH3:=HHV(H,3); LL3:=LLV(L,3); RHCK:=H>ref(H,1); RLCK:=L<ref(L,1); DIR:=CC[3]>=CC[1]; DIR:=1-(DIR=0)*2; YAR:CC*0 CIRCLEDOT; x:=setlbound(YAR,4); 明YAR:YAR linethick0; if DIR=1 then begin yar[4]:=LL3[3]; ep:=HH3[3]; end else begin yar[4]:=HH3[3]; ep:=LL3[3]; end; af:=0.02; NowDir:=DIR; SwapF:=0; NewYar:=0; PrAF:YAR*0 linethick; //顯示當根 YAR 計算採用之AF值 Swap:YAR*0 linethick; //轉向位置紀錄 Swap[4]:=NowDir; for i=4+1 to datacount do begin if SwapF=1 then begin yar[i]:=NewYar; SwapF:=0; af:=0.02; NowDir:=-NowDir; Swap[i]:=NowDir; end else begin PrAF[i]:=AF; yar[i]:=yar[i-1]+af*(ep-yar[i-1]); if NowDir=1 then begin if RHCK[i] then af:=af+0.02; if HH[i]>ep then ep:=HH[i]; end else begin if RLCK[i] then af:=af+0.02; if LL[i]<ep then ep:=LL[i]; end; if af>0.2 then af:=0.2; end; if NowDir=1 then begin if CC[i]<yar[i] then begin SwapF:=1; NewYar:=ep; ep:=LL[i]; end; end else begin if CC[i]>yar[i] then begin SwapF:=1; NewYar:=ep; ep:=HH[i]; end; end; if SwapF=1 then 明yar[i]:=NewYar; if SwapF=0 then 明yar[i]:=yar[i]+af*(ep-yar[i]); end; AFCK:=PRAF=0.2; VERTLINE(AFCK=1 and ref(AFCK=0,1)) linedot; //首根AF=0.2畫垂直線 EXPLAINEX(1,'今YAR: ',YAR,2,0); EXPLAINEX(1,'明YAR: ',明YAR,2,0);


由 a9681054 在 2019-05-08 10:14 發表:

版主你好,

主圖最上面有呈現出來....謝謝~

另請教2個應用問題:
1)如何將這個swap上下轉呈現在副圖?如附件圖片範例

2)如何利用
當收盤價>yar的第1天做選股
當收盤價<yar的第1天做選股

__________________
chiu


由 cgjj 在 2019-05-08 10:45 發表:

引用:
最初由 a9681054 發表
版主你好,

主圖最上面有呈現出來....謝謝~

另請教2個應用問題:
1)如何將這個swap上下轉呈現在副圖?如附件圖片範例

2)如何利用
當收盤價>yar的第1天做選股
當收盤價<yar的第1天做選股



Re1:
你只輸出 swap,其它不要輸出,就是這效果了

Re2: 條件成立的第一天,範例如下:
條件 and ref(條件,1)=0;

程式就讓您自己去練習寫作了!


由 a9681054 在 2019-05-08 10:50 發表:

版主你好,

好的,謝謝你多日指導與幫忙~

__________________
chiu


由 a9681054 在 2019-05-09 12:26 發表:

引用:
最初由 cgjj 發表
Re1:
你只輸出 swap,其它不要輸出,就是這效果了

Re2: 條件成立的第一天,範例如下:
條件 and ref(條件,1)=0;

程式就讓您自己去練習寫作了!



版主你好,
Re1:
swap副圖我已依版主指導完成了,請教如要讓swap=1及swap=-1出來的圖形改成相反顯示,要如何處理?謝謝~

__________________
chiu


由 cgjj 在 2019-05-09 19:56 發表:

引用:
最初由 a9681054 發表
版主你好,
Re1:
swap副圖我已依版主指導完成了,請教如要讓swap=1及swap=-1出來的圖形改成相反顯示,要如何處理?謝謝~



加個負號在swap前面,就可以反了!


由 a9681054 在 2019-05-09 21:33 發表:

版主你好,

SWAP前加了"-"號後...
行16:出現未定義的標識符

__________________
chiu


由 cgjj 在 2019-05-09 21:37 發表:

引用:
最初由 a9681054 發表
版主你好,

SWAP前加了"-"號後...
行16:出現未定義的標識符



不是在下面這行加 !!!
Swap:YAR*0 linethick; //轉向位置紀錄

是你後面應用時加上,例如
-Swap;


由 a9681054 在 2019-05-09 21:59 發表:

引用:
最初由 cgjj 發表
不是在下面這行加 !!!
Swap:YAR*0 linethick; //轉向位置紀錄

是你後面應用時加上,例如
-Swap;



版主你好,

謝謝,可以了~

__________________
chiu


由 cgjj 在 2019-05-09 23:38 發表:

引用:
最初由 a9681054 發表
版主你好,

謝謝,可以了~



不客氣^^


由 Markchu7 在 2019-05-27 13:06 發表:

請問總版主:有關這個公式加速因子(AF)與極值(EP)能否像內建函數SAR一樣設成参數而自行調整嗎?謝謝!


由 cgjj 在 2019-05-27 13:32 發表:

引用:
最初由 Markchu7 發表
請問總版主:有關這個公式加速因子(AF)與極值(EP)能否像內建函數SAR一樣設成参數而自行調整嗎?謝謝!


您把源碼中的 0.02 和 0.2 置換成參數就可了


由 Markchu7 在 2019-05-27 15:52 發表:

ok,我試試!謝謝!


由 m3energy 在 2021-08-23 14:18 發表:

版主,你好:

我使用Chiefox v5.2.210602版本,依照此貼您於「2019-05-08 09:17」所分享的「SAR程式碼」學習。
但我有一個疑問

===================================================================================
AFCK:=PRAF=0.2;
VERTLINE(AFCK=1 and ref(AFCK=0,1)) linedot; //首根AF=0.2畫垂直線
===================================================================================

我採用「加權指數」商品對照,但我發現:

2021/06/16,第一次af=2.0 ==> 垂直標記線畫於2021/06/17
2021/04/19,第一次af=2.0 ==> 垂直標記線畫於2021/04/20
2021/01/13,第一次af=2.0 ==> 垂直標記線畫於2021/04/14
2020/12/01,第一次af=2.0 ==> 垂直標記線畫於2020/12/03
PS:在往更前的時間,一樣有相似情況,就不一一類舉。

請問如何修正程式碼,才能於第一次af=2.0即畫出垂直線?(或是我對程式的理解有誤,亦請前輩指導)


由 cgjj 在 2021-08-23 15:02 發表:

引用:
最初由 m3energy 發表
版主,你好:

我使用Chiefox v5.2.210602版本,依照此貼您於「2019-05-08 09:17」所分享的「SAR程式碼」學習。
但我有一個疑問

===================================================================================
AFCK:=PRAF=0.2;
VERTLINE(AFCK=1 and ref(AFCK=0,1)) linedot; //首根AF=0.2畫垂直線
===================================================================================

我採用「加權指數」商品對照,但我發現:

2021/06/16,第一次af=2.0 ==> 垂直標記線畫於2021/06/17
2021/04/19,第一次af=2.0 ==> 垂直標記線畫於2021/04/20
2021/01/13,第一次af=2.0 ==> 垂直標記線畫於2021/04/14
2020/12/01,第一次af=2.0 ==> 垂直標記線畫於2020/12/03
PS:在往更前的時間,一樣有相似情況,就不一一類舉。

請問如何修正程式碼,才能於第一次af=2.0即畫出垂直線?(或是我對程式的理解有誤,亦請前輩指導)



首先,請先弄清楚!!!
該範例程式ˋ是算 a9681054 所要的 YAR,並非算 SAR

再來
差一根是一直累加計算,精度誤差所引起的問題
顯示 0.20 實際可能是以 0.1999999... 單精度存放

AFCK:=PRAF=0.2;
改為
PRAF:=ROUND(PRAF*100)/100; //四捨五入到小數第二位
AFCK:=PRAF=0.2;
即可解決


由 m3energy 在 2021-08-23 16:40 發表:

感謝版主的回覆。

抱歉,『「SAR程式碼」學習』,這詞彙用的有所不妥
我了解該範例程式是算 a9681054 所要的 YAR,並非算 SAR

感謝您對於程式碼的疑問解惑,謝謝。


由 cgjj 在 2021-08-23 16:58 發表:

引用:
最初由 m3energy 發表
感謝版主的回覆。

抱歉,『「SAR程式碼」學習』,這詞彙用的有所不妥
我了解該範例程式是算 a9681054 所要的 YAR,並非算 SAR

感謝您對於程式碼的疑問解惑,謝謝。



不客氣 ^^


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


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

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