金死叉之間的最大值求法:
A1:=CROSS("MACD.MACD",0); A2:=BARSLAST(A1); A3:=HHVBARS("MACD.MACD" ,A2+1); A4:=BACKSET(REF(A3>=1,1) AND "MACD.MACD"<0,A3); A5:=BACKSET(REF(A4=0,1) AND A4=1,2); 高值:IF(FILTER(A5,2),"MACD.MACD",0); DRAWICON(高值>0,高值,4); 金死叉之間的最小值求法: B1:=CROSS(0,"MACD.MACD"); B2:=BARSLAST(B1); B3:=LLVBARS("MACD.MACD" ,B2+1); B4:=BACKSET(REF(B3>=1,1) AND "MACD.MACD">0,B3); B5:=BACKSET(REF(B4=0,1) AND B4=1,2); 低值:IF(FILTER(B5,2),"MACD.MACD",0); DRAWICON(低值<0,低值,5); 時間周期線(主圖疊加) INPUT:N(5,5,100);//參數(shù)定義 ZIG(1,N);//高點 FF:=PEAKBARS(1,N,1); FF:=IF(FF<6,PEAKBARS(1,N,2),FF); BARST:=SYSPARAM(1); VARIABLE:ZQ[序列數(shù)據(jù)量/2]:=1.236; ZQ[2]:=1.309; ZQ[3]:=1382; ZQ[4]:=1.5; ZQ[5]:=1.618; ZQ[6]:=1.746; ZQ[7]:=2; ZQ[8]:=2.618; ZQ[9]:=3; ZQ[10]:=3.236; ZQ[11]:=4.236; ZQ[12]:=5.236;//周期線間隔比例,可另行定義 TJ:=FF[BARST]=BARST-BARPOS; FOR I=1 TO 12 DO TJ:=TJ OR BARPOS-BARST=ROUND((ZQ-1)*FF[BARST]+0.5); VERTLINE(TJ),POINTDOT,COLORMAGENTA; 必須打開十字光標(biāo)才可以正常使用。自動尋找高點,可另加參數(shù),改成高低點兩用。 公式含義:當(dāng)K線與高點的時間間隔為十字光標(biāo)與高點的時間間隔的等于指定比例時,顯示豎線。即所謂的時間預(yù)測,如果您有好的測試方法,可以仿此代碼編制。 這段代碼,進行適當(dāng)?shù)母脑?,可以向未來延伸,有興趣的可以自行研究(提示:使用SHIFT函數(shù))。 向前賦值函數(shù)的高級用法 問題:如何在最后一根K線的前第6天,作上標(biāo)記? 1、先建立一個名為BACKSET-TEST的公式,代碼如下: ISLASTBAR{該周期是否最后一個周期。最后一個周期返回值為1,其余為0} 觀察指標(biāo)線的圖形,正如注釋所述,最后一天顯示為1,這個1我們可理解為信號(條件)成立。其余時間,指標(biāo)的數(shù)值為0,可理解為信號(條件)不成立。 2、巧用BACKSET()函數(shù): ?。盉ACDSET(X,N)注釋:向前賦值,若X非0則把當(dāng)前周期及前N-1周期的數(shù)值設(shè)置為1; 2示例:把信號向前移。 TJ1:=ISLASTBAR;{最后一天的條件} TJ2:BACKSET(TJ1,6); 觀察TJ2指標(biāo)線圖,發(fā)現(xiàn)最后6天的TJ2信號都是1,即一個高度為1的矩形。公式中,還無法判斷哪天是倒數(shù)第6天。 3、顯然倒數(shù)第6天,是上面矩形的前沿,如何在公式中,表達這個矩形的前沿? 容易想到的辦法: ?。钡箶?shù)第6天的當(dāng)天,TJ2為1,更早的1天TJ2=0,因此可以編出如下代碼: TJ1:=ISLASTBAR;{最后一天的條件} TJ2:=BACKSET(TJ1,6); TJ3:TJ2 AND REF(TJ2,1)=0; ?。驳箶?shù)第6天的當(dāng)天,TJ2為1,更早的1天TJ2=0,即當(dāng)天TJ2比早一天的TJ2更大,因此可以編出如下代碼: TJ1:=ISLASTBAR;{最后一天的條件} TJ2:=BACKSET(TJ1,6); TJ3:TJ2>REF(TJ2,1); ?。车箶?shù)第6天的當(dāng)天,TJ2為1,更早的1天TJ2=0,可以想像為TJ2指標(biāo)線上穿了一條高度為0.5的水平線,因此可以編出如下代碼: TJ1:=ISLASTBAR;{最后一天的條件} TJ2:=BACKSET(TJ1,6); TJ3:CROSS(TJ2,0.5); 4巧用FILTER()過濾函數(shù),F(xiàn)ILTER(X,N),若X非0,可以讓X保持當(dāng)天的值不變,且過濾其后N個周期使之?dāng)?shù)值為0。 TJ1:=ISLASTBAR;{最后一天的條件} TJ2:=BACKSET(TJ1,6); TJ3:FILTER(TJ2,5);{第1次的TJ2保持為1不變,其后的5個周期過濾為0} 這樣就初步找到了4種方法,可以標(biāo)記倒數(shù)第6天,若想用圖標(biāo)來標(biāo)記的話,代碼例舉如下: TJ1:=ISLASTBAR;{最后一天的條件} TJ2:=BACKSET(TJ1,6); TJ3:=TJ2>REF(TJ2,1); DRAWICON(TJ3,L,1); |
|