I would use the cummax() function. The example below is not exactly like your data but I think you will get the idea.
set.seed(1)
DF <- data.frame(High = c(runif(10,20,40)))
DF
#> High
#> 1 25.31017
#> 2 27.44248
#> 3 31.45707
#> 4 38.16416
#> 5 24.03364
#> 6 37.96779
#> 7 38.89351
#> 8 33.21596
#> 9 32.58228
#> 10 21.23573
library(dplyr)
DF <- DF %>% mutate(CumMax = cummax(High), PercOffHigh = (CumMax - High)/CumMax*100)
DF
#> High CumMax PercOffHigh
#> 1 25.31017 25.31017 0.0000000
#> 2 27.44248 27.44248 0.0000000
#> 3 31.45707 31.45707 0.0000000
#> 4 38.16416 38.16416 0.0000000
#> 5 24.03364 38.16416 37.0256249
#> 6 37.96779 38.16416 0.5145197
#> 7 38.89351 38.89351 0.0000000
#> 8 33.21596 38.89351 14.5976802
#> 9 32.58228 38.89351 16.2269367
#> 10 21.23573 38.89351 45.4003305
Created on 2020-04-11 by the reprex package (v0.3.0)