Great to see the code is ticking along at a good speed. I've just sat down from work and started looking at this. I see the first mistake in the line:
Recording(i) = Range("H45:K45").Value
It has shown 'error 9' when I click debug it says 'Subscript out of range'. I have tried troubleshooting and reading Microsoft Excel's help page but nothing relevant, I have tried about 10 other pages but non give a relevant example similar to this of which part is incorrect in that line. I have tried putting ActiveSheet.Range but this is pointless as it's a sheet1 module so it knows that range. H45:K45 is the range I am trying to collect, so I'm confused as to how any part can be out of range? I have tried .variable, .array, .range instead of .value hoping to stumble upon something. Please can I have a clue as to which part of the code on that line is at fault so I can research further? I've hit a dead end else. I understand the basic structure of VBA now, still getting to the debugging specific terms.

By the way, the actual system will only need the current back price in it's calculations so just H45. Are the second and third best back price and the three best lay prices other than the Weight of Money indicator?

I shall continue to look until I get a reply as I see there is also another challenge you have set for me in this code and the races are happening only until 21:00.