One of the most common reasons is the spread.
How pricing works
Buy orders are executed at the ASK price
Sell orders are executed at the BID price
On most charts, the price you see is the BID price
This means that even if your Buy Limit price appears to be reached on the chart, the order will not execute unless the ASK price also reaches that level.
Why this matters
The ASK price is always higher than the BID price because of the spread.
If the spread is wider at that moment, the ASK price may not reach your Buy Limit level—even though the BID price is visible on the chart.
How to check this
Consider the spread at the time your order should have triggered
Adding the average spread to the chart price can give you an indication of whether the ASK price reached your Buy Limit level
Please note that spreads can widen during low liquidity periods, market open/close, or major news events.