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;
1/4 1 2 3 4 下一頁 尾頁