EA是以MQL4语言为基础的,官方解释说MQL4语言是基于C语言所开发,所以很多用法都和C语言相同,但是也有一些区别例如:
没有运算地址;
没有 do ... while 语句;
没有 goto ... 语句;
没有 [条件][表达式 1]:[表达式 2] 语句;
没有复合数据类型 (结构);
复合负值是不允许的,例如:val1=val2=0; arr[i++]=val; cond=(cnt=OrdersTotal)>0; 等等;
逻辑表达式的计算完成前不可以提前终止。
所以如果有C语言基础的话,上手是很快的,目前网上关于MQL4的教材很少,很多都是类似于字典一样的,并不解释语法以及用法,仅仅将所有函数解释。
从自定义指标中不能调用OrderSend()、OrderClose()、OrderCloseBy()、OrderDelete()和OrderModify()交易函数。
本组交易函数应用于智能交易和脚本中。只有智能交易设置中的“允许实时交易”属性被选中,才能调用交易函数。
为了在智能交易和脚本中进行交易,在程序交易环境(智能交易和脚本的自动交易的环境)中,只能为它提供一个线程。这就是为什么,如果这个交易环境被一个智能交易操作占用,因此会出现146错误(ERR_TRADE_CONTEXT_BUSY),其他智能交易或脚本在此时就不能调用成功。为了能确定是否有交易在进行,可使用 IsTradeAllowed() 函数检测。为了清除交易环境下访问共享,我们能够使用个基于全局变量的交易信号,其值可以使用 GlobalVariableSetOnCondition() 函数改变。
MQL4交易处理函数 如:OrderSelect 选择订单 ,OrderClose() 平仓
http://www.myeatrade.com/zh/412/
MQL4价格数据相关函数 如: iLowest
http://www.myeatrade.com/zh/409/
MQL4交易函数常见错误代码及处理意见 如:ERR_NO_ERROR 0 交易成功。
http://www.myeatrade.com/zh/414/
OrderSelect() – 选择订单
OrderClose() – 平仓
OrderCloseBy() – 相反头寸平仓
OrderClosePrice() – 获取订单平仓价格
OrderCloseTime() – 获取订单平仓时间
OrderComment() – 获取订单注释
OrderCommission() – 获取订单佣金数额
OrderDelete() – 删除挂单
OrderExpiration() – 获取挂单有效时间
OrderLots() – 获取订单交易手数
OrderMagicNumber() – 获取订单魔术编号
OrderModify() – 修改订单
OrderOpenPrice() – 获取订单开仓价格
OrderOpenTime() – 获取订单开仓时间
OrderPrint() – 打印订单信息
OrderProfit() – 获取订单盈利金额
OrderSend() – 发出订单
OrdersHistoryTotal() – 获取历史订单总数
OrderStopLoss() – 获取订单止损值
OrdersTotal() – 获取订单总数
OrderSwap() – 获取订单掉期值
OrderSymbol() – 获取订单交易品种
OrderTakeProfit() – 获取订单止盈值
OrderTicket() – 获取订单的订单编号
OrderType() – 获取订单交易类型
参照:http://www.myeatrade.com/zh/413/#OrderTicket