# Impulse Wave Filtering Workshop

The problem with every trader is that they think that they can trade everything.

The problem with Elliott Wave traders is that they aren’t able to write an algorithm for their ideas.

I have been trying to show you what the difference was between Impulse and Corrective waves from the aspect of a programmer on this blog for some time.

Grabbing an end to a Corrective wave can be as easy as

• getting the oscillator setting right
• monitoring for an exact stochastic range
• having a definition made for a cover low / cover high
``````i.e.
///////4-candle low closing back up 27-pips cover
if ( iLow(symbol,0,iLowest(symbol,0,MODE_LOW,1,i))==iLow(symbol,0,iLowest(symbol,0,MODE_LOW,4,i)) && Close[i]>iLow(symbol,0,iLowest(symbol,0,MODE_LOW,2,i))+270*Point
&& !gr[i] ){
//if (i>0 && Low[i-1]>Low[i]) momentum[i]=1;
ObjectCreate("Bingo"+IntegerToString(i), OBJ_TEXT, 0, Time[i], Low[i]+20*Point);
ObjectSetText("Bingo"+IntegerToString(i), "C", 26, "Impact", DimGray);
if (st18[i]<9.5) { ObjectSetText("Bingo"+IntegerToString(i), "CAP", 26, "Impact", DarkGreen); momentum[i]=1;
if (st18[ArrayMinimum(st18,10,i)]<4) ObjectSetText("Bingo"+IntegerToString(i), "C77", 26, "Impact", LimeGreen);``````

As for an end of an Impulsive wave, where the initial capping gets exceeded and divergences start clocking for the miles, that is a ranking challenge.

You need to write in your head the things you are looking for in a descriptive language before you can turn to start coding it for real.

Say it after me:

I am looking for a settled candle

``i>0``

I want a new low to be made within the last 5 candles.

``iLow(symbol,0,iLowest(symbol,0,MODE_LOW,4,i-1))<=iLow(symbol,0,iLowest(symbol,0,MODE_LOW,5,i-1)) ``

I don’t want the turning candle’s low to be violated by the next candle

``iLow(symbol,0,i)==iLow(symbol,0,iLowest(symbol,0,MODE_LOW,2,i-1)) ``

I want the stochastic to be oversold, but not in an optimal manner, as that is only the luxury of the corrective wave

``(st18[i]<4.5 || (st18[i]>9.5 && st18[i]<18.5) || (st18[i+1]>9.5 && st18[i+1]<18.5))``

I want the turning candle’s low to be within 43 pips of the previous 2 candles’ lows

``````Low[i]-Low[i+1]<430*Point
Low[i]-Low[i+2]<430*Point ``````

I want the turning candle’s high to approach the previous candle’s high by at least 6 pips

``High[i]>High[i+1]-60*Point``

I want the turning candle to be a green candle

``Open[i]<Close[i] ``

I want the high of the turning candle not to touch the E-44

``High[i]<iMA(symbol,0,44,0,MODE_EMA, PRICE_MEDIAN,i)``

I want the Turing candle to stay clear of he Bollinger middle band

``High[i]<iBands(symbol,0,20,2,0,PRICE_CLOSE,MODE_MAIN,i) ``

I want the distance between the Bollinger middle band and the E-44 to be larger than 45 pips as a proof of current volatility

``(MathAbs(iBands(symbol,0,20,2,0,PRICE_CLOSE,MODE_MAIN,i)-iMA(symbol,0,44,0,MODE_EMA, PRICE_MEDIAN,i))>450*Point``

I don’t want to see the last candle’s low too far below the lower Bollinger band (possibly a start of a move)

``Low[i+1]>iBands(symbol,0,20,2,0,PRICE_CLOSE,MODE_LOWER,i+1)-500*Point``

…and the back test is making the plots, i.e. thick pale green highlights.

Nothing’s ever gonna be perfect in the world of trading, but this is as close as you can get to an accurate binary decision around an impulse wave.

It is very rare to see a black candle making the ultimate low of the impulse wave, I found only 1 example in the last 5 years, and even that was not a rolling pin.

There’s a very good chance that the current low is going to be undercut by a candle that is closing up.