MT4外汇网_MT4 EA制作速成班――基础篇

作者:MT4 发布时间:2021-09-22 15:02

# 甚么是MT4?
尔便当您领会甚么是MT4了
MT4便是META. TRADER 4

# 甚么是EA?
尔也当您领会甚么是EA了
EA 便是 Expert Adviser
EA 便是智能接难体系
智能教诲体系便是:
-硬件本人果断高定单
-硬件本人果断提成利润
-硬件本人果断砍仓行输

# 甚么是速成班?
便是您正在很欠很快的时间内就能够教会若何编写EA
是的,快则八个教习小时
缓则24个教习小时

# 甚么喊“难教易粗”?
便是您很快的便上手,易正在成为利害的妙手。
那必要时间缓缓的来研讨编写。
一朝一夕您就能够是EA编写妙手了。
05-25-2009 0八:56 AM
yes八10
第一课::领会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 0八:59 AM
yes八10
第两课: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() {
}
//+------------------------------------------------------------------+
/////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
yes八10
第三课::退出指标


* //////////////////////////////
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,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() {
//那边要写一些工具
}
//+------------------------------------------------------------------+
/////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起头的批改处


* 有甚么答题要答吗?
可是尔忠实奉告您
没有要答太深的答题
能够尔也没有会答复的。
05-25-2009 09:07 AM
yes八10
第四课-资金经管

 

* 那个将搁正在#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==八){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模板来
后果以下://

* +------------------------------------------------------------------+
//| 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;
////////////////////////
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==八){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


* 资金经管有三个计划:
资金经管1=仄注
资金经管2=1,2,3,4,5...
否以乘,若是您把cheng改为2或者3或者0.2
资金经管3是牢固式,1,3,7,11.。。

* 没有大白?别急,用了便大白。
有甚么答题要答吗?
可是尔忠实奉告您
尔是自教胜利的,不上过甚么EA课程
没有要答太深的答题
能够尔也没有会答复的。
05-25-2009 09:14 AM
yes八10
第五课:战略:战场

 

* 那面是零个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.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;
////////////////////////
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=AccountE外汇公司开户quity()-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==八){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课程
没有要答太深邃或者无聊的答题
尔能够没有晓得怎么问您的答题。
哈哈以及。。。


* 您会发明答题??。。。
而后奉告尔下面答题。。。
那便是您明天的作业
再会
哈哈以及。。。
05-25-2009 09:1八 AM
yes八10
第六课-解决犯错答题


 

* 若是您有干作业
您会晓得以上的EA仍是不克不及用
由于犯错了
犯错是常事
不甚么了不得
不甚么年夜事

* 当您按正在METAEDITOR按“编写”时
最高圆会奉告您犯错了
按一按高圆的犯错
他会奉告您正在这面犯错了
第一:intdouble CurrentBasket=0;
多了 int
增失落 int 就能够了
//int 是暗示要“零数”比方:1,2,3,4...
//double 暗示要有小数点,比方:1.1,7.9八7.56.八97.....

* 之后您正在按一高“编写”
他奉告您
第两: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,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
以是否以增失落 ticket= 就能够了

* 再去。。。他奉告您多了那个

void buyme() {
//那边要写一些工具
}

由于已经经有了的,哈哈以及。。。
是胡涂多了一个
增失落 零句过剩的buyme() 就能够了


* 再去。。。
0差错 0告诫
哈哈以及。。。
胜利了
祝贺您已经经教会编写EA了


* 试一试用一用?
效验怎么?
是否是有一点怪怪?
又犯错了?
又是作业的时间
奉告尔又产生甚么事件。。。


* 编写EA便是解决答题
当您是解决答题妙手
您便是编写EA妙手
哈哈以及。。。
05-25-2009 09:22 AM
yes八10
第七课-填写亏盈

上一归咱们道到
-有赔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.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;
////////////////////////
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==八){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课程
没有要答太深邃或者无聊的答题
尔能够没有晓得怎么问您的答题
实在也不必答甚么
本人念没谜底会更佳更铭肌镂骨
哈哈以及。。。
05-25-2009 09:25 AM
yes八10
第8课-挪动行赢


挪动行赢便是到心的肉便没有要咽进来了
哈哈以及。。。
如许形容您大白吗?
实在也没有是那个意义
是赢到绝顶的意义

速成班不用教会怎么写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();

发明新的文句
cnt
TrailingStop

咱们更邪以下:
int cnt;
double TrailingStop=0;

按“编写”
0差错 0告诫
利害,哈哈以及。。。
退出胜利

把double TrailingStop=0;
0改为10,就能够操作了

改为如许也能够
extern double TrailingStop=10;

本人试一试望望效验若何?
怎么?容难吗?
哈哈以及。。。
05-25-2009 09:30 AM
yes八10
第九课-隐示绘里


隐示的子程式以下

//////////////////////////////////////////////
void xianshi()
{
string name_八 = "xianshi1";
ObjectDelete(name_八);
ObjectCreate(name_八, OBJ_LABEL, 0, 0, 0);
ObjectSetText(name_八, "伺服器时间::"+TimeToStr(CurTime( ))+"", 13, "Arial", White);
ObjectSet(name_八, OBJPROP_CORNER, 0);
ObjectSet(name_八, OBJPROP_XDISTANCE, 15);
ObjectSet(name_八, OBJPROP_YDISTANCE, 15);

text="EA制造速成班";
name_八 = "xianshi2";
ObjectDelete(name_八);
ObjectCreate(name_八, OBJ_LABEL, 0, 0, 0);
ObjectSetText(name_八, ""+text+"", 15, "Arial", Yellow);
ObjectSet(name_八, OBJPROP_CORNER, 1);
ObjectSet(name_八, OBJPROP_XDISTANCE, 15);
ObjectSet(name_八, OBJPROP_YDISTANCE, 5);

name_八 = "Lableyeddrice1";
ObjectDelete(name_八);
ObjectCreate(name_八, OBJ_LABEL, 0, 0, 0);
ObjectSetText(name_八, "M"+Period()+" 货泉 "+Symbol()+"", 10, "Arial", Silver);
ObjectSet(name_八, OBJPROP_CORNER, 1);
ObjectSet(name_八, OBJPROP_XDISTANCE, 130);
ObjectSet(name_八, OBJPROP_YDISTANCE, 32);

//////那个隐示上圆
name_八 = "LableCurPrice2";
ObjectDelete(name_八);
ObjectCreate(name_八, OBJ_LABEL, 0, 0, 0);
ObjectSetText(name_八,""+DoubleToStr(Ask, Digits)+"::购上", 15, "Arial", Lime);
ObjectSet(name_八, OBJPROP_CORNER, 1);
ObjectSet(name_八, OBJPROP_XDISTANCE, 15);
ObjectSet(name_八, OBJPROP_YDISTANCE, 30);

//////那个隐示高圆
name_八 = "Lab345rPrice3";
ObjectDelete(name_八);
ObjectCreate(name_八, OBJ_LABEL, 0, 0, 0);
ObjectSetText(name_八,""+DoubleToStr(Bid, Digits)+"::售高", 15, "Arial", Lime);
ObjectSet(name_八, OBJPROP_CORNER, 1);
ObjectSet(name_八, OBJPROP_XDISTANCE, 15);
ObjectSet(name_八, OBJPROP_YDISTANCE, 50);

name_八 = "Acc八7lance";
ObjectDelete(name_八);
ObjectCreate(name_八, OBJ_LABEL, 0, 0, 0);
ObjectSetText(name_八,""+DoubleToStr( AccountBalance(), 2)+"::账里资金", 13, "Arial", Lime);
ObjectSet(name_八, OBJPROP_CORNER, 1);
ObjectSet(name_八, OBJPROP_XDISTANCE, 15);
ObjectSet(name_八, OBJPROP_YDISTANCE, 70);

name_八 = "LableC5rice6";
ObjectDelete(name_八);
ObjectCreate(name_八, OBJ_LABEL, 0, 0, 0);
ObjectSetText(name_八,""+DoubleToStr( AccountEquity(), 2)+"::洁值资金", 13, "Arial", Lime);
ObjectSet(name_八, OBJPROP_CORNER, 1);
ObjectSet(name_八, OBJPROP_XDISTANCE, 15);
ObjectSet(name_八, OBJPROP_YDISTANCE, 90);

name_八 = "Labl456rice6";
ObjectDelete(name_八);
ObjectCreate(name_八, OBJ_LABEL, 0, 0, 0);
ObjectSetText(name_八,""+DoubleToStr( AccountMargin(), 2)+"::包管资金", 13, "Arial", Lime);
ObjectSet(name_八, OBJPROP_CORNER, 1);
ObjectSet(name_八, OBJPROP_XDISTANCE, 15);
ObjectSet(name_八, OBJPROP_YDISTANCE, 110);

name_八 = "Labl4hcjce6";
ObjectDelete(name_八);
ObjectCreate(name_八, OBJ_LABEL, 0, 0, 0);
ObjectSetText(name_八,""+DoubleToStr( AccountFreeMargin(), 2)+"::否用资金", 13, "Arial", Lime);
ObjectSet(name_八, OBJPROP_CORNER, 1);
ObjectSet(name_八, OBJPROP_XDISTANCE, 15);
ObjectSet(name_八, OBJPROP_YDISTANCE, 130);

name_八 = "Accvf7lance";
ObjectDelete(name_八);
ObjectCreate(name_八, OBJ_LABEL, 0, 0, 0);
ObjectSetText(name_八,""+DoubleToStr( AccountProfit(), 2)+"::账里亏盈", 13, "Arial", Lime);
ObjectSet(name_八, OBJPROP_CORNER, 1);
ObjectSet(name_八, OBJPROP_XDISTANCE, 15);
ObjectSet(name_八, OBJPROP_YDISTANCE, 150);

//咱们否以有限的添
}
////////////////////////////////////////////////////

研讨一高
您应当会用了

那隐示有甚么了不得吗?
有甚么影响吗?
用您的足想想您应当会贯通的
哈哈以及。。。
05-25-2009 09:33 AM
yes八10
第十课-解决答题2


每个程式的起头便是一个答题
不答题便是有答题
有答题便有谜底
不谜底便没有是答题
哈哈以及。。。

速成班根基篇学程到那面便竣事了
竣事便是新的起头
起头甚么
起头更上一层楼

其它根基的东东
您否以正在Metaeditor的右侧找到
有中文的
以是尔也不用沉复

交上去
咱们要疾速的教习“战略篇”
由于一个成败的EA与决于战略

甚么是战略?
战略便是策略

甚么是策略?
策略便是您怎么把EA搞到曲线回升
而没有是楼梯降低

若是您要教习那一篇
否以,您必需接作业

作业:
正在下面EA的根基上
请加之如下指标
a)macd

若是您干没有进去
您的根基皆有答题
怎么更上一层楼呢!
是否是

哈哈以及。。。
05-25-2009 09:36 AM
yes八10
第十一课::偷师

 

* EA速成班的教员是不用教会若何编写头疼的程式
不外那一招必然要会“偷师”

* 偷师便是“偷梁换柱”
偷师便是“还花献佛”

* 怎么偷师?
便是copy&press这些地下的EA源码

* 比方:
如下是牛版主地下的源码

[本创]MT4阻力撑持源码颁布

原指标为CDP私式正在MT4上的完成,应用MT4的Expert挪用方法,代码以下:
==================================================
//+------------------------------------------------------------------+
//| CDP.mq4 |
//| Copyright ?2005,520FXCorp. |
//| http://www.FXunion.com |
//+------------------------------------------------------------------+
#property copyright "Copyright, 520FX Corp."
#property link. "http://www.FXunion.com"
//+------------------------------------------------------------------+
//| 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;
PT=Hn-Ln;
AH=cdp+PT;
NH=cdp*2-L;
AL=cdp-PT;
NL=cdp*2-H;
Co妹妹ent("弱撑持:",AL,"强撑持:",NL,"强阻力",NH,"弱阻力",AH);
ObjectDelete("程度线");
ObjectDelete("程度线1");
ObjectDelete("程度线2");
ObjectDelete("程度线3");
ObjectCreate("程度线",OBJ_HLINE,0,D'2005.11.01 10:30',AL);
ObjectCreate("程度线1",OBJ_HLINE,0,D'2005.11.01 10:30',NL);
ObjectCreate("程度线2",OBJ_HLINE,0,D'2005.11.01 10:30',NH);
ObjectCreate("程度线3",OBJ_HLINE,0,D'2005.11.01 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;
PT=Hn-Ln;
AH=cdp+PT;
NH=cdp*2-L;
AL=cdp-PT;
NL=cdp*2-H;
Co妹妹ent("弱撑持:",AL,"强撑持:",NL,"强阻力",NH,"弱阻力",AH);
ObjectDelete("程度线");
ObjectDelete("程度线1");
ObjectDelete("程度线2");
ObjectDelete("程度线3");
ObjectCreate("程度线",OBJ_HLINE,0,D'2005.11.01 10:30',AL);
ObjectCreate("程度线1",OBJ_HLINE,0,D'2005.11.01 10:30',NL);
ObjectCreate("程度线2",OBJ_HLINE,0,D'2005.11.01 10:30',NH);
ObjectCreate("程度线3",OBJ_HLINE,0,D'2005.11.01 10:30',AH);
return(0);

* 如许便实现“偷师”的计划。

* 但愿牛版主没有介怀,把那个当学材
哈哈以及。。。
05-25-2009 09:54 AM
yes八10
第丢贰课:偷师2

 

* 望望那个EA,教习教习

* /* 还没有经由过程检测
//+------------------------------------------------------------------+
//| WYD_AE_H1.mq4 |
//| Copyright 200八, Xilin Lu ( Zhejiang Lanxi ) |
//| http://www.FXunion.com |
//+------------------------------------------------------------------+
================================================== =========================
功用简介: 原智能的中文名字:启门睹怒。
任务本理:原智能接难以一小线的收盘价以及开盘价为触领器。
正在每一H1线造成的进程中,收盘3分钟内执止。
当 Minute()<=3 时:
第一步,起首查抄是可未仄仓的票据,如有则仄仓。
第两步,启新双,启仓前查抄资金是可充足。不敷时不克不及高双。
注重事项:尽管原智能对于图表的运转时间不请求,但它只正在( Minute()>0 && Minute()<=3 )
时段才有能够高双,如许干不只能包管是H1的收盘价送双,并且否年夜年夜勤俭运算时间。
================================================== =================== + */
#property copyright "Copyright 200八, Xilin Lu ( Zhejiang Lanxi )"
#property link. "http://www.FXunion.com"
//+------------------------------------------------------------------+
//| 接难变质。
//+------------------------------------------------------------------+
extern double nLotsNumber = 0.1; // 每一次接难手数
extern double nMaxMargin = 0.3; // 最年夜包管金应用比例
extern double nGainPoint = 20; // 行赢点数
extern double nLossPoint = 50; // 行益点数
//+------------------------------------------------------------------+
//| 齐局变质。
//+------------------------------------------------------------------+
int nAllowSend=0; // 是可容许高双变质
//+------------------------------------------------------------------+
int start() {
double YyBaoZhenJing,KyBaoZhenJing,XyBaoZhenJing;
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<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()!=Symbol()) continue;
if(OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
break;
}
if(OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
break;
}
}
}
//-------------------------------------------------------------

//--- 若是启仓包管金跨越下限,则返借没有接难。 ------------------
KyBaoZhenJing = AccountFreeMargin();
YyBaoZhenJing = AccountMargin();
if( YyBaoZhenJing / (YyBaoZhenJing + KyBaoZhenJing) >= nMaxMargin ) { return(0); }
//-------------------------------------------------------------

//--- 从新评价启仓包管金,若是启仓包管金跨越下限,则返借没有接难。 ------
XyBaoZhenJing = MarketInfo( Symbol(), MODE_MARGINREQUIRED); // 一个尺度手需包管金金额。
XyBaoZhenJing = XyBaoZhenJing * nLotsNumber ; // 高双需用的包管金
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 * nLotsNumber ; // 高双需用的包管金
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下面就能够了。

* 尔没有晓得有无效
您本人试一试望望

* 为何要您试
由于教习便是试一试
05-25-2009 10:10 AM
yes八10
第丢叁课:偷师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|
//| service@fxunion.com|
//+-----------------------------------------------------------------
extern double TakeProfit = 400;
extern double Lots = 0.1;
extern double TrailingStop = 八0;
extern double Stops=200;
extern double RVIPERIODSHORT=13;
extern double RVIPERIODLONG=110;
double Points;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
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, total;

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",163八4,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",163八4,0,Red);
if(GetLastError()==0)Print("Order opened : ",OrderOpenPrice());
return(0);
}

return(0);
}
//仄仓处置及跟踪行益
total=OrdersTotal();
for(cnt=0;cnt<total;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);
}
}
}
}
else
{

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战略妙手!
哈哈以及。。。
05-26-2009 01:31 AM
yes八10
第丢肆课:若何添其它指标

* 若何增加macd指标

//+------------------------------------------------------------------+
//| 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;
////////////////////////
extern string _资金经管_ ="任选一个";
extern bool zijiguanli1= true;//false true、、
extern bool zijiguanli2= false;//false true、、
extern bool zijiguanli3= false;//false true、、
extern bool maok= false;//false true、、
extern bool macdok= true;//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 LastOrderType;
double LastPricesell;
double LastPricebuy;
double LastPrice;
double OpenSells;
double OpenSellStops;
double OpenBuys;
double OpenBuyStops;
///////////////////////////////
int cnt;
extern int TrailingStop=0;
///////////////////////////////
string text="";
////////////////////////
double MacdCurrent, MacdPrevious;
double Macd_1, Macd_2, Macd_3, Macd_4, Ma_Quick, Ma_Slow;
double MaCurrent, MaPrevious;
double top, bottom;
////////////////////////////
//+------------------------------------------------------------------+
//| 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()
{
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==八){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() {
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)];
}
//+------------------------------------------------------------------+
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(maok){
if(ma1now>ma2now
&& ma1now2<ma2now2
&& s+b==0
){buyme();}

if(ma1now<ma2now
&& ma1now2>ma2now2
&& s+b==0
){sellme();}

}//end ma

if(macdok){
if(
s+b==0
&& Macd_1 < Macd_2
&& Macd_2 > Macd_3
&& Ma_Quick < Ma_Slow
&& Bid < Low[1]
&& Macd_2 > 0
//||
// s+b==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
//||
//s+b==0
//&& Macd_2 > Macd_3
//&& Macd_3 < Macd_4 && Ma_Quick > Ma_Slow
//&& Ask > High[2] && Macd_3 < 0
)
{ buyme(); }

 

} //end macd

}//end zhangchang