Hello, I have this simple question:

I want to find a candle that cross above ema 20, and count how many time that condition happend after the last time ema 100 is cross above ema 200 ( my code error because it counts even after ema 100 cross below ema 200)

so the sequence should be like this =

ema100 cross below ema200

-counting is zero

ema100 cross above ema200

- start count from 1 how many time candle cross above ema20

ema100 cross below ema200
- stop counting reset to zero

ema100 cross above ema200
- start counting again from 1

here is the code I tried to write

thanks

```
bc = L<(EMA(C,20) AND Cross(H,EMA(C,20)));
gc = Cross(EMA(C,100),EMA(C,200));
dc = Cross(EMA(C,200),EMA(C,100));
it = Cum(bc AND BarsSince(gc)< BarsSince(dc));
PlotShapes(IIf(bc AND it==1,shapeDigit1,Null),colorBlack,0,L,-15);
```

I forgot to ask = please any body can help to fix the code? thanks

Use SumSince not Cum.

Also your brackets of `bc`

are wrong.

So something like this...

```
/// @link https://forum.amibroker.com/t/how-to-code-first-golden-cross-after-dead-cross/14244
ema20 = EMA(C,20);
prev_ema20 = Ref(ema20, -1);
bc = L<prev_ema20 AND Cross(H,prev_ema20);
ema100 = EMA(C,100);
ema200 = EMA(C,200);
gc = Cross(ema100,ema200);
dc = Cross(ema200,ema100);
it = IIf(ema100 > ema200, SumSince(gc, bc), 0);
Plot( C, "Price", colorDefault, styleBar );
Plot( it, "it", colorDefault, styleOwnScale );
Plot( ema20, "ema20", colorRed );
Plot( ema100, "ema100", colorBlue );
Plot( ema200, "ema200", colorGreen );
PlotShapes((bc AND it==1)*shapeDigit1,colorBlack,0,L,-15);
```

7 Likes

very quick and precise!

thank you very much for your kind heart....