金死叉之間的最大值求法:
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);//參數定義 ZIG(1,N);//高點 FF:=PEAKBARS(1,N,1); FF:=IF(FF<6,PEAKBARS(1,N,2),FF); BARST:=SYSPARAM(1); VARIABLE:ZQ[序列數據量/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; 必須打開十字光標才可以正常使用。自動尋找高點,可另加參數,改成高低點兩用。 公式含義:當K線與高點的時間間隔為十字光標與高點的時間間隔的等于指定比例時,顯示豎線。即所謂的時間預測,如果您有好的測試方法,可以仿此代碼編制。 這段代碼,進行適當的改造,可以向未來延伸,有興趣的可以自行研究(提示:使用SHIFT函數)。 向前賦值函數的高級用法 問題:如何在最后一根K線的前第6天,作上標記? 1、先建立一個名為BACKSET-TEST的公式,代碼如下: ISLASTBAR{該周期是否最后一個周期。最后一個周期返回值為1,其余為0} 觀察指標線的圖形,正如注釋所述,最后一天顯示為1,這個1我們可理解為信號(條件)成立。其余時間,指標的數值為0,可理解為信號(條件)不成立。 2、巧用BACKSET()函數: ?。盉ACDSET(X,N)注釋:向前賦值,若X非0則把當前周期及前N-1周期的數值設置為1; ?。彩纠喊研盘栂蚯耙啤?br> TJ1:=ISLASTBAR;{最后一天的條件} TJ2:BACKSET(TJ1,6); 觀察TJ2指標線圖,發(fā)現最后6天的TJ2信號都是1,即一個高度為1的矩形。公式中,還無法判斷哪天是倒數第6天。 3、顯然倒數第6天,是上面矩形的前沿,如何在公式中,表達這個矩形的前沿? 容易想到的辦法: ?。钡箶档?天的當天,TJ2為1,更早的1天TJ2=0,因此可以編出如下代碼: TJ1:=ISLASTBAR;{最后一天的條件} TJ2:=BACKSET(TJ1,6); TJ3:TJ2 AND REF(TJ2,1)=0; ?。驳箶档?天的當天,TJ2為1,更早的1天TJ2=0,即當天TJ2比早一天的TJ2更大,因此可以編出如下代碼: TJ1:=ISLASTBAR;{最后一天的條件} TJ2:=BACKSET(TJ1,6); TJ3:TJ2>REF(TJ2,1); ?。车箶档?天的當天,TJ2為1,更早的1天TJ2=0,可以想像為TJ2指標線上穿了一條高度為0.5的水平線,因此可以編出如下代碼: TJ1:=ISLASTBAR;{最后一天的條件} TJ2:=BACKSET(TJ1,6); TJ3:CROSS(TJ2,0.5); ?。辞捎肍ILTER()過濾函數,FILTER(X,N),若X非0,可以讓X保持當天的值不變,且過濾其后N個周期使之數值為0。 TJ1:=ISLASTBAR;{最后一天的條件} TJ2:=BACKSET(TJ1,6); TJ3:FILTER(TJ2,5);{第1次的TJ2保持為1不變,其后的5個周期過濾為0} 這樣就初步找到了4種方法,可以標記倒數第6天,若想用圖標來標記的話,代碼例舉如下: TJ1:=ISLASTBAR;{最后一天的條件} TJ2:=BACKSET(TJ1,6); TJ3:=TJ2>REF(TJ2,1); DRAWICON(TJ3,L,1); |
|