外_匯_邦 WaiHuiBang.com
要畫指標線,只要在程序中寫明以下幾點就可以了:
明確指標線所在窗口,是主圖還是副圖
要建立數組,用以保存指標線在各個位置的值。www.emoneybtc.com
要建立指標線與數組的對應關系,哪個數組對應哪條指標線
要明確指標線的線型,是曲線還是柱線或者是箭頭
如果指標線是箭頭,還要說明是哪種箭頭
給數組賦值
其中:
二條寫在文件頭部中,
第三、四、五條寫在init()函數中(init函數僅在指標加載時運行一次)
第六條寫在start()函數中(start函數在數據發動變動時運行,變動一次運行一次)
下面以MACD為例說明
我們知道,MACD指標由二條曲線和一組紅綠柱線組成。(下圖一)
其中:
白線是二根均線的差;
紫線是白線的移動平均線;
紅綠柱線則是白線和紫線的差,白線上穿紫線,出現紅柱,下穿則出現綠柱。
我們從簡單入手,先去除紫線和紅綠柱線,僅保留其中的那根白線,來看白線是怎樣畫出來的。
下面是全部語句:
#propertyindicator_separate_window
#propertyindicator_color1White
#propertyindicator_level10
externintFMA=12;
externintSMA=26;
doublebuf[];
intinit()
{
SetIndexBuffer(0,buf);
SetIndexStyle(0,DRAW_LINE);
return(0);
}
intstart()
{
intlimit=Bars-IndicatorCounted();
for(inti=0;i
{
buf=
iMA(NULL,0,FMA,0,1,0,i)
-iMA(NULL,0,SMA,0,1,0,i);
}
return(0);
}
說明如下:
==============================================
==============================================
以下為上述語句的簡要說明
#propertyindicator_separate_window
指標放在副圖
#propertyindicator_color1White
第一條指標線為白色
#propertyindicator_level10
在副圖中零值位置上畫一條水平橫線,
externintFMA=12;
externintSMA=26;
設立二個整數型變量,默認值為12和26,允許外部修改值
doublebuf[];
設立一個數組
intinit()
初始化函數。該函數在指標加載時只運行一次。init是系統默認的函數名,但使用時仍需要進行創設,所以要加定義符int
{
SetIndexBuffer(0,buf);
設置數組buf為第一條指標線
SetIndexStyle(0,DRAW_LINE);
設置第一條指標線線型為連續曲線
return(0);
函數結束語句
}
intstart()
指標觸發函數。與init函數不同,該函數在有數據變化時被觸發,如果數據被不斷更新,則該函數將不斷執行。start也是系統默認的函數名,但使用時也仍然需要進行創設,所以也要加定義符int
{
intlimit=Bars-IndicatorCounted();
自定義一個變量limit,並賦值
Bars是圖表中的柱數
IndicatorCounted()緩存中的柱數,就是已經計算過的有值的柱數
這樣limit的值就是未經計算的柱數,這樣就可以起到優化程序的作用。
for(inti=0;i
循環語句。
循環從i=0開始,每循環一次i值增加1,一直循環到i
由於循環變量i為一個新變量,所以要先定義,加上整型變量定義符int
下面大括中為循環體,此例中只一條語句
{
buf=
iMA(NULL,0,FMA,0,1,0,i)
-iMA(NULL,0,SMA,0,1,0,i);
}
給數組buf賦值,其值分別為相應位置上兩條均線的差
i是水平位置序號值,即燭柱從右到左的序號,右邊第一個燭柱序號為0
return(0);
start函數結束
外_匯_邦 WaiHuiBang.com