DEFPARAM DrawOnLastBarOnly = True
ONCE P = 60 //last 60 bars
ONCE N = 10 //10 largest bars within the last 60 bars
Body = abs(close - open)
IF BarIndex > P THEN
FOR i = 0 TO (P - 1)
$LargestBody[i] = Body[i]
$LargestBar[i] = BarIndex[i]
$Bull[i] = 0
$Bear[i] = 0
IF (close[i] > open[i]) THEN
$Bull[i] = 1
ENDIF
IF (close[i] < open[i]) THEN
$Bear[i] = 1
ENDIF
$xLow[i] = low[i]
$xRange[i] = range[i]
NEXT
//////////////////////////////////////////////////////////////////
// (Bubble Sort)
FOR i = 0 TO (P - 1)
FOR j = 0 TO (P - i - 1)
IF $LargestBody[j] < $LargestBody[j + 1] THEN
// swap data
temp = $LargestBody[j]
$LargestBody[j] = $LargestBody[j + 1]
$LargestBody[j + 1] = temp
// swap labels
temp = $LargestBar[j]
$LargestBar[j] = $LargestBar[j + 1]
$LargestBar[j + 1] = temp
// swap Bullish status
temp = $Bull[j]
$Bull[j] = $Bull[j + 1]
$Bull[j + 1] = temp
// swap Bearish status
temp = $Bear[j]
$Bear[j] = $Bear[j + 1]
$Bear[j + 1] = temp
// swap LOWs
temp = $xLow[j]
$xLow[j] = $xLow[j + 1]
$xLow[j + 1] = temp
// swap LOWs
temp = $xRange[j]
$xRange[j] = $xRange[j + 1]
$xRange[j + 1] = temp
ENDIF
NEXT
NEXT
//////////////////////////////////////////////////////////////////
// plot Sorted arrays
FOR i = 0 TO (N - 1)
tempBAR = $LargestBar[i]
tempLOW = $xLow[i]
tempRANGE = $xRange[i]
tempBODY = $LargestBody[i]
tempBULL = $Bull[i]
tempBEAR = $Bear[i]
IF tempBULL THEN
DrawArrowUP(tempBAR,tempLOW - tempRANGE) coloured("Yellow")
ELSIF tempBEAR THEN
DrawArrowUP(tempBAR,tempLOW - tempRANGE) coloured("Blue")
ENDIF
//drawtext("#tempBAR#",barindex + 2,close * (1 + (0.002 * i)))
//drawtext("#tempBODY#",barindex + 8,close * (1 + (0.002 * i)))
//drawtext("#tempLOW#",barindex + 14,close * (1 + (0.002 * i)))
//drawtext("#tempRANGE#",barindex + 20,close * (1 + (0.002 * i)))
//drawtext("#tempBULL#",barindex + 26,close * (1 + (0.002 * i)))
//drawtext("#tempBEAR#",barindex + 32,close * (1 + (0.002 * i)))
NEXT
ENDIF
RETURN