MT編程入門教程(0)----指標(biāo)文件構(gòu)成
作者:MT4 來源:cxh99.com 發(fā)布時(shí)間:2012年05月04日
- //例1
//+------------------------------------------------------------------+
//雙些線后是單行注釋,用于注解,自用說明。/*和*/包起來實(shí)現(xiàn)多行注釋,記錄自己的說明介紹,編程使用記錄等
//MQL4語言基本服從C語言的規(guī)則-----------注意目前MetaEditor處理不好多字節(jié)代碼,所以不要在代碼中使用中文和中文空格-------------+
//每個(gè)指標(biāo)文件只是至少包括三個(gè)部分(1)property 和參數(shù),數(shù)組聲明,(2)初始化函數(shù)nit(), (3)主函數(shù)start()
//property 是各種說明信息
//最重要必須的是這三種,(1)說明指標(biāo)將畫在價(jià)格窗口還是獨(dú)立的窗口
//(2)有多少個(gè)(1~7)儲(chǔ)存指標(biāo)數(shù)據(jù)的數(shù)組,(3)說明對(duì)應(yīng)將畫指標(biāo)的繪畫顏色,編號(hào)1~7
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- 可設(shè)置的參數(shù),可根據(jù)需要,由使用者設(shè)置
extern int MA_Period=13;
extern int MA_Shift=0;
extern int MA_Method=2;
extern int MA_Price = 6;
/* MA_Method =
MODE_SMA 0 Simple moving average,
MODE_EMA 1 Exponential moving average,
MODE_SMMA 2 Smoothed moving average,
MODE_LWMA 3 Linear weighted moving average.
*/
/* MA_Price =
PRICE_CLOSE 0 Close price.
PRICE_OPEN 1 Open price.
PRICE_HIGH 2 High price.
PRICE_LOW 3 Low price.
PRICE_MEDIAN 4 Median price, (high+low)/2.
PRICE_TYPICAL 5 Typical price, (high+low+close)/3.
PRICE_WEIGHTED 6 Weighted close price, (high+low+close+close)/4.
*/
//數(shù)組,儲(chǔ)存指標(biāo)數(shù)據(jù)
double Buffer0[];
//----
//+------------------------------------------------------------------+
//| 初始化準(zhǔn)備函數(shù),裝入時(shí)調(diào)用一次 |
//+------------------------------------------------------------------+
int init()
{
//-設(shè)置編號(hào)為0的線的線形等參數(shù), 0~6,對(duì)應(yīng)indicator_color1~7
SetIndexStyle(0,DRAW_LINE);
//---- 設(shè)置編號(hào)為0的線 與數(shù)組的對(duì)應(yīng)關(guān)系, 0~6
SetIndexBuffer(0,Buffer0);
return(0);
}
//+------------------------------------------------------------------+
//| |
int start() //指標(biāo)計(jì)算主函數(shù),每次計(jì)算調(diào)用
{
ma();
return(0);
}
//+------------------------------------------------------------------+
//|自定義函數(shù),這里只是直接使用庫函數(shù)實(shí)現(xiàn)MA, 若你自己計(jì)算,可設(shè)計(jì)任何指標(biāo) |
//+------------------------------------------------------------------+
void ma()
{
int pos=Bars; //Bars = Number of bars in the current chart.當(dāng)前窗口中的蠟燭數(shù)
while(pos>=0)
{
Buffer0[pos]=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,MA_Price,pos);
pos--;
}
}
//
///----------------------------------------------------------------------
[Copy to clipboard]
例2
CODE:
//+------------------------------------------------------------------+
//雙些線后是單行注釋,用于注解,自用說明。/*和*/包起來實(shí)現(xiàn)多行注釋,記錄自己的說明介紹,編程使用記錄等
//MQL4語言基本服從C語言的規(guī)則-----------注意目前MetaEditor處理不好多字節(jié)代碼,所以不要在代碼中使用中文和中文空格-------------+
//每個(gè)指標(biāo)文件只是至少包括三個(gè)部分(1)property 和參數(shù),數(shù)組聲明,(2)初始化函數(shù)nit(), (3)主函數(shù)start()
//property 是各種說明信息
//最重要必須的是這三種,(1)說明指標(biāo)將畫在價(jià)格窗口還是獨(dú)立的窗口
//(2)有多少個(gè)(1~7)儲(chǔ)存指標(biāo)數(shù)據(jù)的數(shù)組,(3)說明對(duì)應(yīng)將畫指標(biāo)的繪畫顏色,編號(hào)1~7
#property indicator_separate_window
#property indicator_buffers 7
#property indicator_color1 Red
#property indicator_color2 Yellow
#property indicator_color3 Blue
#property indicator_color4 Green
#property indicator_color5 Gray
#property indicator_color6 SkyBlue
#property indicator_color7 Tan
//---- 可設(shè)置的參數(shù),可根據(jù)需要,由使用者設(shè)置
extern int MA_Period=13;
extern int MA_Shift=0;
extern int MA_Method=2;
extern int MA_Price = 6;
//數(shù)組,儲(chǔ)存指標(biāo)數(shù)據(jù)
double Buffer0[];
double Buffer1[];
double Buffer2[];
double Buffer3[];
double Buffer4[];
double Buffer5[];
double Buffer6[];
//----
//+------------------------------------------------------------------+
//| 初始化準(zhǔn)備函數(shù),裝入時(shí)調(diào)用一次 |
//+------------------------------------------------------------------+
int init()
{
//-設(shè)置編號(hào)為0的線的線形等參數(shù), 0~6,對(duì)應(yīng)indicator_color1~7
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
SetIndexStyle(3,DRAW_LINE);
SetIndexStyle(4,DRAW_LINE);
SetIndexStyle(5,DRAW_LINE);
SetIndexStyle(6,DRAW_LINE);
//---- 設(shè)置編號(hào)為0的線 與數(shù)組的對(duì)應(yīng)關(guān)系, 0~6
SetIndexBuffer(0,Buffer0);
SetIndexBuffer(1,Buffer1);
SetIndexBuffer(2,Buffer2);
SetIndexBuffer(3,Buffer3);
SetIndexBuffer(4,Buffer4);
SetIndexBuffer(5,Buffer5);
SetIndexBuffer(6,Buffer6);
return(0);
}
//+------------------------------------------------------------------+
//| |
int start() //指標(biāo)計(jì)算主函數(shù),每次計(jì)算調(diào)用
{
ma();
ma1();
return(0);
}
//+------------------------------------------------------------------+
//|自定義函數(shù),這里只是直接使用庫函數(shù)實(shí)現(xiàn)MA, 若你自己計(jì)算,可設(shè)計(jì)任何指標(biāo) |
//+------------------------------------------------------------------+
void ma()
{
int pos=Bars; //Bars = Number of bars in the current chart.當(dāng)前窗口中的蠟燭數(shù)
while(pos>=0)
{
Buffer0[pos]=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,MA_Price,pos);
Buffer1[pos]=iMA(NULL,0,MA_Period*2,MA_Shift,MA_Method,MA_Price,pos);
Buffer2[pos]=iMA(NULL,0,MA_Period*3,MA_Shift,MA_Method,MA_Price,pos);
pos--;
}
}
void ma1()
{
int pos=Bars; //Bars = Number of bars in the current chart.當(dāng)前窗口中的蠟燭數(shù)
while(pos>=0)
{
Buffer3[pos]=iMA(NULL,0,MA_Period*4,MA_Shift,MA_Method,MA_Price,pos);
Buffer4[pos]=iMA(NULL,0,MA_Period*5,MA_Shift,MA_Method,MA_Price,pos);
Buffer5[pos]=iMA(NULL,0,MA_Period*6,MA_Shift,MA_Method,MA_Price,pos);
Buffer6[pos]=iMA(NULL,0,MA_Period*7,MA_Shift,MA_Method,MA_Price,pos);
pos--;
}
}