MT4 EA制作速成班――基础篇

# 什么是MT4?

我就当你了解什么是MT4了

MT4就是META. TRADER 4

# 什么是EA?

我也当你了解什么是EA了

EA 就是 Expert Adviser

EA 就是智能交易系统

智能教育系统就是:

-软件自己判断下订单

-软件自己判断提成利润

-软件自己判断砍仓止输

# 什么是速成班?

就是你在很短很快的时间内就可以学会如何编写EA

是的,快则8个学习小时

慢则24个学习小时

# 什么叫“易学难精”?

就是你很快的就上手,难在成为厉害的高手。

这需要时间慢慢的去研究编写。

久而久之你就可以是EA编写高手了。

05-25-2009 08:56 AM

yes810

第一课::了解EA的形式

* 以下就是EA的编写形式//

+------------------------------------------------------------------+

//| MT4-EA制作速成班.mq4 |

//| Copyright ?2007, MetaQuotes Software Corp. |

//| http://www.FXunion.com |

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

#property copyright "Copyright ?2007, MetaQuotes Software Corp."

#property link. "http://www.FXunion.com"

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

//| expert initialization function |

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

int init()

{

//----

//----

return(0);

}

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

//| expert deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| expert start function |

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

int start()

{

//----

//----

return(0);

}

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

* //+------------------------------------------------------------------+

//| MT4-EA制作速成班.mq4 |

//| Copyright ?2007, MetaQuotes Software Corp. |

//| http://www.FXunion.com |

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

这个是在上面的垃圾

写与不写都无所谓

我们就不用理他

* #property copyright "Copyright ?2007, MetaQuotes Software Corp."

#property link. "http://www.FXunion.com"

这个也是在上面的垃圾

写与不写都无所谓

我们也不用理他

* //+------------------------------------------------------------------+

//| expert initialization function |

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

int init()

{

//----

//以后可能有用到

//----

return(0);

}

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

//| expert deinitialization function |

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

int deinit()

{

//----

//以后可能有用到

//----

return(0);

}

这两个很少用到。高高手才会用

速成班的话,这个可以不用理他。

放在一边先,以后才学怎样用它。

* //+------------------------------------------------------------------+

//| expert start function |

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

int start()

{

//----

//主程式

//----

return(0);

}

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

这个就是EA开始操作的重要部分

以上的EA的编写形式我们改成如下:

* //+------------------------------------------------------------------+

//| MT4-EA制作速成班.mq4 |

//| Copyright 2007, MT4-EA制作速成班. |

//| http://www.FXunion.com |

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

#property copyright "Copyright 2007, MT4-EA制作速成班."

#property link. "http://www.FXunion.com"

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

//| expert initialization function |

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

int init()

{

//----

/以后可能有用到

//----

return(0);

}

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

//| expert deinitialization function |

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

int deinit()

{

//----

/以后可能有用到

//----

return(0);

}

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

//| expert start function |

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

int start()

{

//----

//主程式

//----

return(0);

}

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

* 什么是“.mq4”?

EA制作好了就save成.mq4的文件

这文件是可以修改的

* 什么是“.ex4”?

EA制作好了

按“编写”就会自动save成.ex4的文件

这文件是不可以被修改的

这文件是加密的

可以出售的文件。

* 有什么问题要问吗?

但是我告诉你

不要问太深的问题,我是不会的。

05-25-2009 08:59 AM

yes810

第二课:EA重要部分

* 回到EA重要部分

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

//| expert start function |

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

int start()

{

//----

//主程式

//----

return(0);

}

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

* 我们要知道EA是由上面往下读的

所以我们在编写方面要有逻辑思考

以下是速成班编写的形式

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

//| expert start function |

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

int start()

{

//----

MoneyManagement();

macd();

ma();

zhangchang();

buyme();

sellme();

xianshi();

//----

return(0);

}

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

void MoneyManagement() {

}

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

void macd() {

}

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

void ma() {

}

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

void zhangchang() {

}

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

void buyme() {

}

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

void sellme() {

}

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

void buyme() {

}

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

void xianshi() {

}

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

////WeTrade众汇官网/end

* // 这两划代表右边的不要读

也可以说是注解

注意:EA不会读中文符号。比如这个“”

这个就可以 ""

* 我们可以完整他

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

//| MT4-EA制作速成班.mq4 |

//| Copyright 2007, MT4-EA制作速成班. |

//| http://www.FXunion.com |

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

#property copyright "Copyright 2007, MT4-EA制作速成班."

#property link. "http://www.FXunion.com"

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

//| expert initialization function |

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

int init()

{

//----

//以后可能有用到

//----

return(0);

}

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

//| expert deinitialization function |

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

int deinit()

{

//----

//以后可能有用到

//----

return(0);

}

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

//| expert start function |

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

int start()

{

//----

//主程式

MoneyManagement();//资金管理

macd();//指标管理

ma();//指标管理

zhangchang();//战场管理

buyme();//买上

sellme();//买下

xianshi();//显示管理

//----

return(0);

}

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

void MoneyManagement() {

//子程式

//这边要写一些东西

}

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

void macd() {

//子程式

//这边要写一些东西

}

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

void ma() {

//子程式

//这边要写一些东西

}

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

void zhangchang() {

///子程式

//这边要写一些东西

}

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

void buyme() {

//子程式

//这边要写一些东西

}

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

void sellme() {

//子程式

//这边要写一些东西

}

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

void buyme() {

//子程式

//这边要写一些东西

}

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

void xianshi() {

//子程式

//这边要写一些东西

}

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

/////end

* 如果你在上面加这个xianshi2();

下面就加这个

//////////////////////////

void xianshi2() {

//这边要写一些东西

}

////////////////////////////

可以任意无限的加。。。

* 有什么问题要问吗?

但是我老实告诉你

不要问太深的问题,我是不会回答的。

05-25-2009 09:03 AM

yes810

第三课::加入指标

* //////////////////////////////

void ma()

{

ma1now = iMA(NULL,0,ma1,0WeTrade众汇官网,MODE_EMA,PRICE_CLOSE,0);

ma1now2 = iMA(NULL,0,ma1,0,MODE_EMA,PRICE_CLOSE,1);

ma2now = iMA(NULL,0,ma2,0,MODE_EMA,PRICE_CLOSE,0);

ma2now2 = iMA(NULL,0,ma2,0,MODE_EMA,PRICE_CLOSE,1);

ma1bnow = iMA(NULL,0,ma1,0,MODE_EMA,PRICE_OPEN,0);

ma2bnow = iMA(NULL,0,ma2,0,MODE_EMA,PRICE_OPEN,0);

}

////////////////////////

ma1now是代表的字

你可以写成什么都可以

PRICE_CLOSE是ma最新的参数

PRICE_OPEN是ma开始的参数

ma1now = iMA(NULL,0,ma1,0,MODE_EMA,PRICE_CLOSE,0);

这个整句是死的。

你只要copy&press就可以用了

ma1是ma的参数号码或bar

如果这样写法,他人不能更改参数

double ma1=1,ma2=2;

double ma1now,ma1now2,ma2now,ma2now2,ma1bnow,ma2bnow;

这样写法,他人可以更改参数

extern double ma1=1,ma2=2;

这个是要放在#property上面那边的

* 其它指标的写法

macd1now=iMACD(NULL,0,macd1,macd1*2,1,PRICE_CLOSE, MODE_MAIN,0);

zigzag1now=iCustom(NULL,0,"ZigZag",2,deviation,bac kstep,0,0);

Highest1now=High[iHighest(NULL,0,MODE_HIGH,Highest1,0)];

Lowest1now=Low[iLowest(NULL,0,MODE_LOW,Lowest1,0)];

iTrend1now=iCustom(NULL,0,"iTrend",2,0,0,iTrend1,0 ,iTrend1,0,0,1);

wpr1now = iWPR(Symbol(),0,wpr1,0);

指标写法是不用记住的

网上可以找到很多指标的写法

* 有了指标

我们可以更改我们的EA了

更改如下:

注意看看

刚刚的指标加在什么地方

什么位置

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

//| MT4-EA制作速成班.mq4 |

//| Copyright 2007, MT4-EA制作速成班. |

//| http://www.FXunion.com |

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

#property copyright "Copyright 2007, MT4-EA制作速成班."

#property link. "http://www.FXunion.com"

extern double ma1=1,ma2=2;

double ma1now,ma1now2,ma2now,ma2now2,ma1bnow,ma2bnow;

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

//| expert initialization function |

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

int init()

{

//----

//----

return(0);

}

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

//| expert deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| expert start function |

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

int start()

{

//----

MoneyManagement();//资金管理

macd();//指标管理

ma();//指标管理

zhangchang();//战场管理

buyme();//买上

sellme();//买下

xianshi();//显示管理

//----

return(0);

}

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

+void MoneyManagement() {

//这边要写一些东西

}

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

void macd() {

//这边要写一些东西

}

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

void ma()

{

ma1now = iMA(NULL,0,ma1,0,MODE_EMA,PRICE_CLOSE,0);

ma1now2 = iMA(NULL,0,ma10,0,MODE_EMA,PRICE_CLOSE,1);

ma2now = iMA(NULL,0,ma2,0,MODE_EMA,PRICE_CLOSE,0);

ma2now2 = iMA(NULL,0,ma2,0,MODE_EMA,PRICE_CLOSE,1);

ma1bnow = iMA(NULL,0,ma1,0,MODE_EMA,PRICE_OPEN,0);

ma2bnow = iMA(NULL,0,ma2,0,MODE_EMA,PRICE_OPEN,0);

}

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

void zhangchang() {

//这边要写一些东西

}

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

void buyme() {

//这边要写一些东西

}

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

void sellme() {

//这边要写一些东西

}

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

void buyme() {

//这边要写一些东西

}

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

void xianshi() {

//这边要写一些东西

}