(完整版)外汇均线金叉死叉ea实例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//| MACross_ea.mq4 |

//| shawnyau |

//| |

//+------------------------------------------------------------------+

#property copyright "Shawn Yau"

extern double Lots = 0.1; //默认交易单位

extern int StopLoss = 30; //止损

extern int TakeProfit = 30; //止赢

extern int Magic_Number = 8899; //Magic_Number是用来标识这个EA的唯一性的,简单来说,就是这个EA的身份证

extern int FasterMA = 5; //均线1的周期

extern int SlowerMA = 25; //均线2的周期

extern int Trade_Bar = 1; //下单的时机,如果为1,表示等待当前的K线完成,下一根K 线刚出现的时候才下单;如果为0表示只要当前的价格

//满足条件了就马上下单

int last_t = 0; //这个是用来避免重复下单

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

int init() //这个是初始化函数,只会在EA刚加载到图表上的时候运行一次,之后就不起作用了

{

//----

//----

return(0);

}

//| expert deinitialization function |

//+------------------------------------------------------------------+

int deinit() //反初始化函数,用处是在删除EA的时候运行一次,做一些清理性的工作,例如把所画的线、箭头等从图表上删除掉

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

//----

///////////////////////////////////////////////////////////////////

////////定义几个变量,从名字也可以很容易看出其代表的含义了:FasterMANow表示均线1当前的值、SlowerMANow表示均线2当前的值、

///////FasterMAPrevious表示均线1的前值、SlowerMAPrevious表示均线2的前值;均线金叉,其实就是表示当均线1的前值小于均线2的前值,

///////且均线1的当前值大于均线2的当前值。这样描述我想应该能明白了吧:-)

double FasterMANow, SlowerMANow, FasterMAPrevious, SlowerMAPrevious;

////////////////////////////////////////////////////////////////////////////

//////////下面是给各个变量赋值,iMA就是均线函数,里面的各个参数可以在我在论坛发的中文文档上查到说明的

///////////////////////////////////////////////////////////////////////////

FasterMANow = iMA(NULL, 0, FasterMA, 0, MODE_SMA, PRICE_CLOSE, Trade_ Bar);

SlowerMANow = iMA(NULL, 0, SlowerMA, 0, MODE_SMA, PRICE_CLOSE, Trade

_Bar);

FasterMAPrevious = iMA(NULL, 0, FasterMA, 0, MODE_SMA, PRICE_CLOSE, Tr ade_Bar+1);

SlowerMAPrevious = iMA(NULL, 0, SlowerMA, 0, MODE_SMA, PRICE_CLOSE, T rade_Bar+1);

//////////////////////////////////////////////////////

///////////下面开始判断是否发生金叉了

///////////////////////////////////////////////////////

if ((FasterMANow > SlowerMANow) && (FasterMAPrevious <= SlowerMAPreviou s)) {

if ((TotalOrders(Magic_Number)==0) && (Time[0]>last_t)) ///如果当前的EA还没有下单

{

RefreshRates(); ///刷新市场报价

////////////////////////////////////////

///下单都是用OrderSend()函数来进行的,这是个系统函数,详细说明可以在文档里面查到

OrderSend(Symbol(), OP_BUY, Lots, NormalizeDouble(Ask,Digits), 3, Normal izeDouble(Ask-StopLoss*Point,Digits),

NormalizeDouble(Ask+TakeProfit*Point,Digits), "", Magic_Number, 0, Blu e);

last_t = Time[0];

return (0);

}

}

////////////////////////////////////////////////////////////

///如果没有发生金叉,则下面开始判断是否发生死叉

//////////////////////////////////////////////////////////////

else if ((FasterMANow < SlowerMANow) && (FasterMAPrevious >= SlowerMA Previous)) {

相关文档
最新文档