@ file : Suppress (" unused ") Ċ Ċ package Ġcom . ps ch l up . ta . strategy Ċ Ċ import Ġcom . ps ch l up . ta . indicators . Indicator Ċ Ċ /** Ċ Ġ* ĠRepresents Ġone Ġor Ġmore Ġconditions Ġthat Ġevaluate Ġto Ġa Ġtrue / false Ġresult Ġsignal . Ċ Ġ* Ċ Ġ* ĠExample : Ċ Ġ* ĠĠĠ ĠSignal Ġentry Signal Ġ= Ġem a 8 . cros sed Over ( s ma 2 1 ). and ( s ma 2 1 . is Over ( s ma 3 0 )). and ( slope . is Positive ()); Ċ Ġ*/ Ċ fun Ġinterface ĠSignal Ġ{ ĊĠ Ġfun Ġvalue ( index : ĠInt ): ĠBoolean ĊĊĠ Ġoperator Ġfun Ġget ( index : ĠInt ): ĠBoolean Ġ= Ġvalue ( index ) Ċ } Ċ Ċ val ĠSignal . latest Value : ĠBoolean Ġget () Ġ= Ġthis [ 0 ] Ċ Ċ // Ġ================================================= ========== Ċ // ĠBoolean Ġoperations Ġused Ġto Ġcombine Ġmultiple Ġsignals . Ċ // Ġ================================================= ========== Ċ Ċ /** ĠCombin es Ġthe Ġvalue Ġof Ġthe Ġsignal Ġwith Ġthe Ġspecified Ġsignal Ġusing Ġthe Ġlogical ĠAND Ġoperation . Ġ*/ Ċ infix Ġfun ĠSignal . and ( other Signal : ĠSignal ): ĠSignal Ġ= ĠSignal Ġ{ Ġindex Ġ-> Ġthis [ index ] Ġ&& Ġother Signal [ index ] Ġ} Ċ Ċ /** ĠCombin es Ġthe Ġvalue Ġof Ġthe Ġsignal Ġwith Ġthe Ġspecified Ġsignal Ġusing Ġthe Ġlogical ĠOR Ġoperation . Ġ*/ Ċ infix Ġfun ĠSignal . or ( other Signal : ĠSignal ): ĠSignal Ġ= ĠSignal Ġ{ Ġindex Ġ-> Ġthis [ index ] Ġ|| Ġother Signal [ index ] Ġ} Ċ Ċ /** ĠIn verts Ġthe Ġvalue Ġof Ġthe Ġsignal . Ġ*/ Ċ fun ĠSignal . inverted (): ĠSignal Ġ= ĠSignal Ġ{ Ġindex : ĠInt Ġ-> Ġ! this [ index ] Ġ} Ċ Ċ operator Ġfun ĠSignal . not (): ĠSignal Ġ= Ġinverted () Ċ Ċ // Ġ================================================= ========== Ċ // Ġ ĠBasic Ġsignal Ġindicator Ġexpressions . Ċ // Ġ================================================= ========== Ċ Ċ infix Ġfun ĠIndicator . is Over ( other Indicator : ĠIndicator ): ĠSignal Ġ= ĊĠ ĠSignal Ġ{ Ġindex Ġ-> Ġvalue At ( index ) Ġ> Ġother Indicator . value At ( index ) Ġ} Ċ Ċ infix Ġfun ĠIndicator . is Over ( fixed Value : ĠDouble ): ĠSignal Ġ= ĠSignal Ġ{ Ġindex Ġ-> Ġvalue At ( index ) Ġ> Ġfixed Value Ġ} Ċ Ċ val ĠIndicator . is Positive : ĠSignal ĊĠ Ġget () Ġ= ĠSignal Ġ{ Ġindex Ġ-> Ġvalue At ( index ) Ġ> Ġ 0 . 0 Ġ} Ċ Ċ val ĠIndicator . is Negative : ĠSignal ĊĠ Ġget () Ġ= ĠSignal Ġ{ Ġindex Ġ-> Ġvalue At ( index ) Ġ< Ġ 0 . 0 Ġ} Ċ Ċ infix Ġfun ĠIndicator . is Under ( other Indicator : ĠIndicator ): ĠSignal Ġ= ĊĠ ĠSignal Ġ{ Ġindex Ġ-> Ġvalue At ( index ) Ġ< Ġother Indicator . value At ( index ) Ġ} Ċ Ċ infix Ġfun ĠIndicator . is Under ( fixed Value : ĠDouble ): ĠSignal Ġ= ĠSignal Ġ{ Ġindex Ġ-> Ġvalue At ( index ) Ġ< Ġfixed Value Ġ} Ċ Ċ infix Ġfun ĠIndicator . cros sed Over ( other Indicator : ĠIndicator ): ĠSignal Ġ= ĠSignal Ġ{ Ġindex Ġ-> ĊĠ Ġ( value At ( index ) Ġ> Ġother Indicator . value At ( index ) ĊĠĠĠĠĠ Ġ&& Ġvalue At ( index Ġ+ Ġ 1 ) Ġ<= Ġother Indicator . value At ( index Ġ+ Ġ 1 )) Ċ } Ċ Ċ infix Ġfun ĠIndicator . cros sed Over ( fixed Value : ĠDouble ): ĠSignal Ġ= ĠSignal Ġ{ Ġindex Ġ-> ĊĠ Ġ( value At ( index ) Ġ> Ġfixed Value ĊĠĠĠĠĠ Ġ&& Ġvalue At ( index Ġ+ Ġ 1 ) Ġ<= Ġfixed Value ) Ċ } Ċ Ċ infix Ġfun ĠIndicator . cros sed Under ( other Indicator : ĠIndicator ): ĠSignal Ġ= ĠSignal Ġ{ Ġindex Ġ-> ĊĠ Ġ( value At ( index ) Ġ< Ġother Indicator . value At ( index ) ĊĠĠĠĠĠ Ġ&& Ġvalue At ( index Ġ+ Ġ 1 ) Ġ>= Ġother Indicator . value At ( index Ġ+ Ġ 1 )) Ċ } Ċ Ċ infix Ġfun ĠIndicator . cros sed Under ( fixed Value : ĠDouble ): ĠSignal Ġ= ĠSignal Ġ{ Ġindex Ġ-> ĊĠ Ġ( value At ( index ) Ġ< Ġfixed Value ĊĠĠĠĠĠ Ġ&& Ġvalue At ( index Ġ+ Ġ 1 ) Ġ>= Ġfixed Value ) Ċ } Ċ