Round lot limit order taking too long to fill even after stock price satisfy limit price

I was testing OTO order to see if my scalping algorithm will work (which works well on paper).
I submitted order (AAPL, LONG,BUY, qty=100) with stop price=125.99 and limit price 125.98 with take profit price as 126.
It created two orders:

  1. ID=db7275de-0717-4396-a674-725f85ee0d54 (Stop limit, stop price=125.99 , limit price=125.98)
    Filled at “2021-04-05T18:32:53.72Z”
  2. ID=44f2fc6a-64fa-4085-802e-4c268acd79c9 (limit price=126)
    Submitted at “2021-04-05T18:32:53.739913Z”
    Filled “2021-04-05T18:33:37.677Z”

After order1 was filled, it took alpaca only like 20 milliseconds to submit order2 (trigger order) which is nice. But then it took 44 seconds to fill it.
But price reach 126.00 multiple times in these 44 seconds. I verified this by downloading historic data. There are lot of trades with price 126.00 which has no special trading condition and are reported by exchanges (e.g. not reported by TRF or executed in some dark pool).

If execution of limit order will take so long and without fairness, my scalping algorithm will simply not work and all my research and time investment to come up with algorithm is useless :cry:

@Abh I had the same issue and I was losing trades that should have worked on paper. Surely round lots are better in theory, but as you and I experienced, it does not work well in practice.

See the bottom of this article where it mentions that exchanges give preference to odd lots. I fixed this for myself by making sure my sell orders were not submitted in round lots.

This is not investment advice. Good luck! :slight_smile: