-- Moving Average Crossover with Closing Confirmation; @SETVALUETEXTMODE('Text'); @SETNAME('CSMAx',True); @SHOWYGRIDLINE(True); --Time period for full signals; TimeOK := TIME>=TimeIn & TIME<=TimeOut; -- Moving averages; MAFast : MA(C,MAFp),StyleSolid,ColorGreen,Width1; MASlow : MA(C,MASp),StyleSolid,ColorRed,Width1; -- Signal calculations; B1 := REF(MAFast >= MASlow,1) & MAFast >= MASlow; B2 := CLOSE > VALUEWHEN( CROSS(MAFast, MASlow), MAX( O, C ), 1 ); B := B1 & B2; S1 := REF(MAFast < MASlow,1) & MAFast < MASlow; S2 := CLOSE < VALUEWHEN( CROSS(MASlow, MAFast), MIN( O, C ), 1 ); S := S1 & S2; -- Remove excessive signals; BarsLastB := REF(HHVBARS(B,10000),1); BarsLastS := REF(HHVBARS(S,10000),1); CanB := BarsLastS < BarsLastB; CanS := BarsLastB < BarsLastS; Buy := B & CanB & TimeOK; Short := S & CanS & TimeOK; -- Draw labels; DRAWNUMBER(Buy,L-100,C,'f0'),Label0,ColorGreen; DRAWNUMBER(Short,H+100,C,'f0'),Label0,ColorRed; DRAWTEXT(REF(Buy,1),L-200,'Buy',1),Label2,VCenter,Bottom; DRAWTEXT(REF(Short,1),H+200,'Short',2),Label1,VCenter,Top;