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;

 承诺与声明

兄弟财经是全球历史最悠久,信誉最好的外汇返佣代理。多年来兄弟财经兢兢业业,稳定发展,获得了全球各地投资者的青睐与信任。历经十余年的积淀,打造了我们在业内良好的品牌信誉。

本文所含内容及观点仅为一般信息,并无任何意图被视为买卖任何货币或差价合约的建议或请求。文中所含内容及观点均可能在不被通知的情况下更改。本文并未考 虑任何特定用户的特定投资目标、财务状况和需求。任何引用历史价格波动或价位水平的信息均基于我们的分析,并不表示或证明此类波动或价位水平有可能在未来 重新发生。本文所载信息之来源虽被认为可靠,但作者不保证它的准确性和完整性,同时作者也不对任何可能因参考本文内容及观点而产生的任何直接或间接的损失承担责任。

外汇和其他产品保证金交易存在高风险,不适合所有投资者。亏损可能超出您的账户注资。增大杠杆意味着增加风险。在决定交易外汇之前,您需仔细考虑您的财务目标、经验水平和风险承受能力。文中所含任何意见、新闻、研究、分析、报价或其他信息等都仅 作与本文所含主题相关的一般类信息.

同时, 兄弟财经不提供任何投资、法律或税务的建议。您需向合适的顾问征询所有关于投资、法律或税务方面的事宜。