Quote from TraderZero:
Thats because the person trying to hit your bid with a market order first routed their order (knowingly or unknowingly) through a dark pool by way of an Indication of Interest. Once this is done, the nature of their order becomes public knowledge and others can act on it (in this case, getting a better bid into market before the market order gets there). At this point, it's quite easy for an HFT to step in and "sub-penny" your bid. The seller gets a better print than they otherwise would have (and is happy) and the HFT succeeds in picking up shares (also happy), which they will quickly flip. You're left wondering what happened and why your bid wasn't hit (not happy at all). (note this generally works to the advantage of small participants and to the disadvantage of large participants in the market for obviousl reasons).
Blame the seller, not the HFT for routing their order to a dark pool first in search of a better execution than the NBBO. Had the seller simply hit the bid on the exchange where you'd posted it (rather than routing dark first), you'd have gotten your shares. Instead they chose to try to better that level and ended up doing just that.
Problem that I see is that you are blaming the wrong entity. The HFT is not to blame for you not getting the shares you sought, the HFT is simply acting rationally based on the information available.
The problem is one of market structure (which has obviously changed with the advent of dark pools among other changes both structural and regulatory related). Dark pools are clearly benefitting certain sectors of the market and disadvantaging others (traders like yourself specifically). Fix the structure and the subpennying will go away.
How to implement the fix? Thats the hard part. You're basically arguing that investors (the entity on the other side of the trade you're trying to execute) deserve worse fills than they are presently getting. That's not going to sit so well with a lot of market participants.