2.9.1 简单EA程序源代码

2.9.1 简单EA程序源代码



在订单编号储存在执行程序中之前,可以将BuyTicket设为总体变量,即为startt()函数内的静态变量。添加Usepoint和UseSlippage为全局变量,计算这些数值。init( )函数首先运行。而PipPoint( )和GetSlippage( )函数将运算返回值到全局变量。使用这先函数前,必须参考点位或滑点,在其他EA程序中也是一样。

接下来的start( )函数,为主要程序执行。iMA( )函数计算移动平均FastMA变量保存10期移动平均线,前面为使用FastMAPeriod。SlowMA 20期移动平均线则使用了SlowMAPeriod。一切设置为默认值(无移位,简单的移动平均线的收盘价计算)。

我们使用IF运算符来定义我们的开单情况。如果目前的10期的移动平均(FastMA)大于20期的移动平均(在SLowMA),并BuyTicket等于"0";在以上这些情况之下将会开启新仓。

在开新的多单时,我们会平仓目前的空单。使用OrderSelect( )确认当前的SellTicket。如果该订单的平仓时间为"0"( 这表示这一命令尚未执行),和SellTicket大于"0"(SellTicket可能为有效) ,我们会继续给予空单指示。检索多笔空单和目前平仓的Ask价格。然后再使用OrderClose( )平仓空单。

接下来,运算当前Ask价格来给予OpenPrice变量,这是我们的买单开仓价格。先检查开盘价和计算止损、停利的关系,用以确保止损或停利值。然后,将使用Ordersend( )函数并储存交易单编号在BuyTicket。最后清除SellTicket值,确保另一个卖单状态为有效。

空单命令块和多单命令块视为相同逻辑。我们先平仓多单,并使用Bid价来当ClosePrice。止损和利润的计算则是相反的。start( )函数结束与回报。定制PipPoint( )和GetSlippage( )函数被定义在start( )函数之后。