Full title: The Counter-productive Nature of Sudden Volatility Expansion.
Start by accepting the idea of measuring volatility in 1.5-hour terms. Yes, you must go down to 30 mins to do this.
dvol[i]=NormalizeDouble((iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,i+1))-Low[i])*10000,2);
uvol[i]=NormalizeDouble((High[i]-(iLow(symbol,0,iLowest(symbol,0,MODE_LOW,2,i+1))))*10000,2);
The BB filter used is a 60-sample (2SD) over medians.
Off we go.
There are 3 different ways to hit the limit.
An absolute limit is the diagonal going beyond 49 pips outside the bands.

if (uvol[i]>49 || (uvol[i]>32 && High[i]<iBands(symbol,0,60,2,0,PRICE_MEDIAN,MODE_UPPER,i))) ObjectSetText("Citera"+IntegerToString(i), " "+NormalizeDouble((High[i]-(iLow(symbol,0,iLowest(symbol,0,MODE_LOW,2,i+1))))*10000,2)+" SELL", 18, "Impact", Gold);
if (dvol[i]>49 || (dvol[i]>32 && Low[i]>iBands(symbol,0,60,2,0,PRICE_MEDIAN,MODE_LOWER,i))) ObjectSetText("Citera"+IntegerToString(i), " "+NormalizeDouble((iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,i+1))-Low[i])*10000,2)+" BUY", 18, "Impact", Gold);
The second way is staying within the bands, but exceeding 32 pips (fluctuation size).

if (uvol[i]>49 || (uvol[i]>32 && High[i]<iBands(symbol,0,60,2,0,PRICE_MEDIAN,MODE_UPPER,i)))
if (dvol[i]>49 || (dvol[i]>32 && Low[i]>iBands(symbol,0,60,2,0,PRICE_MEDIAN,MODE_LOWER,i)))
The third way (A & B version) is when the first candle of the diagonal exceeds 22 pips and you get a new 6-sample high or the first low of the diagonal is outside the bands.

if (High[i+3]-Low[i+3]>220*Point && iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,i))==iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,6,i)))
if (High[i+3]-Low[i+3]>220*Point && Low[i+3]<iBands(symbol,0,60,2,0,PRICE_MEDIAN,MODE_UPPER,i+3))
Tadaa… new directional logic. Almost entirely based on volatility surges.
