3.5 总结

3.5 总结


我们要把本节中讨论过的所有功能,都加进第二章"建立的简单expert advisor程序"中。把交易单修改、停损价位验证、交易背景检查、重载预定义变量以及仓位大小验证加进EA 。我们的档案如下:

我们已为stdlib. rnqh 文件增加了#include 语法,该文件为错误处理程序内含ErrorDescription(  )功能。对于错误代码,我们替仓位大小增加了三个外部变量和全局变量。

下面的代码出现在start( )功能的开头:

仓位计算和验证码,已加至我们启动功能的开头。由于已事先知道停损价位,把它放在这里和放在别的地方一样好。剩余的代码就是修改过的市价买单常规:

剩下的代码包含下市价卖单区块,以及PipPoint( )和GetSlippage ( )功能。你可在附录B 中检视此expe此advisor 的全部代码。

值得注意的是,每次交易前,我们都加上了IsTradeContextBusy ( )功能。我们要在尝试交易前,确保交易线程没在使用中。

在每次引用买卖价变量之前使用RefreshRates ( )功能,确保所用的价格永远是最新的。

我们以OrderClose ( )选择之前的卖单并将其平仓来开始。功能若失败,错误处理区块就会执行。接着,以OrderSend ( )开市价买单。功能若失败,错误处理区块就会执行。反之,则继续进到交易单修改区块。

以OrderSelect ( )选择刚下的交易单,把交易单的入单价分配给OpenPrice( 入单价)变量。然后计算停损价位和停损价格的上下限。接着,计算停损价与获利价并进行验证,最后用OrderMod均()修改交易单。最后的错误处理区块是处理交易单修改的错误。

修改挂单交易的停损买单源代码:

用了OrderClose( )功能后,以OrderDelete( )增加代码来删除挂单。使用哪些功能平仓取决于之前卖单的交易单类型。

下面的代码和市价单代码的主要区别是,我们没有交易单修改区块。没必要为挂单交易单独设停损与获利。因此,用OrderSend ( )下单之前,我们会计算停损与获利。

首先,我们计算停损价位的上限。然后计算并验证挂单价,并将挂单价储存在PendingPrice 中。接着,以挂单价重新计算UpperStopLevel ,并计算LowerStopLevel 。请注意:验证停损价与获利价时无须使用买卖价或找出价差。最后,我们使用OrderSend( )来下挂单,连同停损与获利一起设定。我们有标准错误处理功能来处理下单错误。

尽管有额外的代码,但是这些expert advisor 使用的是同样的策略(同第二章的挂单策略) 。此代码能提供额外的功能计算,并验证仓位大小、停损价获利价及挂单价。我们还增加了交易内容检查和错误处理代码。下一章,我们将会学习如何建立功能,以重复使用并简化代码。