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

註冊日期: Nov 2007
來  自:
文章數量: 1518

[問題]是否須用到迴圈請協助!

WMAH:=IF(DBCK,H,MA((2*H+XC)/3,MM2));
WMAL:=IF(DBCK,L,MA((2*L+XC)/3,MM2));
TOP:HHV(WMAH,34);
BOT:LLV(WMAL,34);
MM13RG:MIN(20,MAX(2,MA(H-L,MM13)));
SPOINT34:=WMAH=HHV(WMAH,34),LINETHICK;
BPOINT34:=WMAL=LLV(WMAL,34),LINETHICK;
DNSP:BARSLAST(SPOINT34)+1,LINETHICK;
UPSP:BARSLAST(BPOINT34)+1,LINETHICK;
DNSTOP:LLV(MIN(TOP,LLV(WMAH,DNSP)+MM13RG),DNSP),LINETHICK;
UPSTOP:HHV(MAX(BOT,HHV(WMAL,UPSP)-MM13RG),UPSP),LINETHICK;

以上是我的源碼!以SPOINT34規則為例!
我想讓'收盤價跌破UPSTOP N根K棒也成立'並重新計算DNSTOP,這樣就有一條新的DNSTOP!當'收盤價站上新的DNSTOP N根K棒'則BPOINT34也成立'並重新計算新的UPSTOP,如此循環不斷!
像這樣重複將計算出的結果,再丟回條件再作計算,實在超出能力範圍,希望版主協助!感恩!

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

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

回覆: [問題]是否須用到迴圈請協助!

引用:
最初由 Markchu7 發表
WMAH:=IF(DBCK,H,MA((2*H+XC)/3,MM2));
WMAL:=IF(DBCK,L,MA((2*L+XC)/3,MM2));
TOP:HHV(WMAH,34);
BOT:LLV(WMAL,34);
MM13RG:MIN(20,MAX(2,MA(H-L,MM13)));
SPOINT34:=WMAH=HHV(WMAH,34),LINETHICK;
BPOINT34:=WMAL=LLV(WMAL,34),LINETHICK;
DNSP:BARSLAST(SPOINT34)+1,LINETHICK;
UPSP:BARSLAST(BPOINT34)+1,LINETHICK;
DNSTOP:LLV(MIN(TOP,LLV(WMAH,DNSP)+MM13RG),DNSP),LINETHICK;
UPSTOP:HHV(MAX(BOT,HHV(WMAL,UPSP)-MM13RG),UPSP),LINETHICK;

以上是我的源碼!以SPOINT34規則為例!
我想讓'收盤價跌破UPSTOP N根K棒也成立'並重新計算DNSTOP,這樣就有一條新的DNSTOP!當'收盤價站上新的DNSTOP N根K棒'則BPOINT34也成立'並重新計算新的UPSTOP,如此循環不斷!
像這樣重複將計算出的結果,再丟回條件再作計算,實在超出能力範圍,希望版主協助!感恩!



所有的計算根基都是在 HHV(WMAH,34)
並沒有重新計算的空間吧,因為34 是定值

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

註冊日期: Nov 2007
來  自:
文章數量: 1518

對不起!沒說清楚!
正式的條件式應該是如此:
SPOINT34:=WMAH=HHV(WMAH,34) OR CROSS(ALL(C<UPSTOP,N),0.8);

那是否有迴圈的問題?
門外漢的傻問題,見笑了!

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

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

引用:
最初由 Markchu7 發表
對不起!沒說清楚!
正式的條件式應該是如此:
SPOINT34:=WMAH=HHV(WMAH,34) OR CROSS(ALL(C<UPSTOP,N),0.8);

那是否有迴圈的問題?
門外漢的傻問題,見笑了!



一樣的,UPSTOP 有用到 UPSP
而 UPSP 有用到 BPOINT34
BPOINT34:=WMAL=LLV(WMAL,34)
一樣沒有重新計算的空間吧,因為34 是定值

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

註冊日期: Nov 2007
來  自:
文章數量: 1518

所以說是門外漢!定值?不懂!
是要數列嗎?那這樣可以嗎?
DBCK:=(DATATYPE<>12 AND ISREGULARFBAR) or TRADEDATE<>REF(TRADEDATE,1) or BARPOS=1 OR (DATATYPE=12 AND TIME=084520),LINETHICK;
SP:=BARSLAST(DBCK)+1,LINETHICK;
MM34:=IF(SP<=34,SP,34);

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

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

引用:
最初由 Markchu7 發表
所以說是門外漢!定值?不懂!
是要數列嗎?那這樣可以嗎?
DBCK:=(DATATYPE<>12 AND ISREGULARFBAR) or TRADEDATE<>REF(TRADEDATE,1) or BARPOS=1 OR (DATATYPE=12 AND TIME=084520),LINETHICK;
SP:=BARSLAST(DBCK)+1,LINETHICK;
MM34:=IF(SP<=34,SP,34);



這樣不就動搖了你原先定義的計算根基嗎?

適不適宜,這問題您必須自己去想...
您給的程式碼只有片段,34 可能只是其中之一而已
我僅能就片段中看到的跟您說

邏輯規則特性,決定是否能重新起算...
整體來看,基本上我不認為這段程式,有機會重新起算

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

註冊日期: Nov 2007
來  自:
文章數量: 1518

這是公式的全部!
那就不考慮SPOINT34的部分!
規則更改如下:
SPOINT:CROSS(ALL(C<UPSTOP,IF(UPSP<M,N1,N)),0.8);就重新計算DNSTOP!
BPOINT:CROSS(ALL(C>DNSTOP,IF(DNSP<M,N1,N)),0.8);就重新計算UPSTOP!
如此重複循環,請問版主是否可行?若可行就有勞版主協助!感恩!

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

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

引用:
最初由 Markchu7 發表
這是公式的全部!
那就不考慮SPOINT34的部分!
規則更改如下:
SPOINT:CROSS(ALL(C<UPSTOP,IF(UPSP<M,N1,N)),0.8);就重新計算DNSTOP!
BPOINT:CROSS(ALL(C>DNSTOP,IF(DNSP<M,N1,N)),0.8);就重新計算UPSTOP!
如此重複循環,請問版主是否可行?若可行就有勞版主協助!感恩!



還有其他部分也可能有類似問題
您並沒有給完整公式,恕無法評估

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

註冊日期: Nov 2007
來  自:
文章數量: 1518

對不起!疏忽一些小細節!補足後的源碼,請版主協助!
DBCK:=(DATATYPE<>12 AND ISREGULARFBAR) or TRADEDATE<>REF(TRADEDATE,1) or BARPOS=1 OR (DATATYPE=12 AND TIME=084520),LINETHICK;
SP:=BARSLAST(DBCK)+1,LINETHICK;
MM2:=IF(SP<=2,SP,2);
MM13:=IF(SP<=13,SP,13);
MM34:=IF(SP<=34,SP,34);
XC:=(O+H+L+C*3)/6;
WMAH:=IF(DBCK,H,MA((2*H+XC)/3,MM2));
WMAL:=IF(DBCK,L,MA((2*L+XC)/3,MM2));
TOP:HHV(WMAH,MM34),COLOR00FF00,LINETHICK3;
BOT:LLV(WMAL,MM34),COLORFF00FF,LINETHICK3;
MM13RG:MIN(20,MAX(2,MA(H-L,MM13)));
SPOINT34:=WMAH=HHV(WMAH,MM34),LINETHICK,LINETHICK;
BPOINT34:=WMAL=LLV(WMAL,MM34),LINETHICK;
DNSP:BARSLAST(SPOINT34)+1,LINETHICK;
UPSP:BARSLAST(BPOINT34)+1,LINETHICK;
DNSTOP:LLV(MIN(TOP,LLV(WMAH,DNSP)+MM13RG),DNSP),COLORBLUE,LINETHICK1;
UPSTOP:HHV(MAX(BOT,HHV(WMAL,UPSP)-MM13RG),UPSP),COLORRED,LINETHICK1;

SPOINT:CROSS(ALL(C<UPSTOP,IF(UPSP<M,N1,N)),0.8);//重新計算DNSTOP!
BPOINT:CROSS(ALL(C>DNSTOP,IF(DNSP<M,N1,N)),0.8);//重新計算UPSTOP!

KLINE(O,H,L,C,0);

Markchu7 附帶上了此圖片:

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

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

引用:
最初由 Markchu7 發表
對不起!疏忽一些小細節!補足後的源碼,請版主協助!
DBCK:=(DATATYPE<>12 AND ISREGULARFBAR) or TRADEDATE<>REF(TRADEDATE,1) or BARPOS=1 OR (DATATYPE=12 AND TIME=084520),LINETHICK;
SP:=BARSLAST(DBCK)+1,LINETHICK;
MM2:=IF(SP<=2,SP,2);
MM13:=IF(SP<=13,SP,13);
MM34:=IF(SP<=34,SP,34);
XC:=(O+H+L+C*3)/6;
WMAH:=IF(DBCK,H,MA((2*H+XC)/3,MM2));
WMAL:=IF(DBCK,L,MA((2*L+XC)/3,MM2));
TOP:HHV(WMAH,MM34),COLOR00FF00,LINETHICK3;
BOT:LLV(WMAL,MM34),COLORFF00FF,LINETHICK3;
MM13RG:MIN(20,MAX(2,MA(H-L,MM13)));
SPOINT34:=WMAH=HHV(WMAH,MM34),LINETHICK,LINETHICK;
BPOINT34:=WMAL=LLV(WMAL,MM34),LINETHICK;
DNSP:BARSLAST(SPOINT34)+1,LINETHICK;
UPSP:BARSLAST(BPOINT34)+1,LINETHICK;
DNSTOP:LLV(MIN(TOP,LLV(WMAH,DNSP)+MM13RG),DNSP),COLORBLUE,LINETHICK1;
UPSTOP:HHV(MAX(BOT,HHV(WMAL,UPSP)-MM13RG),UPSP),COLORRED,LINETHICK1;

SPOINT:CROSS(ALL(C<UPSTOP,IF(UPSP<M,N1,N)),0.8);//重新計算DNSTOP!
BPOINT:CROSS(ALL(C>DNSTOP,IF(DNSP<M,N1,N)),0.8);//重新計算UPSTOP!

KLINE(O,H,L,C,0);



整體程式來看
不是只有 重新計算 DNSTOP 和 UPSTOP 而已!!!
是幾乎要全部重新計算!!!

你所有的計算最初之根基點,皆為 DBCK
也就是說 SPOINT 或 BPOINT 成立後,要把下一根視為 DBCK 成立之處,然後整個重新計數運算(若沒有理解錯誤的話)

這需求基本上是一定要用迴圈了,且有些部分甚至不能用內建函數直接算,弄出來計算負荷可能會不輕,程式複雜度頗高!!!

請您自己先驗算過(例如用Excel)
先去驗證 SPOINT 和 BPOINT 成立後,從頭起算出的新值曲線,就是您實際所要的無誤。

若沒有十分確定邏輯,恕不協助此部分(僅當寫法範例,不接受事後調改)。

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

註冊日期: Nov 2007
來  自:
文章數量: 1518

感恩版主的說明!從以前的一些發問不難發現吾人並無一丁點的程式寫作基礎,都是從論壇一點一滴的累積,以及弧友版主的不吝指點,才有現在的一些些概念,程式的複雜性真的非吾人所能臆測,真是抱歉也實在非常感恩!
我這兩天會仔細地核對數據,確認後再告知版主結果是否請版主協助!總之非常謝謝奇狐一百分的服務!
感恩!

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

註冊日期: Nov 2007
來  自:
文章數量: 1518

確認了!
還是有勞總版主協助!感謝您!

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

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

引用:
最初由 Markchu7 發表
確認了!
還是有勞總版主協助!感謝您!



SPOINT 和 BPOINT 來源是相互相扣的,無法獨自重新起算
只要其中一個成立,就必須全部重新起算!

原碼:
M:=8; N:=5; N1:=3; DBCK:=(DATATYPE<>12 AND ISREGULARFBAR) or TRADEDATE<>REF(TRADEDATE,1) or BARPOS=1 OR (DATATYPE=12 AND TIME=084520); XC:=(O+H+L+C*3)/6; XH:=(2*H+XC)/3; XL:=(2*L+XC)/3; WMAH:=H; WMAL:=L; HSL:=H-L; MM13RG:=HSL; CC:=C; ZA:=C*0; TOP:ZA COLOR00FF00,LINETHICK3; BOT:ZA COLORFF00FF,LINETHICK3; SZ:=ZA; BZ:=ZA; SPOINT34:=1; BPOINT34:=1; DNSTOP:ZA; UPSTOP:ZA; SPOINT:=ZA; BPOINT:=ZA; for P=1 to datacount do begin if DBCK[P]=1 then FP:=P; SP:=P-FP+1; if SP<=2 then MM2:=SP; else MM2:=2; if SP<=13 then MM13:=SP; else MM13:=13; if SP<=34 then MM34:=SP; else MM34:=34; if DBCK[P]=0 then begin WMAH[P]:=XH[P]; WMAL[P]:=XL[P]; for i = P-1 downto P-MM2+1 do begin WMAH[P]:=WMAH[P]+XH[i]; WMAL[P]:=WMAL[P]+XL[i]; end; WMAH[P]:=WMAH[P]/MM2; WMAL[P]:=WMAL[P]/MM2; end; TOP[P]:=WMAH[P]; BOT[P]:=WMAL[P]; for i = P-1 downto P-MM34+1 do begin if WMAH[i]>TOP[P] then TOP[P]:=WMAH[i]; if WMAL[i]<BOT[P] then BOT[P]:=WMAL[i]; end; for i = P-1 downto P-MM13+1 do MM13RG[P]:=MM13RG[P]+HSL[i]; MM13RG[P]:=MM13RG[P]/MM13; if MM13RG[P]<2 then MM13RG[P]:=2; if MM13RG[P]>20 then MM13RG[P]:=20; if WMAH[P]=TOP[P] then SPOINT34:=P; if WMAL[P]=BOT[P] then BPOINT34:=P; DNSP:=P-SPOINT34+1; UPSP:=P-BPOINT34+1; Lt[P]:=WMAH[P]; for i = P-1 downto P-DNSP+1 do if WMAH[i]<Lt[P] then Lt[P]:=WMAH[i]; Lt[P]:=Lt[P]+MM13RG[P]; if TOP[P]<Lt[P] then Lt[P]:=TOP[P]; DNSTOP[P]:=Lt[P]; for i = P-1 downto P-DNSP+1 do if Lt[i]<DNSTOP[P] then DNSTOP[P]:=Lt[i]; Ht[P]:=WMAL[P]; for i = P-1 downto P-UPSP+1 do if WMAL[i]>Ht[P] then Ht[P]:=WMAL[i]; Ht[P]:=Ht[P]-MM13RG[P]; if BOT[P]>Ht[P] then Ht[P]:=BOT[P]; UPSTOP[P]:=Ht[P]; for i = P-1 downto P-UPSP+1 do if Ht[i]>UPSTOP[P] then UPSTOP[P]:=Ht[i]; if UPSP<M then UN:=N1; else UN:=N; for i= 0 to UN-1 do begin k:=P-i; if k<1 then break; if CC[k]<UPSTOP[k] then SZ[P]:=SZ[P]+1; end; SZ[P]:=SZ[P]=UN; if P>1 then SPOINT[P]:=SZ[P]=1 and SZ[P-1]=0; if DNSP<M then UN:=N1; else UN:=N; for i= 0 to UN-1 do begin k:=P-i; if K<1 then break; if CC[k]>DNSTOP[k] then BZ[P]:=BZ[P]+1; end; BZ[P]:=BZ[P]=UN; if P>1 then BPOINT[P]:=BZ[P]=1 and BZ[P-1]=0; if SPOINT[P] or BPOINT[P] then FP:=P+1; end;

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

註冊日期: Nov 2007
來  自:
文章數量: 1518

媽呀!這麼複雜!
真的太感謝版主了,萬分感謝!

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

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

引用:
最初由 Markchu7 發表
媽呀!這麼複雜!
真的太感謝版主了,萬分感謝!



不客氣^^

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

論壇跳轉:
主題評分:

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