Hi,
I am not sure I understand what you are saying, but I do think that this is a deficiency of the program, which can be fixed easily.
So let me explain it again: before starting the race I place a back bet (85), and when it gets matched I place a lay bet at around half of the price (44) and keep it in-play. But during in-play this lay bet does not get matched, although the price falls below its price several times and refresh rate is set to 0.2 seconds (but even I can see it for more than 0.2 seconds).
So in the program code, there should be something like: when the last traded price is equal or less than my lay bet's price, my bet gets matched.
This is what I am doing now: when last_traded is equal or less than my lay bet's price, I ask the program to place a 1.01 lay bet to notify me that in reality my bet would have been matched, and it does this correctly.
But the problem with this is that I have to do everything else manually, and I have 184 races and I would like to test them many times with different values (only two variables with only two different values are four cases), so I can find the best variation. It is very slow and tiring.