MetaTrader編程入門

2011-06-11 14:46:58

MetaTrader編程入門教程(0)

----指標文件構成

例1

//+--------------------------------------------------

//雙些線後是單行註釋,用於註解,自用說明。/*和*/包起來實現多行註釋,記錄自己的說明介紹,編程使用記錄等

//MQL4語言基本服從C語言的規則-----------註意目前MetaEditor處理不好多字節代碼,所以不要在代碼中使用中文和中文空格-------------+

//每個指標文件只是至少包括三個部分(1)property 和參數,數組聲明,(2)初始化函數nit(), (3)主函數start()

//property 是各種說明信息

//最重要必須的是這三種,(1)說明指標將畫在價格窗口還是獨立的窗口

//(2)有多少個(1~7)儲存指標數據的數組,(3)說明對應將畫指標的繪畫顔色,編號1~7

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 Red

//---- 可設置的參數,可根據需要,由使用者設置

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.

*/

//數組,儲存指標數據

double Buffer0[];

//| 初始化準備函數,裝入時調用一次

int init()

{

//-設置編號為0的線的線形等參數, 0~6,對應indicator_color1~7

SetIndexStyle(0,DRAW_LINE);

//---- 設置編號為0的線 與數組的對應關系, 0~6

SetIndexBuffer(0,Buffer0);

return(0);

}

int start() //指標計算主函數,每次計算調用

{

ma();

return(0);

}

//自定義函數,這裡只是直接使用庫函數實現MA, 若你自己計算,可設計任何指標

void ma()

{

int pos=Bars;

//Bars = Number of bars in the current chart.當前窗口中的蠟燭數

while(pos>=0)

{

Buffer0[pos]=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,MA_Price,pos);

pos--;

}

}

//+--------------------------------------------------

例2

//+--------------------------------------------------

#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

extern int MA_Period=13;

extern int MA_Shift=0;

extern int MA_Method=2;

extern int MA_Price = 6;

double Buffer0[];

double Buffer1[];

double Buffer2[];

double Buffer3[];

double Buffer4[];

double Buffer5[];

double Buffer6[];

//----

int init()

{

//-設置編號為0的線的線形等參數, 0~6,對應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);

//---- 設置編號為0的線 與數組的對應關系, 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() //指標計算主函數,每次計算調用

{

ma();

ma1();

return(0);

}

void ma()

{

int pos=Bars;

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;

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--;

}

}

MetaTrader編程入門(1)--智能交易系統基礎

//+------------------------------------------------------------------+

//| Designed by OKwh, China |

//| Copyright 2006, OKwh |

//| |

//+------------------------------------------------------------------+

#property copyright "Copyright 2006, OKwh "

#property link ""

#define MAGICMA 200610011231

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

extern int whichmethod = 1; //1~4 種下單方式

extern double TakeProfit = 100;

extern double StopLoss = 20;

 承諾與聲明

兄弟財經是全球歷史最悠久,信譽最好的外匯返佣代理。多年來兄弟財經兢兢業業,穩定發展,獲得了全球各地投資者的青睞與信任。歷經十餘年的積澱,打造了我們在業内良好的品牌信譽。

本文所含内容及觀點僅為一般信息,並無任何意圖被視為買賣任何貨幣或差價合約的建議或請求。文中所含内容及觀點均可能在不被通知的情況下更改。本文並未考 慮任何特定用戶的特定投資目標、財務狀況和需求。任何引用歷史價格波動或價位水平的信息均基於我們的分析,並不表示或證明此類波動或價位水平有可能在未來 重新發生。本文所載信息之來源雖被認為可靠,但作者不保證它的準確性和完整性,同時作者也不對任何可能因參考本文内容及觀點而產生的任何直接或間接的損失承擔責任。

外匯和其他產品保證金交易存在高風險,不適合所有投資者。虧損可能超出您的賬戶註資。增大槓桿意味著增加風險。在決定交易外匯之前,您需仔細考慮您的財務目標、經驗水平和風險承受能力。文中所含任何意見、新聞、研究、分析、報價或其他信息等都僅 作與本文所含主題相關的一般類信息.

同時, 兄弟財經不提供任何投資、法律或稅務的建議。您需向合適的顧問徵詢所有關於投資、法律或稅務方面的事宜。