danpaquin / coinbasepro-python

The unofficial Python client for the Coinbase Pro API
MIT License
1.82k stars 738 forks source link

Message {'message': 'Limit only mode'} when submitting market order? #347

Closed jasonmellone closed 3 years ago

jasonmellone commented 5 years ago

My code looks like this:


submission_res = auth_client.conn.place_market_order(size='5.5',
                                                                          product_id='ETC-USD',side='buy')

and has worked flawlessly until recently when I started getting incomplete fills.

For some reason, I am getting back the following message in response to the order above:

{'message': 'Limit only mode'}

Has anyone else experienced this?

noah222 commented 5 years ago

Today there was an announcement sent out via coinbase pro status:

"The following trading books have been moved to limit-only mode New incident: Resolved The following trading books have been moved to limit-only mode: BAT-USDC, BCH-BTC, BCH-EUR, BCH-GBP, ETC-BTC, ETC-EUR, ETC-GBP, ETC-USD, ETH-GBP, ETH-USDC, LTC-GBP, ZEC-USDC, ZRX-BTC, ZRX-EUR. Limit orders can be placed and cancelled, and matches may occur. Market orders cannot be submitted. Updates will be posted via Coinbase Pro’s Twitter and Status Page."

You can subscribe to https://status.pro.coinbase.com/history to get the updates via email. Getting these updates has helped me understand what is going on in situations like this.

What this means is you cannot currently submit a market order and must use a limit order, providing price in order for it to be posted to the order book. I think they do this when the trading volume gets thin or abnormal in order to stabilize the market and prevent chaos.

Since you said you were getting partial market order fills, this helps indicate the problem was not enough orders on the order books to keep trading moving in a liquid way. Since market orders are pulling from the order book, they switch to limit-only mode in order to get the order book filled back up with limit orders. I think this is mostly to prevent crash and undervalue of the assets compared to values on other platforms.