I often have this problem. I want to buy or sell a few hundred shares or options. My ask is lower than the bid when I'm selling and my bid is higher than the ask when I'm buying. And I don't have "all or none" checked. Yet, my order goes unfilled.
Here may be the answer:
"In the regular trading arena, all orders must be executed according to price-time prioritization. That is, the best price must win, and if two orders have the same price, the one that was entered first is executed.
"Not so for the dark pool. In this new marketplace, institutional sellers can choose who they want to sell to. For instance, if an institution asks TD to sell 100,000 shares of a company, TD can enter the trade in the dark pool as an institution. But it can also set up an algorithm that tells its sell order to look for TD retail bids first. TD can even go so far as to tell its algorithm to look for bids in a certain orders, so TD bids could be first then RBC's, then CIBC's. Preference can also be given to larger sized orders over smaller partial fills that were posted first." This is in Canada, but rest assured we have it in the rest of the world's markets as well.
In this brave new world where computers trade with each other the whole day for at least the past couple of years, where Warren Buffett's lackeys front running him is apparently standard operating procedure, and where the regular people are now willing to work for free should we really expect anything different?