beeb / pancaketrade

Limit orders for PancakeSwap
GNU General Public License v3.0
200 stars 92 forks source link

Trying to sell more than available #40

Closed yocovn closed 2 years ago

yocovn commented 2 years ago

Currently testing with a wallet that has 2949.984xxxx MTV in it. The issue may be in the floor function of a number. Trying to sell all of it results in:

Selling 2,950.0 MTV...

⛔️ Exception while handling an update {'code': -32000, 'message': 'insufficient funds for gas * price + value'}

Also entering smaller amount not working. Seems like the bot can't sell anymore I wonder if it's because of the UDST path:

Selling 2,950.0 MTV...

⛔️ Exception while handling an update {'code': -32000, 'message': 'insufficient funds for gas * price + value'}

Selling 2,850.0 MTV... ⛔️ Exception while handling an update {'code': -32000, 'message': 'insufficient funds for gas * price + value'}

OK, I will sell 2,800.0 MTV (~$64.38). Confirm the order below!

✅ Order #1 was added successfully!

🔸 Trying to sell 2,800.0 MTV...

Not it hangs here and does nothing

/status bring this for orders: 💰 #1: MTV = market price - limit sell 2,800.0 MTV

This is the stack trace: Traceback (most recent call last): File "/usr/local/lib/python3.9/threading.py", line 973, in _bootstrap_inner self.run() File "/usr/local/lib/python3.9/threading.py", line 910, in run self._target(*self._args, *self._kwargs) File "/app/pancaketrade/watchers/order.py", line 240, in sell res, bnb_out, txhash_or_error = self.net.sell_tokens( File "/app/pancaketrade/network/bsc.py", line 546, in sell_tokens receipt = self.sell_tokens_with_params( File "/app/pancaketrade/network/bsc.py", line 603, in sell_tokens_with_params tx = self.build_and_send_tx(func=func, tx_params=params) File "/app/pancaketrade/network/bsc.py", line 722, in build_and_send_tx return self.w3.eth.send_raw_transaction(signed_tx.rawTransaction) File "/app/.venv/lib/python3.9/site-packages/web3/module.py", line 57, in caller result = w3.manager.request_blocking(method_str, params, error_formatters) File "/app/.venv/lib/python3.9/site-packages/web3/manager.py", line 160, in request_blocking raise ValueError(response["error"]) ValueError: {'code': -32000, 'message': 'insufficient funds for gas price + value'}

ghost commented 2 years ago

How much BNB do you have for gas? It says right there "insufficient funds for gas * price + value". Gas is always paid in BNB.

yocovn commented 2 years ago

I had around $2-5 for gas, but that was not the issue. I think there were too many threads created at some point. I deleted the pancake.db remove the container/image and set up all over again. It worked. So, probably you can disregard this. It may be me misusing the bot somehow.

ghost commented 2 years ago

If you ever encounter such an issue again, it's never needed to delete the database file. Simply restarting the container should be fine. Removing the offending orders with the /removeorder command should also help.

The message clearly indicated a problem with BNB balance for gas. My tests used $1.75 for transactions with this particular token using 15-25 gwei (default for "buy/sell now" and "sell all" commands respectively). But you need more to have some margin since the gas limit is higher than the actual used gas.