外汇MT4软件 EA编程制作速成班――基础篇
# 什么是MT4?
我就当你了解什么是MT4了
MT4就是META. TRADER 4
# 什么是EA?
我也当你了解什么是EA了
EA 就是 Expert Adviser
EA 就是智能交易系统
智能教育系统就是:
-软件自己判断下订单
-软件自己判断提成利润
-软件自己判断砍仓止输
# 什么是速成班?
就是你在很短很快的时间内就可以学会如何编写EA
是的,快则8个学习小时
慢则24个学习小时
# 什么叫“易学难精”?
就是你很快的就上手,难在成为厉害的高手。
这需要时间慢慢的去研究编写。
久而久之你就可以是EA编写高手了。
05-25-2009 08:56 AM
yes810
第一课::了解EA的形式
* 以下就是EA的编写形式//
+------------------------------------------------------------------+
//| MT4-EA制作速成班.mq4 |
//| Copyright ?2007, MetaQuotes Software Corp. |
//| http://www.FXunion.com |
//+------------------------------------------------------------------+
#property copyright "Copyright ?2007, MetaQuotes Software Corp."
#property link. "http://www.FXunion.com"
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
* //+------------------------------------------------------------------+
//| MT4-EA制作速成班.mq4 |
//| Copyright ?2007, MetaQuotes Software Corp. |
//| http://www.FXunion.com |
//+------------------------------------------------------------------+
这个是在上面的垃圾
写与不写都无所谓
我们就不用理他
* #property copyright "Copyright ?2007, MetaQuotes Software Corp."
#property link. "http://www.FXunion.com"
这个也是在上面的垃圾
写与不写都无所谓
我们也不用理他
* //+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//以后可能有用到
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//以后可能有用到
//----
return(0);
}
这两个很少用到。高高手才会用
速成班的话,这个可以不用理他。
放在一边先,以后才学怎样用它。
* //+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
//主程式
//----
return(0);
}
//+------------------------------------------------------------------+
这个就是EA开始操作的重要部分
以上的EA的编写形式我们改成如下:
* //+------------------------------------------------------------------+
//| MT4-EA制作速成班.mq4 |
//| Copyright 2007, MT4-EA制作速成班. |
//| http://www.FXunion.com|
//+------------------------------------------------------------------+
#property copyright "Copyright 2007, MT4-EA制作速成班."
#property link. "http://www.FXunion.com"
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
/以后可能有用到
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
/以后可能有用到
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
//主程式
//----
return(0);
}
//+------------------------------------------------------------------+
* 什么是“.mq4”?
EA制作好了就save成.mq4的文件
这文件是可以修改的
* 什么是“.ex4”?
EA制作好了
按“编写”就会自动save成.ex4的文件
这文件是不可以被修改的
这文件是加密的
可以出售的文件。
* 有什么问题要问吗?
但是我告诉你
不要问太深的问题,我是不会的。
05-25-2009 08:59 AM
yes810
第二课:EA重要部分
* 回到EA重要部分
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
//主程式
//----
return(0);
}
//+------------------------------------------------------------------+
* 我们要知道EA是由上面往下读的
所以我们在编写方面要有逻辑思考
以下是速成班编写的形式
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
MoneyManagement();
macd();
ma();
zhangchang();
buyme();
sellme();
xianshi();
//----
return(0);
}
//+------------------------------------------------------------------+
void MoneyManagement() {
}
//+------------------------------------------------------------------+
void macd() {
}
//+------------------------------------------------------------------+
void ma() {
}
//+------------------------------------------------------------------+
void zhangchang() {
}
//+------------------------------------------------------------------+
void buyme() {
}
//+------------------------------------------------------------------+
void sellme() {
}
//+------------------------------------------------------------------+
void buyme() {
}
//+------------------------------------------------------------------+
void xianshi() {
}
//+------------------------------------------------------------------+
/////end
* // 这两划代表右边的不要读
也可以说是注解
注意:EA不会读中文符号。比如这个“”
这个就可以 ""
* 我们可以完整他
//+------------------------------------------------------------------+
//| MT4-EA制作速成班.mq4 |
//| Copyright 2007, MT4-EA制作速成班. |
//| http://www.FXunion.com|
//+------------------------------------------------------------------+
#property copyright "Copyright 2007, MT4-EA制作速成班."
#property link. "http://www.FXunion.com"
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//以后可能有用到
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//以后可能有用到
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
//主程式
MoneyManagement();//资金管理
macd();//指标管理
ma();//指标管理
zhangchang();//战场管理
buyme();//买上
sellme();//买下
xianshi();//显示管理
//----
return(0);
}
//+------------------------------------------------------------------+
void MoneyManagement() {
//子程式
//这边要写一些东西
}
//+------------------------------------------------------------------+
void macd() {
//子程式
//这边要写一些东西
}
//+------------------------------------------------------------------+
void ma() {
//子程式
//这边要写一些东西
}
//+------------------------------------------------------------------+
void zhangchang() {
///子程式
//这边要写一些东西
}
//+------------------------------------------------------------------+
void buyme() {
//子程式
//这边要写一些东西
}
//+------------------------------------------------------------------+
void sellme() {
//子程式
//这边要写一些东西
}
//+------------------------------------------------------------------+
void buyme() {
//子程式
//这边要写一些东西
}
//+------------------------------------------------------------------+
void xianshi() {
//子程式
//这边要写一些东西
}
//+------------------------------------------------------------------+
/////end
* 如果你在上面加这个xianshi2();
下面就加这个
//////////////////////////
void xianshi2() {
//这边要写一些东西
}
////////////////////////////
可以任意无限的加。。。
* 有什么问题要问吗?
但是我老实告诉你
不要问太深的问题,我是不会回答的。
05-25-2009 09:03 AM
yes810
第三课::加入指标
* //////////////////////////////
void ma()
{
ma1now = iMA(NULL,0,ma1,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
yes810
第四课-资金管理
* 这个将放在#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=10){aa=66;}
if(CurrentBasketma2now
&& ma1now2ma2now
&& ma1now2ma2now
&& ma1now20) { 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:18 AM
yes810
第六课-解决出错问题
* 如果你有做功课
你会知道以上的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,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
yes810
第七课-填写盈亏
上一回我们讲到
-有赚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; cnt0) { 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
yes810
第八课-移动止赢
移动止赢就是到口的肉就不要吐出去了
哈哈和。。。
这样形容你明白吗?
其实也不是这个意思
是赢到尽头的意思
速成班不必学会怎样写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()=3时重新置为可下单
//-------------------------------------------------------------
//-- 检查开仓信息于,若有则平仓 -------------------------------
total=OrdersTotal();
if( total != 0 )
{
for(cnt=0;cnt= 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
yes810
第拾叁课:偷师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 = 80;
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;
<p>if(Bars
当前位置:首页 > 大汇谈 > 外汇MT4软件 EA编程制作速成班――基础篇
上一篇:深度解密:为什么绝大多数的EA最终还是亏钱?
下一篇:操盘神话均线系统-免费外汇EA下载