Here are a few reasons your limit order may not have 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.
- Your order was too small. Smaller limit orders can be less attractive for takers, including arbitrage bots, especially if they are making larger trades since all transactions carry an Ethereum gas fee + 0x protocol fee. For example, if I'm a taker looking to buy 10,000 ZRX, it would be more economical to take 2 x 5,000 ZRX orders than 10 x 1,000 ZRX orders due to the cost savings in fees.
- 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.
- You referenced a different price index. The current token prices on Matcha are based on the last traded price as reported 0x API. If you referenced any other price index, there might be a discrepancy in pricing.