xm外汇ea智能交易系统怎么样

【国家】:塞浦路斯
【成立时间】:2009
【是否有中文客服】:有
【是否有中国办事处】:有
【许可机构】:FCA:705428 CYSEC:120/10 ASIC:443670
【电汇手续费】:无
【交易平台】:MT4 手机软件
【浮动点差】:浮动
【最小开户】:5$
【最小交易】:0.01
【最大交易】:无最大
【最大杠杆】:1:888
【存款方式】:银联、电汇、Skrill、Neteller、MONEYGRAM等
【取款方式】:银联,电汇
【交易品种】:欧元 / 英镑 / 日元 / 美元 / 贵金属/ 原油
【联系方式】:
推荐理由:FCA监管,XM外汇点差低至1.8,赠金高,入金方便,支持人民币入金和出金,出金24小时内到账,出入金无手续费。国内客户较多,在上海有办事处和客服,最近新推出外汇竞技场,每天都有很多不同的比赛。
开设一个XM对外账户并获得外汇返佣
1.通过开户链接打开xm官方网站,并完成开户:
2.如果已有富通返佣账户,直接登录富通后台提交账户,
3.如果没有富通网返佣账户,需要先注册一个富通返佣账户:
4.登录富通返佣后台,添加交易账户(MT4账户),等待富通网确认账号&
5.确认之后,可以查看到您的返佣金额,每一笔订单的返佣明细进行对账,佣金日更新,与官网同步.
完成以上所有步骤,等待每周收到返佣!
交易品种:外汇、贵金属、CFD&&
点差类型:浮动
最大杠杆:888倍 &
主要点差:欧美1.6-1.8点、黄金5.0点
最小头寸:0.01手
最低入金:5美元
EA交易:允许
剥头皮:允许
锁仓:允许,不需保证金
爆仓比例:20%
存款方式:银联 银行电汇
取款方式:银联、银行电汇
经纪商动态
400-640-8448
 08:00 - 23:00
沈阳富通网络科技有限公司
技术支持:后使用快捷导航没有帐号?
签到成功!您今天第{todayrank}个签到,签到排名竞争激烈,记得每天都来签到哦!已连续签到:{constant}天,累计签到:{days}天
MT4 EA编程速成班——基础篇
马上注册,结交更多好友,下载更多资源
才可以下载或查看,没有帐号?
# 什么是MT4?
我就当你了解什么是MT4了
MT4就是META. TRADER 4
# 什么是EA?
我也当你了解什么是EA了
EA 就是 Expert Adviser
智能教育系统就是:
-软件自己判断下订单
-软件自己判断提成利润
-软件自己判断砍仓止输
# 什么是速成班?
就是你在很短很快的时间内就可以学会如何编写EA
是的,快则8个学习小时
慢则24个学习小时
# 什么叫“易学难精”?
就是你很快的就上手,难在成为厉害的高手。
这需要时间慢慢的去研究编写。
久而久之你就可以是EA编写高手了。
第一课::了解EA的形式
* 以下就是EA的编写形式//
+------------------------------------------------------------------+
//| MT4-EA制作速成班.mq4 |
//| Copyright ?2007, MetaQuotes Software Corp. |
//+------------------------------------------------------------------+
#property copyright &Copyright ?2007, MetaQuotes Software Corp.&
#property link. &&
//+------------------------------------------------------------------+
//| 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. |
//+------------------------------------------------------------------+
这个是在上面的垃圾
写与不写都无所谓
我们就不用理他
* #property copyright &Copyright ?2007, MetaQuotes Software Corp.&
#property link. &&
这个也是在上面的垃圾
写与不写都无所谓
我们也不用理他
* //+------------------------------------------------------------------+
//| 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制作速成班. |
//+------------------------------------------------------------------+
#property copyright &Copyright 2007, MT4-EA制作速成班.&
#property link. &&
//+------------------------------------------------------------------+
//| 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的文件
这文件是不可以被修改的
这文件是加密的
可以出售的文件。
* 有什么问题要问吗?
但是我告诉你
不要问太深的问题,我是不会的。
第二课:EA重要部分
* 回到EA重要部分
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
return(0);
//+------------------------------------------------------------------+
* 我们要知道EA是由上面往下读的
所以我们在编写方面要有逻辑思考
以下是速成班编写的形式
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
MoneyManagement();
zhangchang();
xianshi();
return(0);
//+------------------------------------------------------------------+
void MoneyManagement() {
//+------------------------------------------------------------------+
void macd() {
//+------------------------------------------------------------------+
void ma() {
//+------------------------------------------------------------------+
void zhangchang() {
//+------------------------------------------------------------------+
void buyme() {
//+------------------------------------------------------------------+
void sellme() {
//+------------------------------------------------------------------+
void buyme() {
//+------------------------------------------------------------------+
void xianshi() {
//+------------------------------------------------------------------+
* // 这两划代表右边的不要读
也可以说是注解
注意:EA不会读中文符号。比如这个“”
这个就可以 &&
* 我们可以完整他
//+------------------------------------------------------------------+
//| MT4-EA制作速成班.mq4 |
//| Copyright 2007, MT4-EA制作速成班. |
//+------------------------------------------------------------------+
#property copyright &Copyright 2007, MT4-EA制作速成班.&
#property link. &&
//+------------------------------------------------------------------+
//| 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() {
//这边要写一些东西
//+------------------------------------------------------------------+
* 如果你在上面加这个xianshi2();
下面就加这个
//////////////////////////
void xianshi2() {
//这边要写一些东西
////////////////////////////
可以任意无限的加。。。
* 有什么问题要问吗?
但是我老实告诉你
不要问太深的问题,我是不会回答的。
第三课::加入指标
* //////////////////////////////
ma1now = iMA(NULL,0,ma1,0,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,ma2
这样写法,他人可以更改参数
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制作速成班. |
//+------------------------------------------------------------------+
#property copyright &Copyright 2007, MT4-EA制作速成班.&
#property link. &&
extern double ma1=1,ma2=2;
double ma1now,ma1now2,ma2now,ma2now2,ma1bnow,ma2
//+------------------------------------------------------------------+
//| 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() {
//这边要写一些东西
//+------------------------------------------------------------------+
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() {
//这边要写一些东西
//+------------------------------------------------------------------+
* 注意这个{},不要糊涂的删除了也不知道
注意这个可以写成这样
double ma1=1;
double ma2=2;
double ma1
double ma1now2;
double ma2
double ma2now2;
double ma1
double ma2
* extern double ma1=1;
extern double ma2=2;
这样写可以显示在EA开始的修改处
* 有什么问题要问吗?
但是我老实告诉你
不要问太深的问题
可能我也不会回答的。
第四课-资金管理
* 这个将放在#property上面那边
////////////////////////
extern string _资金管理_ =&任选一个&;
extern bool zijiguanli1 =//false true、、
extern bool zijiguanli2=//false true、、
extern bool zijiguanli3=//false true、、
///////////////////////////////////
false =不要用
我提供了三个资金管理作为参考
你可以自己增加自己喜欢的资金管理方案
* /////////////////////////////////////
void MoneyManagement() {
lotstart=(AccountBalance()*lotab/10000);
if(cheng==0){cheng=1;}
CurrentBasket=AccountEquity()-AccountBalance();
/////////////////////////////////////////////////////////////////
if(zijiguanli1){ LotMM =}
/////////////////////////////////////////////////////////////////
if(zijiguanli2){
if(CurrentBasket&0 ) {LotMM=NormalizeDouble(lots*(OrdersTotal()*cheng)+ lotstart,2); }
if(CurrentBasket==0 ) {LotMM=NormalizeDouble(LotMM*0,2); }
/////////////////////////////////////////////////////////////////
if(zijiguanli3){
if(s+b==0){aa=1;}
if(s+b==1){aa=3;}
if(s+b==2){aa=7;}
if(s+b==3){aa=11;}
if(s+b==4){aa=20;}
if(s+b==5){aa=31;}
if(s+b==6){aa=42;}
if(s+b==7){aa=54;}
if(s+b==8){aa=66;}
if(s+b==9){aa=76;}
if(s+b&=10){aa=66;}
if(CurrentBasket&0 ) {LotMM=NormalizeDouble(lotstart*aa,2); }
if(CurrentBasket==0 ) {LotMM=NormalizeDouble(LotMM*0,2); }
/////////////////////////////////////////////////////////////////
if(LotMM&lots){LotMM=0.01;}
if(LotMM&LotsMax){LotMM=LotsM}
}//end zijiguanli
//////////////////////////////////////////
注意:这个资金管理加了很多新的词句
所以我们要加上去#property上面那边
不然会出错
* 新的词句:
extern double cheng=1;
double aa=0;
int s=0,b=0;
intdouble CurrentBasket=0;
double LotMM=0;
double lotstart=0;
double LotsMax=100;
extern double lotab=0.1;
double lots=0;
double 是有小数点的
int 是没有小数点的
很容易用,比如:
if(LotMM&lots){LotMM=0.01;}
意思就是:
如果LotMM小过lots,LotMM就等于0.01。
if(LotMM&LotsMax){LotMM=LotsM}
意思就是:
如果LotMM大过LotsMax,LotMM就等于LotsMax。
不会的话,不要紧
copy&press就可以用了
把void MoneyManagement() { }
copy&press到我们EA模板去
结果如下://
* +------------------------------------------------------------------+
//| MT4-EA制作速成班.mq4 |
//| Copyright 2007, MT4-EA制作速成班. |
//+------------------------------------------------------------------+
#property copyright &Copyright 2007, MT4-EA制作速成班.&
#property link. &&
extern double ma1=1,ma2=2;
double ma1now,ma1now2,ma2now,ma2now2,ma1bnow,ma2
////////////////////////
extern string _资金管理_ =&任选一个&;
extern bool zijiguanli1=//false true、、
extern bool zijiguanli2=//false true、、
extern bool zijiguanli3=//false true、、
///////////////////////////////////
extern double cheng=1;
double aa=0;
int s=0,b=0;
int double CurrentBasket=0;
double LotMM=0;
double lotstart=0;
double LotsMax=100;
extern double lotab=0.1;
double lots=0;
//+------------------------------------------------------------------+
//| 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() {
lotstart=(AccountBalance()*lotab/10000);
if(cheng==0){cheng=1;}
CurrentBasket=AccountEquity()-AccountBalance();
/////////////////////////////////////////////////////////////////
if(zijiguanli1){ LotMM =}
/////////////////////////////////////////////////////////////////
if(zijiguanli2){
if(CurrentBasket&0 ) {LotMM=NormalizeDouble(lots*(OrdersTotal()*cheng)+ lotstart,2); }
if(CurrentBasket==0 ) {LotMM=NormalizeDouble(LotMM*0,2); }
/////////////////////////////////////////////////////////////////
if(zijiguanli3){
if(s+b==0){aa=1;}
if(s+b==1){aa=3;}
if(s+b==2){aa=7;}
if(s+b==3){aa=11;}
if(s+b==4){aa=20;}
if(s+b==5){aa=31;}
if(s+b==6){aa=42;}
if(s+b==7){aa=54;}
if(s+b==8){aa=66;}
if(s+b==9){aa=76;}
if(s+b&=10){aa=66;}
if(CurrentBasket&0 ) {LotMM=NormalizeDouble(lotstart*aa,2); }
if(CurrentBasket==0 ) {LotMM=NormalizeDouble(LotMM*0,2); }
/////////////////////////////////////////////////////////////////
if(LotMM&lots){LotMM=}
if(LotMM&LotsMax){LotMM=LotsM}
}//end zijiguanli
//+------------------------------------------------------------------+
void macd() {
//这边要写一些东西
//+------------------------------------------------------------------+
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() {
//这边要写一些东西
//+------------------------------------------------------------------+
* 资金管理有三个方案:
资金管理1=平注
资金管理2=1,2,3,4,5...
可以乘,如果你把cheng改成2或3或0.2
资金管理3是固定式,1,3,7,11.。。
* 不明白?别急,用了就明白。
有什么问题要问吗?
但是我老实告诉你
我是自学成功的,没有上过什么EA课程
不要问太深的问题
可能我也不会回答的。
第五课:策略:战场
* 这里是整个EA最重要的地方
这里策略变化无穷
高深莫测就是这里作怪
* 在这里你要想:。。。
你的EA要怎样下注
什么时候买上?
什么时候买下?
怎样买上?
怎样买下?
有买上又买下?
什么时候离场?
条件满足是很重要的
* 在这里我给个简单的策略
-ma1黄金交叉ma2,EA买上
-ma1死亡交叉ma2,EA买下
-有赚25点就出场
-如果亏的时候亏50点就出场
* 是这样编写的:
ma1now&ma2now
这样一句是不够条件的
ma1now&ma2now
&& ma1now2&ma2now2
这个就是黄金交叉的编写法
ma1now&ma2now
&& ma1now2&ma2now2
这个就是死亡交叉的编写法
* 但是条件还是不够的
ma1now&ma2now
&& ma1now2&ma2now2
s+b==0 意思就是 买上+买下等于没有
没有下注,如果遇到条件符合就可以下注的意思
&& 的意思就是“再加”什么什么的条件
那么整句是这样编写
if(什么什么){就什么什么}
就是用这个
if(ma1now&ma2now
&& ma1now2&ma2now2
){buyme();}
if(ma1now&ma2now
&& ma1now2&ma2now2
){sellme();}
* 现在我们就把这两句copy&press到战场去
现在又多了两个新的东西
buyme()和sellme()
你就copy&press buyme()和sellme()的编写法就可以了。
* 结果如下:
//+------------------------------------------------------------------+
//| MT4-EA制作速成班.mq4 |
//| Copyright 2007, MT4-EA制作速成班. |
//+------------------------------------------------------------------+
#property copyright &Copyright 2007, MT4-EA制作速成班.&
#property link. &&
extern double ma1=1,ma2=2;
double ma1now,ma1now2,ma2now,ma2now2,ma1bnow,ma2
////////////////////////
extern string _资金管理_ =&任选一个&;
extern bool zijiguanli1=//false true、、
extern bool zijiguanli2=//false true、、
extern bool zijiguanli3=//false true、、
///////////////////////////////////
extern double cheng=1;
double aa=0;
int s=0,b=0;
intdouble CurrentBasket=0;
double LotMM=0;
double lotstart=0;
double LotsMax=100;
extern double lotab=0.1;
double lots=0;
double TP=0,TPP=0,SL=0,SLL=0;
//+------------------------------------------------------------------+
//| 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() {
lotstart=(AccountBalance()*lotab/10000);
if(cheng==0){cheng=1;}
CurrentBasket=AccountEquity()-AccountBalance();
/////////////////////////////////////////////////////////////////
if(zijiguanli1){ LotMM =}
/////////////////////////////////////////////////////////////////
if(zijiguanli2){
if(CurrentBasket&0 ) {LotMM=NormalizeDouble(lots*(OrdersTotal()*cheng)+ lotstart,2); }
if(CurrentBasket==0 ) {LotMM=NormalizeDouble(LotMM*0,2); }
/////////////////////////////////////////////////////////////////
if(zijiguanli3){
if(s+b==0){aa=1;}
if(s+b==1){aa=3;}
if(s+b==2){aa=7;}
if(s+b==3){aa=11;}
if(s+b==4){aa=20;}
if(s+b==5){aa=31;}
if(s+b==6){aa=42;}
if(s+b==7){aa=54;}
if(s+b==8){aa=66;}
if(s+b==9){aa=76;}
if(s+b&=10){aa=66;}
if(CurrentBasket&0 ) {LotMM=NormalizeDouble(lotstart*aa,2); }
if(CurrentBasket==0 ) {LotMM=NormalizeDouble(LotMM*0,2); }
/////////////////////////////////////////////////////////////////
if(LotMM&lots){LotMM=}
if(LotMM&LotsMax){LotMM=LotsM}
}//end zijiguanli
//+------------------------------------------------------------------+
void macd() {
//这边要写一些东西
//+------------------------------------------------------------------+
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() {
//这边要写一些东西
if(ma1now&ma2now
&& ma1now2&ma2now2
){buyme();}
if(ma1now&ma2now
&& ma1now2&ma2now2
){sellme();}
//+------------------------------------------------------------------+
void buyme(){
if (TP==0) { TPP=0; } if(TP&0) { TPP=Ask+TP*P }
if (SL==0) { SLL=0; } if(SL&0) { SLL=Ask-SL*P }
OrderSend(Symbol(),OP_BUY,LotMM,Ask,slip,SLL,TPP,& M&+Period()+&&,0,0,Violet);
return(0); }
//+------------------------------------------------------------------+
void sellme(){
if (TP==0) { TPP=0; } if(TP&0) { TPP=Bid-(TP*Point); }
if (SL==0) { SLL=0; } if(SL&0) { SLL=Bid+(SL*Point); }
ticket=OrderSend(Symbol(),OP_SELL,LotMM,Bid,2,SLL, TPP,&M&+Period()+&&,0,0,GreenYellow);
return(0); }
//+------------------------------------------------------------------+
void buyme() {
//这边要写一些东西
//+------------------------------------------------------------------
+void xianshi() {
//这边要写一些东西
//+------------------------------------------------------------------+/////end
* 在buyme()和sellme()
我们又发现新的词句
TP,TPP,SL,SLL
我们必须在#property上面加上他们
不然会出错
我已经加上去了上面的结果了
你注意到了吗?
* ok,这个EA可以用了
现在你copy&press 去你的METAEDITOR
save as 一个新的名字就可以了
* 试一试,用一用
告诉你,它肯定是“垃圾”EA
因为是亏钱的EA
哈哈和。。。
* 有什么问题要问吗?
但是我老实告诉你
我是自学成功的,没有上过什么EA课程
不要问太深奥或无聊的问题
我可能不知道怎样答你的问题。
哈哈和。。。
* 你会发现问题??。。。
然后告诉我上面问题。。。
这就是你今天的功课
哈哈和。。。
第六课-解决出错问题
* 如果你有做功课
你会知道以上的EA还是不能用
因为出错了
出错是常事
没有什么了不起
没有什么大事
* 当你按在METAEDITOR按“编写”时
最下方会告诉你出错了
按一按下方的出错
他会告诉你在那里出错了
第一:intdouble CurrentBasket=0;
删掉 int 就可以了
//int 是表示要“整数”比如:1,2,3,4...
//double 表示要有小数点,比如:1.1,7.987.56.897.....
* 之后你在按一下“编写”
第二:ma1now2 = iMA(NULL,0,ma10,0,MODE_EMA,PRICE_CLOSE,1);
ma10,意思就是没有ma10这个新词句
其实我们没有用到ma10
是编写错误
不是ma10,是多了个0
删掉 0 就可以了
* 之后你在按一下“编写”
第三:OrderSend(Symbol(),OP_BUY,LotMM,Ask,slip,SLL,TP P,&M&+Period()+&&,0,0,Violet);
问题是slip
应该是新的词句
slip 是什么?
听他们讲是滑点?管他
因为我们不可以删掉slip
所以在上方加上新的词句吧!
int slip=6;
* 再来。。。
ticket=OrderSend(Symbol(),OP_SELL,LotMM,Bid,2,SLL, TPP,&M&+Period()+&&,0,0,GreenYellow);
我们没有用到ticket
所以可以删掉 ticket= 就可以了
* 再来。。。他告诉你多了这个
void buyme() {
//这边要写一些东西
因为已经有了的,哈哈和。。。
是糊涂多了一个
删掉 整句多余的buyme() 就可以了
* 再来。。。
0错误 0警告
哈哈和。。。
恭喜你已经学会编写EA了
* 试一试用一用?
效果怎样?
是不是有一点怪怪?
又出错了?
又是功课的时间
告诉我又发生什么事情。。。
* 编写EA就是解决问题
当你是解决问题高手
你就是编写EA高手
哈哈和。。。
第七课-填写盈亏
上一回我们讲到
-有赚25点就出场
-如果亏的时候亏50点就出场
这个还没有加上去
编写方法就是
Take Profit=25
Stop Loss=50
我把他们简写成
你想到了什么吗?
对,这字眼很熟吧!
double TP=0,TPP=0,SL=0,SLL=0;
double TP=25,TPP=0,SL=50,SLL=0;
你发现吗?
不过下注方面还是有问题!
其实是这EA没有判断
速成班不必学会怎样写
你只要copy&prss下面的子程式
放进去就可以了
我把它称为检查
//////////////////////////////////////////
void jiancha()
for (int cnt=0; cnt&=OrdersTotal(); cnt++)
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol() )
mode=OrderType();LastOrderType=OrderType();
if (OrderType() == OP_SELL){ s++; LastPricesell=OrderOpenPrice();}
if (OrderType() == OP_BUY ){ b++; LastPricebuy=OrderOpenPrice();}
LastPrice=OrderOpenPrice();
if (OrderType()==OP_SELL) {OpenSells++;}
if (OrderType()==OP_SELLSTOP) {OpenSellStops++;}
if (OrderType()==OP_BUY) {OpenBuys++;}
if (OrderType()==OP_BUYSTOP) {OpenBuyStops++;}
}//end jiancha
//////////////////////////////////////////////////
要记得:在start那边也加入
jiancha();
这样就可以了。
当我们按“编写”
因为有了新的词句
我们没有加在#property上面那边
新的词句:
LastOrderType
LastPricesell
LastPricebuy
OpenSellStops
OpenBuyStops
我们更正如下:
double mode=0;
double LastOrderT
double LastP
double LastP
double LastP
double OpenS
double OpenSellS
double OpenB
double OpenBuyS
按“编写”。。。
0错误 0警告
按“终端”试一试效果怎样
还是buy sell buy sell buy sell
你知道什么事情发生了吗?
跟你讲一个逻辑
什么是主程式
就是主要的程式
什么是子程式
就是不是主要的程式
了解了这些
现在一个问题,这些子程式
MoneyManagement();//资金管理
macd();//指标管理
ma();//指标管理
zhangchang();//战场管理
buyme();//买上
sellme();//买下
xianshi();//显示管理
那些是不需要一直用的就不可以在主程式这里
buyme();//买上
sellme();//买下
是有时用到,有时没有用
所以我们删掉它
现在这个EA可以正常的操作了
其编写程式如下:
注意颜色部分的位置
//+------------------------------------------------------------------+
//| MT4-EA制作速成班.mq4 |
//| Copyright 2007, MT4-EA制作速成班. |
//+------------------------------------------------------------------+
#property copyright &Copyright 2007, MT4-EA制作速成班.&
#property link. &&
extern double ma1=1,ma2=2;
double ma1now,ma1now2,ma2now,ma2now2,ma1bnow,ma2
////////////////////////
extern string _资金管理_ =&任选一个&;
extern bool zijiguanli1=//false true、、
extern bool zijiguanli2=//false true、、
extern bool zijiguanli3=//false true、、
///////////////////////////////////
extern double cheng=1;
double aa=0;
int s=0,b=0;
double CurrentBasket=0;
double LotMM=0;
double lotstart=0;
double LotsMax=100;
extern double lotab=0.1;
double lots=0;
double TP=25,TPP=0,SL=50,SLL=0;
int slip=6;
///////////////////////////////////////
double mode=0;
double LastOrderT
double LastP
double LastP
double LastP
double OpenS
double OpenSellS
double OpenB
double OpenBuyS
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
return(0);
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
return(0);
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
jiancha();//检查判断
MoneyManagement();//资金管理
macd();//指标管理
ma();//指标管理
zhangchang();//战场管理
xianshi();//显示管理
return(0);
//+------------------------------------------------------------------+
void jiancha()
for (int cnt=0; cnt&=OrdersTotal(); cnt++)
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol() )
mode=OrderType();LastOrderType=OrderType();
if (OrderType() == OP_SELL){ s++; LastPricesell=OrderOpenPrice();}
if (OrderType() == OP_BUY ){ b++; LastPricebuy=OrderOpenPrice();}
LastPrice=OrderOpenPrice();
if (OrderType()==OP_SELL) {OpenSells++;}
if (OrderType()==OP_SELLSTOP) {OpenSellStops++;}
if (OrderType()==OP_BUY) {OpenBuys++;}
if (OrderType()==OP_BUYSTOP) {OpenBuyStops++;}
}//end jiancha
//+------------------------------------------------------------------+
void MoneyManagement() {
lotstart=(AccountBalance()*lotab/10000);
if(cheng==0){cheng=1;}
CurrentBasket=AccountEquity()-AccountBalance();
/////////////////////////////////////////////////////////////////
if(zijiguanli1){ LotMM =}
/////////////////////////////////////////////////////////////////
if(zijiguanli2){
if(CurrentBasket&0 ) {LotMM=NormalizeDouble(lots*(OrdersTotal()*cheng)+ lotstart,2); }
if(CurrentBasket==0 ) {LotMM=NormalizeDouble(LotMM*0,2); }
/////////////////////////////////////////////////////////////////
if(zijiguanli3){
if(s+b==0){aa=1;}
if(s+b==1){aa=3;}
if(s+b==2){aa=7;}
if(s+b==3){aa=11;}
if(s+b==4){aa=20;}
if(s+b==5){aa=31;}
if(s+b==6){aa=42;}
if(s+b==7){aa=54;}
if(s+b==8){aa=66;}
if(s+b==9){aa=76;}
if(s+b&=10){aa=66;}
if(CurrentBasket&0 ) {LotMM=NormalizeDouble(lotstart*aa,2); }
if(CurrentBasket==0 ) {LotMM=NormalizeDouble(LotMM*0,2); }
/////////////////////////////////////////////////////////////////
if(LotMM&lots){LotMM=}
if(LotMM&LotsMax){LotMM=LotsM}
}//end zijiguanli
//+------------------------------------------------------------------+
void macd() {
//这边要写一些东西
//+------------------------------------------------------------------+
ma1now = iMA(NULL,0,ma1,0,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);
//+------------------------------------------------------------------+
void zhangchang() {
//这边要写一些东西
if(ma1now&ma2now
&& ma1now2&ma2now2
){buyme();}
if(ma1now&ma2now
&& ma1now2&ma2now2
){sellme();}
//+------------------------------------------------------------------+
void buyme(){
if (TP==0) { TPP=0; } if(TP&0) { TPP=Ask+TP*P }
if (SL==0) { SLL=0; } if(SL&0) { SLL=Ask-SL*P }
OrderSend(Symbol(),OP_BUY,LotMM,Ask,slip,SLL,TPP,& M&+Period()+&&,0,0,Violet);
return(0); }
//+------------------------------------------------------------------+
void sellme(){
if (TP==0) { TPP=0; } if(TP&0) { TPP=Bid-(TP*Point); }
if (SL==0) { SLL=0; } if(SL&0) { SLL=Bid+(SL*Point); }
OrderSend(Symbol(),OP_SELL,LotMM,Bid,2,SLL,TPP,&M& +Period()+&&,0,0,GreenYellow);
return(0); }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void xianshi() {
//这边要写一些东西
//+------------------------------------------------------------------+
///////////////////////////////end
恭喜!恭喜,这EA可以正常操作了
有什么问题要问吗?
但是我老实告诉你
我是自学成功的
没有上过什么EA课程
不要问太深奥或无聊的问题
我可能不知道怎样答你的问题
其实也不用问什么
自己想出答案会更好更刻骨铭心
哈哈和。。。
第八课-移动止赢
移动止赢就是到口的肉就不要吐出去了
哈哈和。。。
这样形容你明白吗?
其实也不是这个意思
是赢到尽头的意思
速成班不必学会怎样写Traingstop
copy&Press就可以了
子程式如下:
///////////////////////
void TrailingStop()
for(cnt=OrdersTotal();cnt&=0;cnt--)
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() )//&& OrderMagicNumber()==MAGICMA)
if (OrderType()==OP_SELL)
if(TrailingStop&0)
if((OrderOpenPrice()-Ask)&(Point*TrailingStop))
if((OrderStopLoss()&(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Poi nt*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
if (OrderType()==OP_BUY)
if(TrailingStop&0)
if(Bid-OrderOpenPrice()&Point*TrailingStop)
if(OrderStopLoss()&Bid-Point*TrailingStop)
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}//end TrailingStop
////////////////////////////////////
这TrailingStop是可以一直用的
所以我们要加在start那边加
TrailingStop();
发现新的词句
TrailingStop
我们更正如下:
double TrailingStop=0;
按“编写”
0错误 0警告
厉害,哈哈和。。。
把double TrailingStop=0;
0改成10,就可以操作了
改成这样也可以
extern double TrailingStop=10;
自己试一试看看效果如何?
怎样?容易吗?
哈哈和。。。
第九课-显示画面
显示的子程式如下
//////////////////////////////////////////////
void xianshi()
string name_8 = &xianshi1&;
ObjectDelete(name_8);
ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0);
ObjectSetText(name_8, &伺服器时间::&+TimeToStr(CurTime( ))+&&, 13, &Arial&, White);
ObjectSet(name_8, OBJPROP_CORNER, 0);
ObjectSet(name_8, OBJPROP_XDISTANCE, 15);
ObjectSet(name_8, OBJPROP_YDISTANCE, 15);
text=&EA制作速成班&;
name_8 = &xianshi2&;
ObjectDelete(name_8);
ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0);
ObjectSetText(name_8, &&+text+&&, 15, &Arial&, Yellow);
ObjectSet(name_8, OBJPROP_CORNER, 1);
ObjectSet(name_8, OBJPROP_XDISTANCE, 15);
ObjectSet(name_8, OBJPROP_YDISTANCE, 5);
name_8 = &Lableyeddrice1&;
ObjectDelete(name_8);
ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0);
ObjectSetText(name_8, &M&+Period()+& 货币 &+Symbol()+&&, 10, &Arial&, Silver);
ObjectSet(name_8, OBJPROP_CORNER, 1);
ObjectSet(name_8, OBJPROP_XDISTANCE, 130);
ObjectSet(name_8, OBJPROP_YDISTANCE, 32);
//////这个显示上方
name_8 = &LableCurPrice2&;
ObjectDelete(name_8);
ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0);
ObjectSetText(name_8,&&+DoubleToStr(Ask, Digits)+&::买上&, 15, &Arial&, Lime);
ObjectSet(name_8, OBJPROP_CORNER, 1);
ObjectSet(name_8, OBJPROP_XDISTANCE, 15);
ObjectSet(name_8, OBJPROP_YDISTANCE, 30);
//////这个显示下方
name_8 = &Lab345rPrice3&;
ObjectDelete(name_8);
ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0);
ObjectSetText(name_8,&&+DoubleToStr(Bid, Digits)+&::卖下&, 15, &Arial&, Lime);
ObjectSet(name_8, OBJPROP_CORNER, 1);
ObjectSet(name_8, OBJPROP_XDISTANCE, 15);
ObjectSet(name_8, OBJPROP_YDISTANCE, 50);
name_8 = &Acc87lance&;
ObjectDelete(name_8);
ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0);
ObjectSetText(name_8,&&+DoubleToStr( AccountBalance(), 2)+&::账面资金&, 13, &Arial&, Lime);
ObjectSet(name_8, OBJPROP_CORNER, 1);
ObjectSet(name_8, OBJPROP_XDISTANCE, 15);
ObjectSet(name_8, OBJPROP_YDISTANCE, 70);
name_8 = &LableC5rice6&;
ObjectDelete(name_8);
ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0);
ObjectSetText(name_8,&&+DoubleToStr( AccountEquity(), 2)+&::净值资金&, 13, &Arial&, Lime);
ObjectSet(name_8, OBJPROP_CORNER, 1);
ObjectSet(name_8, OBJPROP_XDISTANCE, 15);
ObjectSet(name_8, OBJPROP_YDISTANCE, 90);
name_8 = &Labl456rice6&;
ObjectDelete(name_8);
ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0);
ObjectSetText(name_8,&&+DoubleToStr( AccountMargin(), 2)+&::保证资金&, 13, &Arial&, Lime);
ObjectSet(name_8, OBJPROP_CORNER, 1);
ObjectSet(name_8, OBJPROP_XDISTANCE, 15);
ObjectSet(name_8, OBJPROP_YDISTANCE, 110);
name_8 = &Labl4hcjce6&;
ObjectDelete(name_8);
ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0);
ObjectSetText(name_8,&&+DoubleToStr( AccountFreeMargin(), 2)+&::可用资金&, 13, &Arial&, Lime);
ObjectSet(name_8, OBJPROP_CORNER, 1);
ObjectSet(name_8, OBJPROP_XDISTANCE, 15);
ObjectSet(name_8, OBJPROP_YDISTANCE, 130);
name_8 = &Accvf7lance&;
ObjectDelete(name_8);
ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0);
ObjectSetText(name_8,&&+DoubleToStr( AccountProfit(), 2)+&::账面盈亏&, 13, &Arial&, Lime);
ObjectSet(name_8, OBJPROP_CORNER, 1);
ObjectSet(name_8, OBJPROP_XDISTANCE, 15);
ObjectSet(name_8, OBJPROP_YDISTANCE, 150);
//我们可以无限的加
////////////////////////////////////////////////////
你应该会用了
这显示有什么了不起吗?
有什么作用吗?
用你的脚想一想你应该会领悟的
哈哈和。。。
第十课-解决问题2
每一个程式的开始就是一个问题
没有问题就是有问题
有问题就有答案
没有答案就不是问题
哈哈和。。。
速成班基础篇教程到这里就结束了
结束就是新的开始
开始更上一层楼
其它基础的东东
你可以在Metaeditor的右边找到
所以我也不必重复
我们要快速的学习“策略篇”
因为一个成败的EA取决于策略
什么是策略?
策略就是战略
什么是战略?
战略就是你怎样把EA弄到直线上升
而不是楼梯下降
如果你要学习这一篇
可以,你必须交功课
在上面EA的基础上
请加上以下指标
如果你做不出来
你的基础都有问题
怎样更上一层楼呢!
哈哈和。。。
第十一课::偷师
* EA速成班的学员是不必学会如何编写头痛的程式
不过这一招一定要会“偷师”
* 偷师就是“移花接木”
偷师就是“借花献佛”
* 怎样偷师?
就是copy&press那些公开的EA源码
以下是牛版主公开的源码
[原创]MT4阻力支撑源码公布
本指标为CDP公式在MT4上的实现,使用MT4的Expert调用方式,代码如下:
==================================================
//+------------------------------------------------------------------+
//| CDP.mq4 |
//| Copyright ?FXCorp. |
//+------------------------------------------------------------------+
#property copyright &Copyright, 520FX Corp.&
#property link. &&
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
double cdp,H,L,C,Hn,Ln;
double PT,AH,NH,AL,NL;
H=iMA(NULL,0,1,0,MODE_SMA,PRICE_HIGH,1);
L=iMA(NULL,0,1,0,MODE_SMA,PRICE_LOW,1);
C=iMA(NULL,0,1,0,MODE_SMA,PRICE_CLOSE,1);
Hn=iMA(NULL,0,1,0,MODE_SMA,PRICE_HIGH,2);
Ln=iMA(NULL,0,1,0,MODE_SMA,PRICE_LOW,2);
cdp=(H+L+2*C)/4;
AH=cdp+PT;
NH=cdp*2-L;
AL=cdp-PT;
NL=cdp*2-H;
Comment(&强支撑:&,AL,&弱支撑:&,NL,&弱阻力&,NH,&强阻力&,AH);
ObjectDelete(&水平线&);
ObjectDelete(&水平线1&);
ObjectDelete(&水平线2&);
ObjectDelete(&水平线3&);
ObjectCreate(&水平线&,OBJ_HLINE,0,D' 10:30',AL);
ObjectCreate(&水平线1&,OBJ_HLINE,0,D' 10:30',NL);
ObjectCreate(&水平线2&,OBJ_HLINE,0,D' 10:30',NH);
ObjectCreate(&水平线3&,OBJ_HLINE,0,D' 10:30',AH);
return(0);
//+------------------------------------------------------------------+
*  比如我们也不知道是什么东东
什么水平线?
* 第一步要做的就是把它当着是一个“子程式”
这样想你应该知道怎样加入你的EA里去
* 首先在“主程式”加入
水平线(){
//这里加入程式
水平线(){
double cdp,H,L,C,Hn,Ln;
double PT,AH,NH,AL,NL;
H=iMA(NULL,0,1,0,MODE_SMA,PRICE_HIGH,1);
L=iMA(NULL,0,1,0,MODE_SMA,PRICE_LOW,1);
C=iMA(NULL,0,1,0,MODE_SMA,PRICE_CLOSE,1);
Hn=iMA(NULL,0,1,0,MODE_SMA,PRICE_HIGH,2);
Ln=iMA(NULL,0,1,0,MODE_SMA,PRICE_LOW,2);
cdp=(H+L+2*C)/4;
AH=cdp+PT;
NH=cdp*2-L;
AL=cdp-PT;
NL=cdp*2-H;
Comment(&强支撑:&,AL,&弱支撑:&,NL,&弱阻力&,NH,&强阻力&,AH);
ObjectDelete(&水平线&);
ObjectDelete(&水平线1&);
ObjectDelete(&水平线2&);
ObjectDelete(&水平线3&);
ObjectCreate(&水平线&,OBJ_HLINE,0,D' 10:30',AL);
ObjectCreate(&水平线1&,OBJ_HLINE,0,D' 10:30',NL);
ObjectCreate(&水平线2&,OBJ_HLINE,0,D' 10:30',NH);
ObjectCreate(&水平线3&,OBJ_HLINE,0,D' 10:30',AH);
return(0);
* 这样就完成“偷师”的方案。
* 希望牛版主不介意,把这个当教材
哈哈和。。。
第拾贰课:偷师2
* 看看这个EA,学习学习
* /* 尚未通过检测
//+------------------------------------------------------------------+
//| WYD_AE_H1.mq4 |
//| Copyright 2008, Xilin Lu ( Zhejiang Lanxi ) |
//+------------------------------------------------------------------+
================================================== =========================
功能简介: 本智能的中文名字:开门见喜。
工作原理:本智能交易以一小线的开盘价和收盘价为触发器。
在每H1线形成的过程中,开盘3分钟内执行。
当 Minute()&=3 时:
第一步,首先检查是否未平仓的单子,若有则平仓。
第二步,开新单,开仓前检查资金是否足够。不够时不能下单。
注意事项:虽然本智能对图表的运行时间没有要求,但它只在( Minute()&0 && Minute()&=3 )
时段才有可能下单,这样做不仅能保证是H1的开盘价送单,而且可大大节约运算时间。
================================================== =================== + */
#property copyright &Copyright 2008, Xilin Lu ( Zhejiang Lanxi )&
#property link. &&
//+------------------------------------------------------------------+
//| 交易变量。
//+------------------------------------------------------------------+
extern double nLotsNumber = 0.1; // 每次交易手数
extern double nMaargin = 0.3; // 最大保证金使用比率
extern double nGainPoint = 20; // 止赢点数
extern double nLossPoint = 50; // 止损点数
//+------------------------------------------------------------------+
//| 全局变量。
//+------------------------------------------------------------------+
int nAllowSend=0; // 是否允许下单变量
//+------------------------------------------------------------------+
int start() {
double YyBaoZhenJing,KyBaoZhenJing,XyBaoZhenJ
int cnt,total,nTradingMode,i;
//--- 判断K线开盘时间,以减少运行次数。 ------------------
if( Minute() ==0 ) { return(0); } // 正点时间任何时间段均不运行。
if( Minute()&3 ) { nAllowSend=0; return(0); } // 从此行起可以编写您认为有价值的交易时间,我们现在是开盘3分钟内。
//-------------------------------------------------------------
//--- 判断是否已下单。 ----------------------------------------
if( nAllowSend==1 ) { return(0); } // 本次循环已下单,不能重复下单。 它在Minute()&=3时重新置为可下单
//-------------------------------------------------------------
//-- 检查开仓信息于,若有则平仓 -------------------------------
total=OrdersTotal();
if( total != 0 )
for(cnt=0;cnt&cnt++)
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()!=Symbol())
if(OrderType()==OP_BUY)
OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
if(OrderType()==OP_SELL)
OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
//-------------------------------------------------------------
//--- 如果开仓保证金超过上限,则返还不交易。 ------------------
KyBaoZhenJing = AccountFreeMargin();
YyBaoZhenJing = AccountMargin();
if( YyBaoZhenJing / (YyBaoZhenJing + KyBaoZhenJing) &= nMaxMargin ) { return(0); }
//-------------------------------------------------------------
//--- 重新评估开仓保证金,如果开仓保证金超过上限,则返还不交易。 ------
XyBaoZhenJing = MarketInfo( Symbol(), MODE_MARGINREQUIRED); // 一个标准手需保证金金额。
XyBaoZhenJing = XyBaoZhenJing * nLotsN // 下单需用的保证金
if( (YyBaoZhenJing+XyBaoZhenJing) / (YyBaoZhenJing+KyBaoZhenJing) &= nMaxMargin ) { return(0); }
//---------------------------------------------------------------------
//+--- 判断条件 -----------------------------------------------------+
// 注意:你可以在这里编写一些判断条件,
// 当条件满足时再发出下定单指令,否则 return(0);
// 它就是你的智能交易系统了,祝你成功!
//+------------------------------------------------------------------+
//--- 发送定单。 ----------------------------
i=OrderSend( Symbol(),OP_BUY,nLotsNumber,Ask,3,Ask-nLossPoint*Point,Ask+nGainPoint*Point,&H1 Open Buy&,1234,0,Green);
if(i&0 ) { Alert( &买进&,Symbol(),&,开仓成功!& ); nAllowSend=1; } // 发送成功,将nAllowSend=1防止重复下单。
else { Alert( &买进&,Symbol(), &,开仓不成功!& ); }
//-------------------------------------------------------------
return(0);
//+------------------------------------------------------------------+
* 以上EA是“一气呵成”的写法
* 这种编写方式是“有经验”的写法
不值得速成班学员学习
只能看看就好
* 这EA有一段可取之处
就是保证金的处理
//--- 如果开仓保证金超过上限,则返还不交易。 ------------------
KyBaoZhenJing = AccountFreeMargin();
YyBaoZhenJing = AccountMargin();
if( YyBaoZhenJing / (YyBaoZhenJing + KyBaoZhenJing) &= nMaxMargin ) { return(0); }
//-------------------------------------------------------------
//--- 重新评估开仓保证金,如果开仓保证金超过上限,则返还不交易。 ------
XyBaoZhenJing = MarketInfo( Symbol(), MODE_MARGINREQUIRED); // 一个标准手需保证金金额。
XyBaoZhenJing = XyBaoZhenJing * nLotsN // 下单需用的保证金
if( (YyBaoZhenJing+XyBaoZhenJing) / (YyBaoZhenJing+KyBaoZhenJing) &= nMaxMargin ) { return(0); }
* 这一小段,我们可以放在
战场策略开始那边,一开始策略就先判断保证金
* 怎样“偷师”呢!
这就是重要的两段话,我把它弄简单一点
//--- 如果开仓保证金超过上限,则返还不交易。 ------------------
if( AccountMargin() / (AccountMargin() + AccountFreeMargin()) &= 1 ) { return(0); }
BaoZhenJing = MarketInfo( Symbol(), MODE_MARGINREQUIRED); // 一个标准手需保证金金额。
BaoZhenJing = BaoZhenJing * LotMM ; // 下单需用的保证金
if( (AccountMargin()+BaoZhenJing) / (AccountMargin()+AccountFreeMargin()) &= 1 ) { return(0); }
//---------------------------------------------------------------------
copy&press这段去
zhangchang(){
//开始这边
* 然后,应该有一个新的词句
加到#property上面就可以了。
* 我不知道有没有效
你自己试一试看看
* 为什么要你试
因为学习就是试一试
第拾叁课:偷师3
* 看看这个某位网友发表的EA,学习学习
* 一些交易系统的编写心得我编写EA的目的:建立系统的交易方法,
机械化运行,排除情感的影响,实现稳定赢利。
做EA一年了,最初做的是突破系统,依据突破方向追买追卖,
测试近半年,效果一般,决定放弃,但这个EA使我坚信了一点,
即只有跟着趋势交易才能实现EA的稳定赢利。
因此,我认为要做一个成功的EA,关键就在于如何应用一切可能的方法去判断趋势。
我发现很多很普通的指标都很容易做到这点,
举个例子,GBP/USD日线图,用一个长周期的RVI做趋势判断(RVI-110),
当RVI在“0”值上方趋势为上升,反之则为下降,
开仓及平仓用一个短周期RVI做信号指示(RVI-13),
在上升趋势时,采用RVI MAIN 上穿RVI SIGNAL作为买入信号;
在下降趋势时,采用RVI MAIN 下破RIV SIGNAL作卖出信号,
这个系统很简单,却很实用,配合好的止损止赢策略,
赢利是有保证的,我还为此编写了一个EA,
有兴趣的可以看看(附MQ4文件,写得很粗糙,高手别笑话)。
//+------------------------------------------------------------------+
//| RVITradeSys.mq4 |
//| Copyright 2007, ABKCN|
//+-----------------------------------------------------------------
extern double TakeProfit = 400;
extern double Lots = 0.1;
extern double TrailingStop = 80;
extern double Stops=200;
extern double RVIPERIODSHORT=13;
extern double RVIPERIODLONG=110;
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int init ()
Points = MarketInfo (Symbol(), MODE_POINT);
return(0);
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int deinit()
return(0);
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int start()
double RVISIGNAL_C=0, RVISIGNAL_P=0,RVIMAIN_C=0,RVIMAIN_P=0;
double RVISIGNAL15_C,RVISIGNAL15_P,RVIMAIN15_C,RVIMAIN15_ P;
double TRENDSIDE=2,BSSIGNAL=2;
double LONGRVISIGNAL_C=0, LONGRVISIGNAL_P=0;
int cnt=0,
if(Bars&100)
Print(&bars less than 100&);
return(0);
if(TakeProfit&10)
Print(&TakeProfit less than 10&);
return(0);
//================================================== ===========
RVISIGNAL_C=iRVI(NULL,0,RVIPERIODSHORT,MODE_SIGNAL ,0);
RVISIGNAL_P=iRVI(NULL,0,RVIPERIODSHORT,MODE_SIGNAL ,1);
RVIMAIN_C =iRVI(NULL,0,RVIPERIODSHORT,MODE_MAIN,0);
RVIMAIN_P =iRVI(NULL,0,RVIPERIODSHORT,MODE_MAIN,1);
LONGRVISIGNAL_C=iRVI(NULL,0,RVIPERIODLONG,MODE_SIG NAL,0);
//================================================== ===========
if(OrdersTotal()&1)
if(AccountFreeMargin()&(1000*Lots))
Print(&We have no money&);
return(0);
//计算大方向及买卖信号
if (LONGRVISIGNAL_C&0) { TRENDSIDE=0; }//0为上升1为下降
if (LONGRVISIGNAL_C&0) { TRENDSIDE=1; }
if (RVIMAIN_P&=RVISIGNAL_P && RVIMAIN_C&RVISIGNAL_C) { BSSIGNAL=0; } //0买入1卖出
if (RVIMAIN_P&=RVISIGNAL_P && RVIMAIN_C&RVISIGNAL_C) { BSSIGNAL=1; }
//BUY CONDITIONS
if(TRENDSIDE==0 && BSSIGNAL==0)
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-Stops*Points,Ask+TakeProfit*Points,&macd sample&,16384,0,Red);
if(GetLastError()==0)Print(&Order opened : &,OrderOpenPrice());
return(0);
//SELL CONDITIONS
if(TRENDSIDE==1 && BSSIGNAL==1)
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+Stops*Po ints,Bid-TakeProfit*Points,&macd sample&,16384,0,Red);
if(GetLastError()==0)Print(&Order opened : &,OrderOpenPrice());
return(0);
return(0);
//平仓处理及追踪止损
total=OrdersTotal();
for(cnt=0;cnt&cnt++)
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()&=OP_SELL &&
OrderSymbol()==Symbol())
if(OrderType()==OP_BUY)
if(TRENDSIDE==1 && BSSIGNAL==1)
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ;
return(0);
if(TrailingStop&0)
if(Bid-OrderOpenPrice()&Points*TrailingStop)
if(OrderStopLoss()&Bid-Points*TrailingStop)
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Points*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
if(TRENDSIDE==0 && BSSIGNAL==0)
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ;
return(0);
if(TrailingStop&0)
if((OrderOpenPrice()-Ask)&(Points*TrailingStop))
if(OrderStopLoss()==0.0 ||
OrderStopLoss()&(Ask+Points*TrailingStop))
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Poi nts*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
return(0);
// the end.
* 这个EA也是“一气呵成”的EA
不值得速成班学员为学习EA的榜样
* 那看来作什么呢?
答案是:自我学习
* 学习什么呢?
* 因为速成班学员个个都是“编写懒惰虫”
也不可以这么讲
因为我们不会什么C++啊!
怎样编怎样写啊!
总得找出路嘛!
因此我们最精通的就是“移花接木”
* 请学员们把以上的EA
移花接木的放到自己的EA上去
* 方法简单:
第一步:copy&press指标
把他弄成子程式
把他的战场策略移植到我们的
战场策略,完毕。
就是这么简单。
* 为什么可以这样的简单?
其它的源码呢!
对,其它的就不要了
* 为什么?
因为我们的速成班EA结构no1啊!
无限发展空间啊!
你还不知道吗?
哈哈和。。。
* 如果你做不到
你就别想成为EA策略高手!
哈哈和。。。
第拾肆课:如何加其它指标
* 如何添加macd指标
//+------------------------------------------------------------------+
//| MT4-EA制作速成班.mq4 |
//| Copyright 2007, MT4-EA制作速成班. |
//+------------------------------------------------------------------+
#property copyright &Copyright 2007, MT4-EA制作速成班.&
#property link. &&
extern double ma1=1,ma2=2;
double ma1now,ma1now2,ma2now,ma2now2,ma1bnow,ma2
////////////////////////
extern string _资金管理_ =&任选一个&;
extern bool zijiguanli1=//false true、、
extern bool zijiguanli2=//false true、、
extern bool zijiguanli3=//false true、、
extern bool maok=//false true、、
extern bool macdok=//false true、、
///////////////////////////////////
extern double cheng=1;
double aa=0;
int s=0,b=0;
double CurrentBasket=0;
double LotMM=0;
double lotstart=0;
double LotsMax=100;
extern double lotab=0.1;
double lots=0;
double TP=100,TPP=0,SL=200,SLL=0;
int slip=6;
//////////////////////////////////
double mode=0;
double LastOrderT
double LastP
double LastP
double LastP
double OpenS
double OpenSellS
double OpenB
double OpenBuyS
///////////////////////////////
extern int TrailingStop=0;
///////////////////////////////
string text=&&;
////////////////////////
double MacdCurrent, MacdP
double Macd_1, Macd_2, Macd_3, Macd_4, Ma_Quick, Ma_S
double MaCurrent, MaP
double top,
////////////////////////////
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
return(0);
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
return(0);
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
jiancha();//检查判断
MoneyManagement();//资金管理
macd();//指标管理
ma();//指标管理
zhangchang();//战场管理
xianshi();//显示管理
TrailingStop();//移动止赢
return(0);
//+------------------------------------------------------------------+
void jiancha()
for (int cnt=0; cnt&=OrdersTotal(); cnt++)
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol() )
mode=OrderType();LastOrderType=OrderType();
if (OrderType() == OP_SELL){ s++; LastPricesell=OrderOpenPrice();}
if (OrderType() == OP_BUY ){ b++; LastPricebuy=OrderOpenPrice();}
LastPrice=OrderOpenPrice();
if (OrderType()==OP_SELL) {OpenSells++;}
if (OrderType()==OP_SELLSTOP) {OpenSellStops++;}
if (OrderType()==OP_BUY) {OpenBuys++;}
if (OrderType()==OP_BUYSTOP) {OpenBuyStops++;}
}//end jiancha
//+------------------------------------------------------------------+
void MoneyManagement() {
lotstart=(AccountBalance()*lotab/10000);
if(cheng==0){cheng=1;}
CurrentBasket=AccountEquity()-AccountBalance();
/////////////////////////////////////////////////////////////////
if(zijiguanli1){ LotMM =}
/////////////////////////////////////////////////////////////////
if(zijiguanli2){
if(CurrentBasket&0 ) {LotMM=NormalizeDouble(lots*(OrdersTotal()*cheng)+ lotstart,2); }
if(CurrentBasket==0 ) {LotMM=NormalizeDouble(LotMM*0,2); }
/////////////////////////////////////////////////////////////////
if(zijiguanli3){
if(s+b==0){aa=1;}
if(s+b==1){aa=3;}
if(s+b==2){aa=7;}
if(s+b==3){aa=11;}
if(s+b==4){aa=20;}
if(s+b==5){aa=31;}
if(s+b==6){aa=42;}
if(s+b==7){aa=54;}
if(s+b==8){aa=66;}
if(s+b==9){aa=76;}
if(s+b&=10){aa=66;}
if(CurrentBasket&0 ) {LotMM=NormalizeDouble(lotstart*aa,2); }
if(CurrentBasket==0 ) {LotMM=NormalizeDouble(LotMM*0,2); }
/////////////////////////////////////////////////////////////////
if(LotMM&lots){LotMM=}
if(LotMM&LotsMax){LotMM=LotsM}
}//end zijiguanli
//+------------------------------------------------------------------+
void macd() {
Macd_1 = iMACD(NULL,0,3,20,9,PRICE_CLOSE,MODE_MAIN,1);
Macd_2 = iMACD(NULL,0,3,20,9,PRICE_CLOSE,MODE_MAIN,2);
Macd_3 = iMACD(NULL,0,3,20,9,PRICE_CLOSE,MODE_MAIN,3);
Macd_4 = iMACD(NULL,0,3,20,9,PRICE_CLOSE,MODE_MAIN,4);
Ma_Quick = iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,0);
Ma_Slow = iMA(NULL,0,65,0,MODE_EMA,PRICE_CLOSE,0);
top = High[iHighest(NULL,0,MODE_HIGH,10,1)];
bottom = Low[iLowest(NULL,0,MODE_LOW,10,1)];
//+------------------------------------------------------------------+
ma1now = iMA(NULL,0,ma1,0,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);
//+------------------------------------------------------------------+
void zhangchang() {
//这边要写一些东西
if(ma1now&ma2now
&& ma1now2&ma2now2
){buyme();}
if(ma1now&ma2now
&& ma1now2&ma2now2
){sellme();}
if(macdok){
&& Macd_1 & Macd_2
&& Macd_2 & Macd_3
&& Ma_Quick & Ma_Slow
&& Bid & Low[1]
&& Macd_2 & 0
//&& Macd_2 & Macd_3
//&& Macd_3 & Macd_4
//&& Ma_Quick & Ma_Slow
//&& Bid & Low[2] && Macd_3 & 0
{sellme(); }
if( s+b==0
&& Macd_1 & Macd_2 && Macd_2 & Macd_3
&& Ma_Quick & Ma_Slow && Ask & High[1] && Macd_2 & 0
//&& Macd_2 & Macd_3
//&& Macd_3 & Macd_4 && Ma_Quick & Ma_Slow
//&& Ask & High[2] && Macd_3 & 0
{ buyme(); }
} //end macd
}//end EAjujishou
_,汇友网更关注外汇交易者
说的不错&&
本人研究EA3年多 未发现十分稳定的EA EA倒是可以用来辅助交易&&
楼主福如东海,万寿无疆!&&
原来这样也可以&&
现在还真的要重视EA了&&
先顶后看&&
支持你就顶你&&
太感谢了,真实用!
太感谢了,我就是个新手,很有启发。还是不大明白,我还要多看几遍。
外汇EA之家,是汇友网旗下的外汇交易系统分享社区。在EA之家可以免费下载任何外汇指标、外汇EA。
电子邮箱:

我要回帖

更多关于 外汇ea交易 的文章

 

随机推荐