编写和测试一个简单的基于交易量的EA
让我们考虑开发一个EA,使用交易量和时间区间作为额外的市场数据和交易限制。成交量激增使我们能够发现市场参与者做出的重要决定。限制EA服务器操作时间的能力允许检测交易量非常重要的区域。让我们编写EA并执行几个测试和全面分析,以得出关于系统的结论。系统本身只需要深入研究市场参数并研究它们之间的关系。该系统主要用于显示每个柱的参数都有其自身的权重,并有助于系统的整体质量。EA本身附在文章中,因此每个人都可以在必要时使用和修改它。
让我们从熟知的用于操作仓位的开发库开始:
#include <Trade\PositionInfo.mqh> #include <Trade\Trade.mqh> CPositionInfo m_position=CPositionInfo();// trade position object CTrade m_trade=CTrade(); // trading object
它们主要用于简化代码,我相信,我不需要解释他们的操作原理,这个网站有很多关于这方面的资料。
接下来,定义能够切换操作模式的编号列表:
enum MODE_CALCULATE { MODE_1=0, MODE_2=1, MODE_3=2, MODE_4=3 };
这样做的目的是期望有几种模式来确定最有效的市场等式。一开始,关于我们想利用什么物理性质应该有一些一般性的想法,但是我们不知道哪个方程对我们的情况最有效。在当前的EA中,我实现了四个等式变体。我们将看看,哪种选择以最好的方式描述了市场。产生太多的模式是没有意义的,如果我们的假设是正确的,我们一定会看到这一点。我通常只做不超过四种模式。
接下来,定义输入参数及其目标:
input MODE_CALCULATE MODEE=MODE_1;//Mode input int TradeHour=0;//Start Trading Hour input int TradeMinute=1;//Start Trading Minute input int TradeHourEnd=23;//End Trading Hour input int TradeMinuteEnd=59;//End Trading Minute input bool bWriteValuesE=false;//Log input int CandlesE=50;//Bars To Analyse input int Signal=200;//Signal Power input int PercentE=52;//Percent Signals To One Side input bool bInvert=false;//Trade Invert input int SLE=3000;//Stop Loss Points input int TPE=3000;//Take Profit Points input double Lot=0.01;//Lot input int MagicF=15670867;//Magic