![]() |
在這個頁面顯示本主題全部的 15 個文章 |
奇狐社區論壇 (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=22429)
[問題]是否須用到迴圈請協助!
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 發表
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,如此循環不斷!
像這樣重複將計算出的結果,再丟回條件再作計算,實在超出能力範圍,希望版主協助!感恩!
對不起!沒說清楚!
正式的條件式應該是如此:
SPOINT34:=WMAH=HHV(WMAH,34) OR CROSS(ALL(C<UPSTOP,N),0.8);
那是否有迴圈的問題?
門外漢的傻問題,見笑了!
引用:
最初由 Markchu7 發表
對不起!沒說清楚!
正式的條件式應該是如此:
SPOINT34:=WMAH=HHV(WMAH,34) OR CROSS(ALL(C<UPSTOP,N),0.8);
那是否有迴圈的問題?
門外漢的傻問題,見笑了!
所以說是門外漢!定值?不懂!
是要數列嗎?那這樣可以嗎?
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);
引用:
最初由 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);
這是公式的全部!
那就不考慮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 發表
這是公式的全部!
那就不考慮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!
如此重複循環,請問版主是否可行?若可行就有勞版主協助!感恩!
對不起!疏忽一些小細節!補足後的源碼,請版主協助!
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 發表
對不起!疏忽一些小細節!補足後的源碼,請版主協助!
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 發表
確認了!
還是有勞總版主協助!感謝您!
原碼:
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;
媽呀!這麼複雜!
真的太感謝版主了,萬分感謝!
引用:
最初由 Markchu7 發表
媽呀!這麼複雜!
真的太感謝版主了,萬分感謝!
全部時間均為台灣時間, 現在時間為13:56 | 在這個頁面顯示本主題全部的 15 個文章 |
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved.