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() {
//这边要写一些东西
}
