6.4.3 指标的开启、关闭
你可以前一节的AND/OR为例,将一个指标打开或关掉。你的EA使用了多重指标,而你又想能将这些指标打开或关闭,这里将告诉我们如何做。首先,我们先执行一个外部布尔变量作为一个切换开关。我们以随机指标作为例子:

我们为指标定义两个条件集合:“on”状态和“off”状态。on状态由on/off变量设定为真,并且订单呈现开启条件所组成。off状态则简单地由on/off变量设定为假所组成。

陈述句(UseStochastic==true&&Kline>Dline)是我们的“on”状态。若将UseStochastic外部变量设定为真,且交易条件Kline>Dline评估为真,则随机订单条件将为真。
UseStochastic==false是我们的“off”状态。若UseStochastic外部变量设定为假,则当UseStochatic==false评估为真时,(UseStochastic==true&&Kline>Dline)评估为假。
因为on和off状态是由OR操作数连在一起的,必须两个当中的其中一个为真才能使整个陈述句为真,所以只要“指标打开且订单配制条件为有效”或“指标关掉”。则整个陈述句将为真,且任何剩余订单条件将会被评估。
让我们加上第二个交易条件到我们的随机条件中——移动平均线交叉:

在这个范例中,我们已加上移动平均交叉条件,FastMA>SlowMA。注意到我们加了另一个圆弧,集合在随机条件之外,因为整个圆括弧内的陈述句需先评估。
首先,我们评估圆括弧最内侧集合的陈述句:(UseStochastic == true && Kline > Dline)。若是UseStochastic参数被设定为真,且Kline > Dline评估为真,则第一部分的陈述句为真:

条件UseStochastic==false评估为假。
然后我们来看OR操作数,因为其中已有一个条件为真,所以整个随机条件评估为真:

若FastMA > SlowMA评估为真,则整个交易条件为真,订单被开出。若是假,则陈述句评估为假,订单不会开出。
现在,若是随机交易条件是假会怎样呢?若UseStochastic设定为真,而Kline>Dline评估为假,则整个交易条件变为假:

无论FastMA>SIowMA评估结果为何,整个交易条都件为假。
现在来看看若是UseStochastic被设定为假的情况。陈述句(UseStochatic==true && Kline > Dline)评估为假:

因为陈述句UseStochastic==false为真,所以随机条件评估为真:

这意味着,若FastMA > SlowMA也被评估为真,则订单将被开出。这种情况下,随机条件甚至不用考虑,只要评估指标的on/off状态即可。