1、MT4 自带 EA(MA 析
2、MT4 自带 EA(MACD 分析
)解析与实战分
)解析与实战
1、MT4 自带 EA(MA
析
)解析与实战分
一、均线穿越交易系统 EA
详解
MT4 平台自带了一个自动交易的 EA 指标,那就是 Moving Average ,下面详细解释该 系统每条语句的功能说明,以便深入认识 EA 的编程内核。
//+------------------------------------------------------------------+ //| Moving Average.mq4 | //| Copyright ?2005, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ #define MAGICMA 20050610
//定义本 EA 操作的订单的唯一标识号码,由此可以实现在同一账户上多系统操作,各操作 EA 的订单标识码不同,就不会互相误操作。凡是 EA 皆不可缺少,非常非常重要! extern double Lots
extern double MaximumRisk extern double DecreaseFactor extern double MovingPeriod extern double MovingShift
= 0.1; //每单的交易量
= 0.02;//本系统最大风险系数,即可以动用总资金的 2% = 3; //下跌因素个数
= 12; //均线的计算周期=12 根 K 线;
= 6; //均线在 K 线图中向右显示的偏移量=6 根 K 线;
//extern 确定从外部程序输入的变量, 会直接显现输入数据窗口。数列本身不能作为外部变
量。
注意:iMA 中的 MovingShift(均线偏移量)是指均线指标在图上绘制时向左、右移动的 K
线个数,主要为了使图中结果更好看,并不会对 MA 的计算数值产生变化。其中,该参数 为正时,代表向右移动;为负值,则代表向左移动。
//+------------------------------------------------------------------+ //| Calculate open positions
自定义函数(返回-整数型数据) 仓单查询与统计 | //+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)//函数作用,计算当前持仓单的数量 {
int buys=0,sells=0;
//定义两个局部变量,整数型,buys——多单数,sells——空单数,用于订单的统计 //----
for(int i=0;i //计次循环(i=0 至订单数目,i=i+1)-循环检测当前的订单队列 { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; //如果 没有本系统交易的仓单类型,则跳出循环 if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA) //如果 仓单货币对是当前货币对 且 仓单编号是本系统编号 时 (判断这个订单是不是当前 EA 操作的,避免 EA 误操作其他程序控制的持仓单) { if(OrderType()==OP_BUY) buys++; //如果 仓单类型=多单,则:在多单数上加 1; if(OrderType()==OP_SELL) sells++; //如果 仓单类型=空单,则,在空单数上加 1。 } } //---- return orders volume-返回订单数目 if(buys>0) return(buys); //如果 多单>0,则返回(多单数) else return(-sells); //否则,返回(-空单数) //本函数返回查询计算结束时的持仓单的个数.这种模式返回是假设不存在锁单的。 }