MT編程入門(mén)教程(2)----指標(biāo)畫(huà)哪里??jī)r(jià)格窗口還是獨(dú)立窗口? [MT4]
作者:
MT4 來(lái)源:
cxh99.com 發(fā)布時(shí)間:2012年05月04日 點(diǎn)擊數(shù):
【
收藏到本網(wǎng)的會(huì)員中心】
- 其實(shí),都可以,不過(guò)是坐標(biāo)的規(guī)格化,使得它們?cè)谙嘟臄?shù)據(jù)范圍,就可以畫(huà)在一起。
看你自己的習(xí)慣。畫(huà)在價(jià)格窗口,方便和價(jià)格同時(shí)感受。
//+本例展示了如何把MA轉(zhuǎn)換后畫(huà)到獨(dú)立窗口,同樣也可以把獨(dú)立窗口的指標(biāo)改畫(huà)在價(jià)格窗口
//要達(dá)到這些目的,需要考慮兩個(gè)方面 1 估計(jì)數(shù)據(jù)的范圍,以確定以什么為單位? 2 確定坐標(biāo)偏移,也就是確定坐標(biāo)零點(diǎn)。
//目的就是讓你要畫(huà)的多條線在同樣的數(shù)值范圍,這樣才能同時(shí)畫(huà)出,達(dá)到參考目的
//比如-1000到+1000和0到+4這樣兩套數(shù)據(jù)要變換后才能在同圖畫(huà)出,
//轉(zhuǎn)換方法復(fù)習(xí)中學(xué)數(shù)學(xué)直角坐標(biāo)系的縮放和平移部分-------------------------+
// 共畫(huà)2條線
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Yellow
// Parameter
// MA-Properties
extern double MovingFast = 7;
extern double MovingSlow = 13;
extern double MovingSlow02 = 13;
extern int MaM=2;
extern int MaP=2;
extern int MaM0=3;
extern int MaP0=3;如改
extern int range1 = 11;
extern int range2 = 4;
int i;
// Buffer
//// 共畫(huà)2條線,用2個(gè)數(shù)組存儲(chǔ)線數(shù)據(jù)
double bufferMA1[];
double bufferMA2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//// 設(shè)置2條線的順序編號(hào),畫(huà)法,對(duì)應(yīng)數(shù)組,
SetIndexStyle( 0, DRAW_LINE );
SetIndexBuffer( 0, bufferMA1 );
SetIndexStyle( 1, DRAW_LINE );
SetIndexBuffer( 1, bufferMA2 );
return(0);
}
int deinit() { return(0);}
int start()
{
double Buffer10,Buffer11,Buffer20,Buffer21,Buffer30, Buffer31;
int countedBars = IndicatorCounted();
//---- check for possible errors
if ( countedBars < 0 ) { return(-1); }
if ( countedBars > 0 ) { countedBars--; }
int barsToCount = Bars - countedBars;
for ( int i = barsToCount; i >= 0; i-- )
{
//// 開(kāi)始計(jì)算
Buffer20 = iMA(NULL,0,MovingFast,0,MaM,MaP, i) ;//MovingFast
Buffer30 = iMA(NULL,0,MovingSlow,0,MaM,MaP, i) ;//MovingSlow
Buffer21 = iMA(NULL,0,MovingFast,0,MaM,MaP, i+range1) ;
Buffer31 = iMA(NULL,0,MovingSlow02,0,MaM,MaP, i+range2) ;
//賦值給數(shù)組以便畫(huà)線,使用Point使得坐標(biāo)以點(diǎn)為單位,保證本指標(biāo)對(duì)不同貨幣的一致y軸單位和視覺(jué)效果
bufferMA1 = MathRound((Buffer20-Buffer21)/Point);
bufferMA2 = MathRound((Buffer30-Buffer31)/Point);
}
return(0);
}上面把兩個(gè)MA的差值畫(huà)在獨(dú)立窗口,當(dāng)然若把差值再加上一個(gè)MA,就可以畫(huà)在價(jià)格窗口。MA及其各種變化是最常用的指標(biāo)基礎(chǔ)。MA一般常用來(lái)替代價(jià)格本身 再做進(jìn)一步計(jì)算。#property indicator_chart_window
//......
Buffer10 = iMA(NULL,0,MovingFast*6,0,MaM,MaP, i)
bufferMA1 = MathRound(Buffer20-Buffer21)+Buffer10 ;
bufferMA2 = MathRound(Buffer30-Buffer31)+Buffer10 ;
//.........就可以把它們跌加到價(jià)格上畫(huà)了。你只需修改Buffer10 ,Buffer20, Buffer21 Buffer30, Buffer31為你需要的,在考慮一下數(shù)據(jù)范圍坐標(biāo)問(wèn)題,你可以畫(huà)任意的指標(biāo)了。