| 
| 
查看: 2561|回复: 15
 | 
MT4 EA 智能交易制作速成班-基础篇
[复制链接] |  
 |  | 
 
| 
 
 
 
 |  | 李易鸿原创 |  | MT4 EA 智能交易制作速成班 |  | 版权所有 请勿翻版 |  |  | MT4-EA制作速成班教程-基础篇
 版权所有 请勿转翻
 作者:李沂鸿(马来西亚)
 疫苗:jh7x51@hotmail.com
 网站:7x51.com
 
 
 什么是MT4?MT4就是META TRADER 4
 是一个免费的外汇交易平台
 里边有现场的外汇报价
 非常方便使用
 你可以在google搜索
 然后下载
 然后立刻使用
 你可以免费注册户口1000,10000,100000
 都不是问题
 
 
什么是EA?EA 就是 Expert Adviser
 EA 就是智能交易系统
 智能交易系统就是:
 -软件自己判断下订单
 -软件自己判断提成利润
 -软件自己判断砍仓止输
 
 
这个EA软件不是便便就有的而是一个插件
 这个插件是提供空间给会编写的人编写的
 里边有便便的METAEDITOR给你编写
 如果你不会C++,就不会编写,这是他们说的
 
 
什么是速成班?就是你在很短很快的时间内就可以学会如何编写EA
 而且不需要会什么C++软件语言
 是的,快则8个学习小时
 慢则24个学习小时
 
 
 
什么叫“易学难精”?就是你很快的就上手
 但难在成为厉害的高手。
 这需要时间慢慢的去研究编写策略
 不过久而久之你就可以是EA编写高手了
 
 
学习编写EA有什么好处?1.自己编写自己的EA
 2.可以帮助别人编写别人的EA而获取回酬
 
 
现在市场上有很多免费的EA也就是我所谓的-垃圾EA
 为什么是“垃圾”
 因为他是亏钱的EA
 你千万别因为是“宝”
 就贸贸然用真金白银的去试用
 
 
现在市场上也有很多人在卖EA便宜的100美金
 贵的1000美金
 通常EA的寿命是一年
 有一回在一个新加坡人的讲座会上
 他们讲他的EA价值15000马币?
 你千万别以为他们个个卖的是“圣杯”
 有的是假象罢了的。
 
 
现在市场上没有一个人出来教EA以前我想学习也没有机会
 付钱也没有人会教
 哈哈和。。。
 
 
 (未完)
 
 
 
 
 
 | 
 
 
 
 [ 本帖最后由 柒侠伍义 于 29-4-2008 10:33 PM 编辑 ]
 | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 
 楼主|
发表于 29-4-2008 10:28 PM
|
显示全部楼层 
| 
 
 
 
 |  | 李易鸿原创 |  | MT4 EA 智能交易制作速成班 |  | 版权所有 请勿翻版 |  |  | MT4-EA制作速成班-基础篇
 版权所有 请勿转翻
 作者:李沂鸿(马来西亚)
 网站:7x51.com
 第一课::EA的结构
 
 
 了解一下EA的基本形式结构以下就是EA的编写形式
 
 | //+------------------------------------------------------------------+ //| MT4-EA制作速成班.mq4 |
 //| Copyright ?2007, MetaQuotes Software Corp. |
 //| http://www.metaquotes.net |
 //+------------------------------------------------------------------+
 #property copyright "Copyright ?2007, MetaQuotes Software Corp."
 #property link "http://www.metaquotes.net"
 
 //+------------------------------------------------------------------+
 //| 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.metaquotes.net |
 //+------------------------------------------------------------------+
 | 
 写与不写都无所谓
 我们就不用理他
 
 
 | #property copyright "Copyright ?2007, MetaQuotes Software Corp." #property link "http://www.metaquotes.net"
 | 
 这个也是在上面的垃圾
 写与不写都无所谓
 我们也不用理他
 
 
 
 这两个很少用到。高高手才会用| //+------------------------------------------------------------------+
 //| expert initialization function |
 //+------------------------------------------------------------------+
 int init()
 {
 //----
 //以后可能有用到
 //----
 return(0);
 }
 //+------------------------------------------------------------------+
 //| expert deinitialization function |
 //+------------------------------------------------------------------+
 int deinit()
 {
 //----
 //以后可能有用到
 //----
 return(0);
 }
 | 
 速成班的话,这个可以不用理他。
 放在一边先,以后才学怎样用它。
 
 
 
 这个就是EA开始操作的重要部分| //+------------------------------------------------------------------+ //| expert start function |
 //+------------------------------------------------------------------+
 int start()
 {
 //----
 //主程式
 //----
 return(0);
 }
 //+------------------------------------------------------------------+
 | 
 
 
 以上的EA的编写形式我们改成如下:
 
 | //+------------------------------------------------------------------+ //| MT4-EA制作速成班.mq4 |
 //| Copyright 2007, MT4-EA制作速成班. |
 //| http://www. MT4-EA制作速成班.net |
 //+------------------------------------------------------------------+
 #property copyright "Copyright 2007, MT4-EA制作速成班."
 #property link "http://www. MT4-EA制作速成班.net"
 
 //+------------------------------------------------------------------+
 //| 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的文件
 这文件是不可以被修改的
 这文件是加密的
 可以出售的文件。
 
 
有什么问题要问吗?但是我告诉你
 不要问太深的问题,我是不会的。
 
 
 
   
 
 
 (未完)
 
 
 
 
 
 | 
 
 
 
 [ 本帖最后由 柒侠伍义 于 29-4-2008 10:29 PM 编辑 ]
 | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 发表于 30-4-2008 12:33 AM
|
显示全部楼层 
| 很高興柒侠伍义大大再回來發表文章 ............    | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 
 楼主|
发表于 30-4-2008 10:27 PM
|
显示全部楼层 
| 
 
 
 |  | 李易鸿原创 |  | MT4 EA 智能交易制作速成班 |  | 版权所有 请勿翻版 |  |  | MT4-EA制作速成班-基础篇
 版权所有 请勿转翻
 作者:李沂鸿(马来西亚)
 网站:7x51.com
 第二课
 回到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() {
 }
 //+------------------------------------------------------------------+
 /////end
 
 | 
 
// 这两划代表右边的不要读也可以说是注解
 
注意:EA不会读中文符号。比如这个“”这个就可以 ""
 
我们可以完整他
 | //+------------------------------------------------------------------+ //| MT4-EA制作速成班.mq4 |
 //| Copyright 2007, MT4-EA制作速成班. |
 //| http://www. MT4-EA制作速成班.net |
 //+------------------------------------------------------------------+
 #property copyright "Copyright 2007, MT4-EA制作速成班."
 #property link "http://www. MT4-EA制作速成班.net"
 
 //+------------------------------------------------------------------+
 //| 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() {
 //这边要写一些东西
 }
 ////////////////////////////
 
 可以任意无限的加。。。
 
有什么问题要问吗?但是我老实告诉你
 不要问太深的问题,我是不会回答的。
 
 
 (未完)
 
 
 
 
 
 | 
 
 | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 
 楼主|
发表于 30-4-2008 10:31 PM
|
显示全部楼层 
| 
 |  | 李易鸿原创 |  | MT4 EA 智能交易制作速成班 |  | 版权所有 请勿翻版 |  |  | MT4-EA制作速成班-基础篇
 版权所有 请勿转翻
 作者:李沂鸿(马来西亚)
 网站:7x51.com
 第三课::指标
 
 void ma(){
 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,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,backstep,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. MT4-EA制作速成班.net |
 //+------------------------------------------------------------------+
 #property copyright "Copyright 2007, MT4-EA制作速成班."
 #property link "http://www. MT4-EA制作速成班.net"
 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() {
 //这边要写一些东西
 }
 //+------------------------------------------------------------------+
 /////end
 
 | 
 
注意这个{},不要糊涂的删除了也不知道会出错的
 
注意这个可以写成这样效果一样
 double ma1=1;
 double ma2=2;
 double ma1now;
 double ma1now2;
 double ma2now;
 double ma2now2;
 double ma1bnow;
 double ma2bnow;
 
extern double ma1=1;extern double ma2=2;
 这样写可以显示在EA修改处
 
有什么问题要问吗?但是我老实告诉你
 不要问太深的问题
 可能我也不会回答的。
 
 
 
 
 (未完)
 
 
 
 
 
 | 
 | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 
 楼主|
发表于 30-4-2008 10:40 PM
|
显示全部楼层 
| 
 
 |  | 李易鸿原创 |  | MT4 EA 智能交易制作速成班 |  | 版权所有 请勿翻版 |  |  | MT4-EA制作速成班-基础篇 版权所有 请勿转翻
 作者:李沂鸿(马来西亚)
 网站:7x51.com
 第四课-资金管理
 
 
 
 这个将放在#property上面那边////////////////////////
 extern string _资金管理_ ="任选一个";
 extern bool zijiguanli1 = true;//false true、、
 extern bool zijiguanli2= false;//false true、、
 extern bool zijiguanli3= false;//false true、、
 ///////////////////////////////////
 
true=要false =不要用
 
我提供了三个资金管理作为参考你可以自己增加自己喜欢的资金管理方案
 
 
void MoneyManagement() {lotstart=(AccountBalance()*lotab/10000);
 lots=lotstart;
 if(cheng==0){cheng=1;}
 CurrentBasket=AccountEquity()-AccountBalance();
 /////////////////////////////////////////////////////////////////
 if(zijiguanli1){ LotMM = lots;}
 /////////////////////////////////////////////////////////////////
 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=LotsMax;}
 }//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(){}
 很容易用,比如:
 if(LotMM<lots){LotMM=0.01;}
 意思就是:
 如果LotMM小过lots,LotMM就等于0.01。
 
 if(LotMM>LotsMax){LotMM=LotsMax;}
 意思就是:
 如果LotMM大过LotsMax,LotMM就等于LotsMax。
 
不会的话,不要紧copy&press就可以用了
 
把void MoneyManagement() {   }copy&press到我们EA模板去
 结果如下:
 
 
 
资金管理有三个方案:资金管理1=平注
 资金管理2=1,2,3,4,5...
 可以乘,如果你把cheng改成2或3或0.2
 资金管理3是固定式,1,3,7,11.。。
 
 不明白?别急,用了就明白。
有什么问题要问吗?但是我老实告诉你
 我是自学成功的,没有上过什么EA课程
 不要问太深的问题
 可能我也不会回答的。
 
 
 (未完)
 | 
 | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 
 楼主|
发表于 30-4-2008 10:40 PM
|
显示全部楼层 
| //+------------------------------------------------------------------+ //| MT4-EA制作速成班.mq4 |
 //| Copyright 2007, MT4-EA制作速成班. |
 //| http://www. MT4-EA制作速成班.net |
 //+------------------------------------------------------------------+
 #property copyright "Copyright 2007, MT4-EA制作速成班."
 #property link "http://www. MT4-EA制作速成班.net"
 extern double ma1=1,ma2=2;
 double ma1now,ma1now2,ma2now,ma2now2,ma1bnow,ma2bnow;
 ////////////////////////
 extern string _资金管理_ ="任选一个";
 extern bool zijiguanli1= true;//false true、、
 extern bool zijiguanli2= false;//false true、、
 extern bool zijiguanli3= false;//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);
 lots=lotstart;
 if(cheng==0){cheng=1;}
 CurrentBasket=AccountEquity()-AccountBalance();
 /////////////////////////////////////////////////////////////////
 if(zijiguanli1){ LotMM = lots;}
 /////////////////////////////////////////////////////////////////
 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=lots;}
 if(LotMM>LotsMax){LotMM=LotsMax;}
 }//end zijiguanli
 //+------------------------------------------------------------------+
 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() {
 //这边要写一些东西
 }
 //+------------------------------------------------------------------+
 /////end
 | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 发表于 8-5-2008 09:05 PM
|
显示全部楼层 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 发表于 12-5-2008 08:22 PM
|
显示全部楼层 
| 我也是對MT4的智能trading很有興趣,但可以加圖片解釋嗎?不然看了真的會很吸收不到大俠你所交的東西 | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 发表于 12-5-2008 09:10 PM
|
显示全部楼层 
| 原帖由 fashionebiz 于 8-5-2008 09:05 PM 发表  这是什么东西啊,看不明
一个 外汇交易系统的 软件说明啦。。。
  | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 
 楼主|
发表于 18-5-2008 12:37 PM
|
显示全部楼层 
| MT4-EA制作速成班-基础篇 版权所有 请勿转翻
 作者:李沂鸿(马来西亚)
 网站:7x51.com
 第五课::战场
 
 
 这里是整个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
 
 s+b==0 意思就是 买上+买下等于没有
 没有下注,如果遇到条件符合就可以下注的意思
 
 && 的意思就是“再加”什么什么的条件
 
 那么整句是这样编写
 if(什么什么){就什么什么}
 就是用这个
 
 if(ma1now>ma2now
 && ma1now2<ma2now2
 && s+b==0
 ){buyme();}
 if(ma1now<ma2now
 && ma1now2>ma2now2
 && s+b==0
 ){sellme();}
 
 现在我们就把这两句copy&press到战场去
 
 注意:
 现在又多了两个新的东西
 buyme()和sellme()
 你就copy&press buyme()和sellme()的编写法就可以了。
 
 结果如下:
 //+------------------------------------------------------------------+
 //| MT4-EA制作速成班.mq4 |
 //| Copyright 2007, MT4-EA制作速成班. |
 //| http://www. MT4-EA制作速成班.net |
 //+------------------------------------------------------------------+
 #property copyright "Copyright 2007, MT4-EA制作速成班."
 #property link "http://www. MT4-EA制作速成班.net"
 extern double ma1=1,ma2=2;
 double ma1now,ma1now2,ma2now,ma2now2,ma1bnow,ma2bnow;
 ////////////////////////
 extern string _资金管理_ ="任选一个";
 extern bool zijiguanli1= true;//false true、、
 extern bool zijiguanli2= false;//false true、、
 extern bool zijiguanli3= false;//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);
 lots=lotstart;
 if(cheng==0){cheng=1;}
 CurrentBasket=AccountEquity()-AccountBalance();
 /////////////////////////////////////////////////////////////////
 if(zijiguanli1){ LotMM = lots;}
 /////////////////////////////////////////////////////////////////
 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=lots;}
 if(LotMM>LotsMax){LotMM=LotsMax;}
 }//end zijiguanli
 //+------------------------------------------------------------------+
 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() {
 //这边要写一些东西
 
 if(ma1now>ma2now
 && ma1now2<ma2now2
 && s+b==0
 ){buyme();}
 
 if(ma1now<ma2now
 && ma1now2>ma2now2
 && s+b==0
 ){sellme();}
 
 }
 //+------------------------------------------------------------------+
 void buyme(){
 if (TP==0) { TPP=0; } if(TP>0) { TPP=Ask+TP*Point; }
 if (SL==0) { SLL=0; } if(SL>0) { SLL=Ask-SL*Point; }
 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课程
 不要问太深奥或无聊的问题
 我可能不知道怎样答你的问题。
 哈哈和。。。
 
 你会发现问题??。。。
 然后告诉我上面问题。。。
 这就是你今天的功课
 再见
 哈哈和。。。
 | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 
 楼主|
发表于 18-5-2008 12:39 PM
|
显示全部楼层 
| MT4-EA制作速成班-基础篇 版权所有 请勿转翻
 作者:李沂鸿(马来西亚)
 网站:7x51.com
 第六课-解决出错问题
 
 如果你有做功课
 你会知道以上的EA还是不能用
 因为出错了
 
 出错是常事
 没有什么了不起
 没有什么大事
 
 当你按在METAEDITOR按“编写”时
 最下方会告诉你出错了
 按一按下方的出错
 他会告诉你在那里出错了
 第一:intdouble CurrentBasket=0;
 多了 int
 删掉 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
 应该是ma1
 删掉 0 就可以了
 
 之后你在按一下“编写”
 他告诉你
 第三:OrderSend(Symbol(),OP_BUY,LotMM,Ask,slip,SLL,TPP,"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
 所以可以删掉 ticket= 就可以了
 
 再来。。。他告诉你多了这个
 
 void buyme() {
 //这边要写一些东西
 }
 
 因为已经有了的,哈哈和。。。
 是糊涂多了一个
 删掉 整句多余的buyme() 就可以了
 
 
 再来。。。
 0错误 0警告
 哈哈和。。。
 成功了
 恭喜你已经学会编写EA了
 
 试一试用一用?
 效果怎样?
 是不是有一点怪怪?
 又出错了?
 又是功课的时间
 告诉我又发生什么事情。。。
 
 编写EA就是解决问题
 当你是解决问题高手
 你就是编写EA高手
 哈哈和。。。
 | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 
 楼主|
发表于 18-5-2008 12:40 PM
|
显示全部楼层 
| MT4-EA制作速成班-基础篇 版权所有 请勿转翻
 作者:李沂鸿(马来西亚)
 网站:7x51.com
 第七课-填写盈亏
 
 上一回我们讲到
 -有赚25点就出场
 -如果亏的时候亏50点就出场
 
 这个还没有加上去
 编写方法就是
 Take Profit=25
 Stop Loss=50
 
 我把他们简写成
 TP=25;
 SL=50;
 
 你想到了什么吗?
 对,这字眼很熟吧!
 记得吗?
 double TP=0,TPP=0,SL=0,SLL=0;
 
 我们改成
 double TP=25,TPP=0,SL=50,SLL=0;
 你发现吗?
 不过下注方面还是有问题!
 
 其实是这EA没有判断
 什么是B
 什么是S
 
 B是buy
 S是sell
 速成班不必学会怎样写
 你只要copy&prss下面的子程式
 放进去就可以了
 
 我把它称为检查
 
 //////////////////////////////////////////
 void jiancha()
 {
 
 b=0;s=0;
 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上面那边
 新的词句:
 mode
 LastOrderType
 LastPricesell
 LastPricebuy
 LastPrice
 OpenSells
 OpenSellStops
 OpenBuys
 OpenBuyStops
 
 我们更正如下:
 
 double mode=0;
 double LastOrderType;
 double LastPricesell;
 double LastPricebuy;
 double LastPrice;
 double OpenSells;
 double OpenSellStops;
 double OpenBuys;
 double OpenBuyStops;
 
 按“编写”。。。
 0错误 0警告
 ok了
 按“终端”试一试效果怎样
 
 还是不行
 还是buy sell buy sell buy sell
 你知道什么事情发生了吗?
 
 跟你讲一个逻辑
 
 什么是主程式
 就是主要的程式
 
 什么是子程式
 就是不是主要的程式
 了解了这些
 
 现在一个问题,这些子程式
 
 MoneyManagement();//资金管理
 macd();//指标管理
 ma();//指标管理
 zhangchang();//战场管理
 buyme();//买上
 sellme();//买下
 xianshi();//显示管理
 
 那些是不需要一直用的就不可以在主程式这里
 对啦!
 
 buyme();//买上
 sellme();//买下
 
 是有时用到,有时没有用
 所以我们删掉它
 
 现在这个EA可以正常的操作了
 其编写程式如下:
 注意红色部分的位置
 
 //+------------------------------------------------------------------+
 //| MT4-EA制作速成班.mq4 |
 //| Copyright 2007, MT4-EA制作速成班. |
 //| http://www.MT4-EA制作速成班.net |
 //+------------------------------------------------------------------+
 #property copyright "Copyright 2007, MT4-EA制作速成班."
 #property link "http://www.MT4-EA制作速成班.net"
 extern double ma1=1,ma2=2;
 double ma1now,ma1now2,ma2now,ma2now2,ma1bnow,ma2bnow;
 ////////////////////////
 extern string _资金管理_ ="任选一个";
 extern bool zijiguanli1= true;//false true、、
 extern bool zijiguanli2= false;//false true、、
 extern bool zijiguanli3= false;//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 LastOrderType;
 double LastPricesell;
 double LastPricebuy;
 double LastPrice;
 double OpenSells;
 double OpenSellStops;
 double OpenBuys;
 double OpenBuyStops;
 //+------------------------------------------------------------------+
 //| 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()
 {
 
 b=0;s=0;
 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);
 lots=lotstart;
 if(cheng==0){cheng=1;}
 CurrentBasket=AccountEquity()-AccountBalance();
 /////////////////////////////////////////////////////////////////
 if(zijiguanli1){ LotMM = lots;}
 /////////////////////////////////////////////////////////////////
 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=lots;}
 if(LotMM>LotsMax){LotMM=LotsMax;}
 }//end zijiguanli
 //+------------------------------------------------------------------+
 void macd() {
 //这边要写一些东西
 }
 //+------------------------------------------------------------------+
 void ma()
 {
 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
 && s+b==0
 ){buyme();}
 
 if(ma1now<ma2now
 && ma1now2>ma2now2
 && s+b==0
 ){sellme();}
 
 }
 //+------------------------------------------------------------------+
 void buyme(){
 if (TP==0) { TPP=0; } if(TP>0) { TPP=Ask+TP*Point; }
 if (SL==0) { SLL=0; } if(SL>0) { SLL=Ask-SL*Point; }
 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课程
 不要问太深奥或无聊的问题
 我可能不知道怎样答你的问题
 其实也不用问什么
 自己想出答案会更好更刻骨铭心
 哈哈和。。。
 | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 
 楼主|
发表于 18-5-2008 12:41 PM
|
显示全部楼层 
| MT4-EA制作速成班-基础篇 版权所有 请勿转翻
 作者:李沂鸿(马来西亚)
 网站:7x51.com
 第八课-移动止赢
 
 移动止赢就是到口的肉就不要吐出去了
 哈哈和。。。
 这样形容你明白吗?
 其实也不是这个意思
 是赢到尽头的意思
 
 速成班不必学会怎样写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+Point*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();
 
 发现新的词句
 cnt
 TrailingStop
 
 我们更正如下:
 int cnt;
 double TrailingStop=0;
 
 按“编写”
 0错误 0警告
 厉害,哈哈和。。。
 加入成功
 
 把double TrailingStop=0;
 0改成10,就可以操作了
 
 改成这样也可以
 extern double TrailingStop=10;
 
 自己试一试看看效果如何?
 怎样?容易吗?
 哈哈和。。。
 | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 
 楼主|
发表于 18-5-2008 12:42 PM
|
显示全部楼层 
| MT4-EA制作速成班-基础篇 版权所有 请勿转翻
 作者:李沂鸿(马来西亚)
 网站:7x51.com
 第九课-显示画面
 
 显示的子程式如下
 
 //////////////////////////////////////////////
 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);
 
 //我们可以无限的加
 }
 ////////////////////////////////////////////////////
 
 研究一下
 你应该会用了
 
 这显示有什么了不起吗?
 有什么作用吗?
 用你的脚想一想你应该会领悟的
 哈哈和。。。
 | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 
 楼主|
发表于 18-5-2008 12:42 PM
|
显示全部楼层 
| MT4-EA制作速成班-基础篇 版权所有 请勿转翻
 作者:李沂鸿(马来西亚)
 网站:7x51.com
 第十课-解决问题2
 
 每一个程式的开始就是一个问题
 没有问题就是有问题
 有问题就有答案
 没有答案就不是问题
 哈哈和。。。
 
 速成班基础篇教程到这里就结束了
 结束就是新的开始
 开始什么
 开始更上一层楼
 
 其它基础的东东
 你可以在Metaeditor的右边找到
 有中文的
 所以我也不必重复
 
 接下来
 我们要快速的学习“策略篇”
 因为一个成败的EA取决于策略
 
 什么是策略?
 策略就是战略
 
 什么是战略?
 战略就是你怎样把EA弄到直线上升
 而不是楼梯下降
 
 如果你要学习这一篇
 可以,你必须交功课
 
 功课:
 在上面EA的基础上
 请加上以下指标
 a)macd
 
 如果你做不出来
 你的基础都有问题
 怎样更上一层楼呢!
 是不是
 
 哈哈和。。。
 
 未完,再见。
 
 
  
 [ 本帖最后由 柒侠伍义 于 18-5-2008 12:44 PM 编辑 ]
 | 
 |  |  |  |
 
|  |  |  
|  |  |  |  | 
            本周最热论坛帖子 |