Here are a few reasons your limit order may not have been filled yet:
There is limited volume. The most common reason why limit orders do not get filled. Your order will only fill if there is enough liquidity to meet its requirements (number of tokens and price). Please note that the token price displayed on Matcha is the last trade price and not the price at which tokens are currently available. This situation occurs most frequently with large orders for tokens with less liquidity.
The limit price hasn't been reached. Your order will remain open until another trader is willing to accept your order's requirements (number of tokens and price).
You do not have enough tokens in your wallet to complete the trade. For example, if you created a limit order for 500 ZRX and you have less than 500 ZRX in your wallet when your limit order is triggered, the transaction will not go through.
*Note: You may have had the funds when you created the order, but if you traded or moved those funds out of your wallet, then your limit order will show that part of your order is filled. This doesn't mean that your order is getting filled; it just means that you don't have enough funds to complete the order. It is very important to make sure you have enough funds to complete your limit order(s).
Your order wasn't profitable, or profitable enough, for an arbitrage bot to fill. Arbitrage bots account for a good portion of limit order volume. If your order isn't worthwhile for bots to fill after factoring in the trade's fees, they won't take it. This is especially true in times of high Ethereum gas costs.
Your order was too small. Smaller limit orders can be less attractive for takers (which includes arbitrage bots), especially those making larger trades, since all transactions carry a gas/network fee. For example, if a taker wants to buy 10,000 ZRX, it is more economical if the order was filled by 2 x 5,000 ZRX orders than by 10 x 1,000 ZRX orders due to the cost savings in fees.
You referenced a different price index. The current token prices on Matcha are based on the last traded price as reported on 0x API. If you referenced any other price index, there might be a discrepancy in pricing.