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

奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- [求救]程式的答案怪怪的 (http://www.chiefox.com.tw/bbs/showthread.php?threadid=18479)


由 yoson168 在 2014-04-24 19:54 發表:

問題 [求救]程式的答案怪怪的

於宏達電2498的日線,將游標移到2014/4/16當日,可得以下參數的值(請參考附圖):
R_LD3_END =17
R_LD3_START=20
R_LD3 =137
但我的問題是R_LD3應是146
即附圖白色箭頭所指的當天的最低點
我是用以下程式碼去驗証(在程式碼的最後一行)
right_answer:ref(llv(l,20-17),17) linethick0; (其中20和17是R_LD3_END 和R_LD3_START的值)
求得R_LD3是146

上述程式碼是仿效以下的程式碼(到數第二行的程式碼)
R_LD3:ref(llv(l,R_LD3_start-R_LD3_end),R_LD3_end) linethick0;

請問:為何R_LD3的答案137和用最後一行程式碼,所驗証的答案146,二者不同?



完整程式碼如下:

mm:=ma(c,5);
//-------------------------------------------------------
a1:=c>mm ;//and h>ref(h,1);
yy1:=a1;
//-------------------------------------------------------
b1:=c<mm ;//and l<ref(l,1);
xx1:=b1;
//-------------------------------------------------------
a2:= (ref(c,1)>ref(mm,1) AND c<mm);
b2:= (ref(c,1)<ref(mm,1) AND c>mm);
z1:= a2 OR b2;
zz:=z1;


//==========================================================
grebar:=xx1 and not(zz);
redbar:=yy1 and not(zz);

HD1_end:=if(not(redbar) ,barslast(redbar),0);
LD1_end:=if(not(grebar) ,barslast(grebar),0);

first_red:=cross(LD1_end,HD1_end) colorred;
first_gre:=cross(HD1_end,LD1_end) colorgreen;

R_HD2_end:=sumbars(first_gre,1);
R_HD2_start:=ref(LD1_end,R_HD2_end)+R_HD2_end;
R_HD3_end:=ref(sumbars(first_gre,1),R_HD2_start)+R_HD2_start;
R_HD3_start:=ref(LD1_end,R_HD3_end)+R_HD3_end;
R_LD2_end:=ref(sumbars(first_red,1),sumbars(first_gre,1))+sumbars(first_gre,1);
R_LD2_start:=ref(HD1_end,R_LD2_end)+R_LD2_end;
R_LD3_end:ref(sumbars(first_red,1),R_LD2_start)+R_LD2_start;
R_LD3_start:ref(HD1_end,R_LD3_end)+R_LD3_end;

R_HD1:=hhv(h,LD1_end);
R_HD2:=ref(hhv(h,R_HD2_start-R_HD2_end),R_HD2_end);
R_HD3:=ref(hhv(h,R_HD3_start-R_HD3_end),R_HD3_end);
R_LD1:=ref(llv(l,HD1_end),sumbars(first_red,1));
R_LD2:=ref(llv(l,R_LD2_start-R_LD2_end),R_LD2_end);
R_LD3:ref(llv(l,R_LD3_start-R_LD3_end),R_LD3_end) linethick0;

right_answer:ref(llv(l,20-17),17) linethick0;


由 cgjj 在 2014-04-25 09:25 發表:

回覆: [求救]程式的答案怪怪的

引用:
最初由 yoson168 發表
於宏達電2498的日線,將游標移到2014/4/16當日,可得以下參數的值(請參考附圖):
R_LD3_END =17
R_LD3_START=20
R_LD3 =137
但我的問題是R_LD3應是146
即附圖白色箭頭所指的當天的最低點
我是用以下程式碼去驗証(在程式碼的最後一行)
right_answer:ref(llv(l,20-17),17) linethick0; (其中20和17是R_LD3_END 和R_LD3_START的值)
求得R_LD3是146

上述程式碼是仿效以下的程式碼(到數第二行的程式碼)
R_LD3:ref(llv(l,R_LD3_start-R_LD3_end),R_LD3_end) linethick0;

請問:為何R_LD3的答案137和用最後一行程式碼,所驗証的答案146,二者不同?

完整程式碼如下:
........略.........



當然是不同囉, 不同才是正確的
因為驗證的方式錯了

宏達電2498 日線 2014/4/16 當根是這三個值沒錯
R_LD3_END =17, R_LD3_START=20, R_LD3 =137

驗證的方法
right_answer:ref(llv(l,20-17),17) linethick0;
紅字的部分, 運用錯誤

解釋如下:
ref(n,17) 是引用前面第17根的n值
對 2014/04/16 日那根來說
是向前取用 2014/3/21 日那根計算出來的 n值
也就是 2014/3/21 日那根計算出來的 llv(l,R_LD3_start-R_LD3_end) 值

對 2014/3/21 日那根來說:
R_LD3_start 為 52, R_LD3_end 為 42
帶入 llv(l,R_LD3_start-R_LD3_end) 算式中
是計算 llv(l,52-42)

2014/04/16 日那根
是 向前取用 2014/3/21 日那根算出的 llv(l,52-42) 值


由 yoson168 在 2014-04-25 09:44 發表:

謝謝詳細解答,辛苦了!
再請教您:
那我程式應如何寫,才可獲得我要的答案呢? 即R_LD3應是146(先前第20~17根k線的最低點)


由 cgjj 在 2014-04-25 10:12 發表:

引用:
最初由 yoson168 發表
謝謝詳細解答,辛苦了!
再請教您:
那我程式應如何寫,才可獲得我要的答案呢? 即R_LD3應是146(先前第20~17根k線的最低點)



按您前面定義的規則
宏達電2498 日線 2014/4/16
R_LD3 應是 137 才對, 而非 146

故, 可能不是 "如何寫?" 的問題

應該是您要如何定義調整規則
規則會影響決定計算結果


由 yoson168 在 2014-04-25 10:32 發表:

我把我的提問簡潔一下:
在不用ref 的前提下,我如何求得在今天之前的第20到第17根k線之間的最低點
還有什麼涵數或技巧可用?


由 cgjj 在 2014-04-25 11:04 發表:

引用:
最初由 yoson168 發表
我把我的提問簡潔一下:
在不用ref 的前提下,我如何求得在今天之前的第20到第17根k線之間的最低點
還有什麼涵數或技巧可用?



ref 是必要的
雖可用 變數[n] 方法來直接抓取某一根值, 但就沒那樣便利了

就您現在提的這個例子:
我如何求得在今天之前的第20到第17根k線之間的最低點?
之前的第17根到第20根之間, 共四根K棒
處理方法如下:
ref(LLV(L,4),17);


由 yoson168 在 2014-04-25 11:53 發表:

TKS,
我再從程式的邏輯去思考


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


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

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