The most obvious reason would be the Spread.
As you may already know, Buy Orders open on the ASK price while Sell Orders open the BID price.
What you see on the Chart, is the BID price and even though your Buy Limit Price might be visible on the chart, it doesn’t necessarily mean that the ASK price has also reached that level.
Assuming you have a Buy Limit Order on EURUSD at 1.21323 (Green Line)
Looking at the chart, it feels like the order should have been executed, but what you see on the Chart is not the ASK price but the BID price.
To find the ASK price, you must add the spread that existed at that time, but in all cases, the ASK price will be higher than the BID price.
An easy way to identify the ASK price based on what you see on a Chart is by adding the average spread. This will give you an indication, whether the ASK price reached your Buy Limit level or not.
You can find our Average Spreads here and then 'view full details'