一道重考題,再一次用心做算法---這可是敢于交給時(shí)間去批閱的經(jīng)典喲。 前述文章詳細(xì)論述過斐波那契數(shù)列的各類應(yīng)用算法,本文再次論述一道代表性的作業(yè)題,請(qǐng)見下圖: 周線當(dāng)前頂?shù)追中蛯?duì)兒的內(nèi)部黃金分割篩選算法,請(qǐng)看圖4 網(wǎng)友的留言 留言的意思是說,編一個(gè)周線選股公式,股價(jià)經(jīng)過一輪上漲,漲幅達(dá)到一倍左右,現(xiàn)回調(diào)達(dá)到0.618或者0.5,同時(shí)到達(dá)60周線附近,60周線的角度向上;如果開始回調(diào)時(shí),請(qǐng)?jiān)谥鲌D上標(biāo)示回調(diào)的黃金分割線。 思路步驟
篩選思路 從時(shí)間與空間二維角度,全面界定周線周期數(shù)據(jù)本次向上的最低起點(diǎn)的位置,均由變量參與。 主圖思路 經(jīng)由上述數(shù)據(jù)篩選之后:
算法建立 1. 使用最值函數(shù),取得起動(dòng)底點(diǎn)的基本數(shù)據(jù)---最值與位置: TB:=CONST(LLVBARS(L,多少數(shù)據(jù)以來));{自左側(cè)向下以來,多少數(shù)據(jù)以來的起動(dòng)底點(diǎn)位置} BL:=IF(CURRBARSCOUNT<=TB+1,CONST(REF(L,TB)),DRAWNULL);{起動(dòng)底點(diǎn)位置處的最低值} 2. 使用最值函數(shù),取得當(dāng)前頂點(diǎn)的基本數(shù)據(jù)---最值與位置: TE:=CONST(HHVBARS(H,TB+1)); {起動(dòng)底點(diǎn)位置向右的最高價(jià)位置} EH:=IF(CURRBARSCOUNT<=TB+1,CONST(REF(H,TE)),DRAWNULL); {起動(dòng)底點(diǎn)位置向右的最高價(jià)的最高值} 3. 計(jì)算當(dāng)前這一對(duì)兒底頂之間的空間值,并計(jì)算內(nèi)部的菲氏分割位: KJ:=EH-BL;{空間} KJ05:=EH-KJ*0.5; KJ0618:=EH-KJ*0.618; KJ12:=(KJ05+KJ0618)/2; 關(guān)鍵點(diǎn)在這里,因?yàn)榫W(wǎng)友要求的是空間0.5與0.618的兩個(gè)空間位置的數(shù)據(jù)篩選,所以,為了減少運(yùn)算量,以便加快運(yùn)算速度,這里進(jìn)一步計(jì)算了0.5位與0.618位的中間值“KJ1/2”簡(jiǎn)記為“KJ12”;而ABS的冗余空間取值為2,這樣以來(這里的計(jì)算取用基本數(shù)據(jù)的最低價(jià)L),L與0.5位以及0.618位置,仍然有上下的空間。見下圖: 居間冗余處理算法 4. 使用ABS函數(shù)確認(rèn)當(dāng)前價(jià)格與0.618的空間位置關(guān)系以及60周均線的空間位置關(guān)系: MA60:=MA(C,60) {60周均線} CONST(LLVBARS(L,多少數(shù)據(jù)以來))<=30{本次的起動(dòng)底點(diǎn)距今天在30周之內(nèi)---當(dāng)然,本次起動(dòng)底點(diǎn)在“當(dāng)前30個(gè)”時(shí)間區(qū)間內(nèi)了} CONST(HHVBARS(H,多少數(shù)據(jù)以來))>CONST(LLVBARS(L,多少數(shù)據(jù)以來)){“多少數(shù)據(jù)以來”的開始的那個(gè)高點(diǎn)位置在起動(dòng)底點(diǎn)的左側(cè)---進(jìn)行時(shí)間限定} CONST(LLV(L,多少數(shù)據(jù)以來))<=CONST(HHV(H,多少數(shù)據(jù)以來))*總計(jì)下跌多少/100 {本次起動(dòng)底點(diǎn)的值是左側(cè)“多少數(shù)據(jù)以來”高點(diǎn)值的50%以下---進(jìn)行空間限定} ABS(L/KJ12-1)<=0.02{當(dāng)前最低值與左側(cè)“空間”/KJ 0.5位以及0.618位的空間關(guān)系為,處在的縱向范圍之內(nèi)} ABS(L/MA60-1)<=0.02{當(dāng)前最低值與60周均線的空間關(guān)系為處在2%的縱向范圍之內(nèi)} 兩個(gè)參數(shù)與完整代碼 兩個(gè)參數(shù)與代碼流程 TB:=CONST(LLVBARS(L,多少數(shù)據(jù)以來)); BL:=IF(CURRBARSCOUNT<=TB+1,CONST(REF(L,TB)),DRAWNULL); TE:=CONST(HHVBARS(H,TB+1)); EH:=IF(CURRBARSCOUNT<=TB+1,CONST(REF(H,TE)),DRAWNULL); KJ:=EH-BL;{空間} KJ05:=EH-KJ*0.5; KJ0618:=EH-KJ*0.618; KJ12:=(KJ05+KJ0618)/2; MA60:=MA(C,60); CONST(LLVBARS(L,多少數(shù)據(jù)以來))<=30 AND CONST(HHVBARS(H,多少數(shù)據(jù)以來))>CONST(LLVBARS(L,多少數(shù)據(jù)以來)) AND CONST(LLV(L,多少數(shù)據(jù)以來))<=CONST(HHV(H,多少數(shù)據(jù)以來))*總計(jì)下跌多少/100 AND ABS(L/KJ12-1)<=0.02 AND ABS(L/MA60-1)<=0.02; 主圖標(biāo)注算法,請(qǐng)看下一篇文章《山底的0.618(標(biāo)注篇)》。 計(jì)算創(chuàng)造價(jià)值,分享助力成功,代碼均可運(yùn)行。 |
|