Code Monkey home page Code Monkey logo

tmatic's People

Contributors

evgrmn avatar nikolayromenskiy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

tmatic's Issues

Bybit does not recover after computer's sleep mode

2024-05-16 05:08:06,506 - root - INFO - Emboldening SQLite
2024-05-16 05:08:15,350 - api.bybit.pybit._websocket_stream - ERROR - WebSocket Unified V5 (wss://stream-testnet.bybit.com/v5/public/linear) encountered error: Connection to remote host was lost..
2024-05-16 05:08:15,350 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 attempting connection...
2024-05-16 05:08:15,405 - api.bybit.pybit._websocket_stream - ERROR - WebSocket Unified V5 (Auth) (wss://stream-testnet.bybit.com/v5/private) encountered error: Connection to remote host was lost..
2024-05-16 05:08:15,405 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 (Auth) attempting connection...
2024-05-16 05:08:16,108 - websocket - INFO - Websocket connected
2024-05-16 05:08:16,110 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 connected
2024-05-16 05:08:16,116 - websocket - ERROR - Connection to remote host was lost. - goodbye
2024-05-16 05:08:16,174 - websocket - INFO - Websocket connected
2024-05-16 05:08:16,174 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 (Auth) connected
2024-05-16 05:08:16,175 - websocket - ERROR - Connection to remote host was lost. - goodbye
2024-05-16 05:08:16,388 - websocket - ERROR - error from callback <function _WebSocketManager._connect.. at 0x70e9cc2360e0>: Authorization for Unified V5 (Auth) failed. Please check your API keys and resync your system time. Raw error: {'success': False, 'ret_msg': 'Params Error', 'op': 'auth', 'conn_id': 'cno3fi5daugt7mgdqvtg-242lv'}
2024-05-16 05:08:16,601 - websocket - ERROR - error from callback <function _WebSocketManager._connect.. at 0x70e9cc236290>: Authorization for Unified V5 (Auth) failed. Please check your API keys and resync your system time. Raw error: {'success': False, 'ret_msg': 'Params Error', 'op': 'auth', 'conn_id': 'cno3fi5daugt7mgdqvtg-242lv'}
2024-05-16 05:08:16,602 - websocket - INFO - tearing down on exception Authorization for Unified V5 (Auth) failed. Please check your API keys and resync your system time. Raw error: {'success': False, 'ret_msg': 'Params Error', 'op': 'auth', 'conn_id': 'cno3fi5daugt7mgdqvtg-242lv'}
2024-05-16 05:08:16,673 - api.bitmex.ws - INFO - (https) sending GET to announcement/urgent: ""
2024-05-16 05:08:26,867 - api.bitmex.ws - INFO - (https) sending GET to announcement/urgent: ""
2024-05-16 05:08:32,874 - api.bitmex.ws - ERROR - Error: Connection to remote host was lost.
2024-05-16 05:08:32,874 - websocket - ERROR - Connection to remote host was lost. - goodbye
2024-05-16 05:08:32,875 - api.bitmex.ws - INFO - Bitmex - Websocket closed
2024-05-16 05:08:32,968 - api.bitmex.ws - INFO - (https) sending GET to instrument/active: ""
2024-05-16 05:08:33,141 - api.bitmex.ws - INFO - Connecting to websocket
2024-05-16 05:08:33,142 - api.bitmex.ws - INFO - Authenticating with API key.
2024-05-16 05:08:33,142 - api.bitmex.ws - INFO - (https) sending GET to user: ""
2024-05-16 05:08:33,144 - api.bitmex.ws - INFO - (https) sending GET to position: ""
2024-05-16 05:08:33,484 - websocket - INFO - Websocket connected
2024-05-16 05:08:34,145 - api.bitmex.ws - INFO - Connected to websocket.
2024-05-16 05:08:34,346 - api.bitmex.ws - INFO - Data received. Continuing.
2024-05-16 05:08:34,364 - api.bitmex.ws - INFO - (https) sending GET to execution/tradeHistory?count=500&reverse=false&startTime=2024-05-15 17:35:47: ""

IndexError: list index out of range

At the first loading after initial transaction history. The second loading showed no errors.

Exception in Tkinter callback
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/tkinter/init.py", line 1967, in call
return self.func(*args)
^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/tkinter/init.py", line 861, in callit
func(*args)
File "/Users/nrmn/Documents/tmatic_240424/main.py", line 16, in refresh
connect.refresh()
File "/Users/nrmn/Documents/tmatic_240424/connect.py", line 109, in refresh
Function.refresh_on_screen(Markets[var.current_market], utc=utc)
File "/Users/nrmn/Documents/tmatic_240424/functions.py", line 704, in refresh_on_screen
Function.refresh_tables(self)
File "/Users/nrmn/Documents/tmatic_240424/functions.py", line 1215, in refresh_tables
update_label(table="results", column=0, row=num + mod, val=currency[0])
File "/Users/nrmn/Documents/tmatic_240424/functions.py", line 1760, in update_label
if disp.labels_cache[table][row][column] != val:
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^
IndexError: list index out of range

Error when non-existent instrument put into '.env.Bitmex' file

We should probably check instruments' names spelling before subscription for Bitmex as well for Bybit.

2024-05-21 15:59:49,584 - root - INFO -

hello

2024-05-21 15:59:49,587 - api.bitmex.ws - INFO - (https) sending GET to instrument/active: ""
2024-05-21 15:59:49,838 - api.bitmex.agent - ERROR - Unknown symbol: ('BTCUSD', 'inverse', 'Bitmex'). Check the SYMBOLS in the .env.Bitmex file. Perhaps the name of the symbol does not correspond to the category or such symbol does not exist.
_____________connect 6 Bitmex
_____________connect 7 Bitmex
2024-05-21 15:59:49,839 - root - ERROR - Sqlite Error: no such column: None)
Traceback (most recent call last):
File "/Users/nrmn/Documents/tmatic_240521/main.py", line 9, in
connect.setup()
File "/Users/nrmn/Documents/tmatic_240521/connect.py", line 38, in setup
finish_setup(Markets[name])
File "/Users/nrmn/Documents/tmatic_240521/connect.py", line 96, in finish_setup
common.Init.account_balances(ws)
File "/Users/nrmn/Documents/tmatic_240521/common/init.py", line 112, in account_balances
symbols = list(map(lambda x: (x["SYMBOL"], x["CATEGORY"], self.name), data))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not iterable

Some errors while authorization on Bybit

2024-04-19 07:08:52,084 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 (Auth) attempting connection...
2024-04-19 07:08:52,737 - websocket - INFO - Websocket connected
2024-04-19 07:08:52,738 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 (Auth) connected
___get_user
2024-04-19 07:08:52,927 - websocket - ERROR - error from callback <function _WebSocketManager._connect.. at 0x73ccb5f7beb0>: Authorization for Unified V5 (Auth) failed. Please check your API keys and resync your system time. Raw error: {'success': False, 'ret_msg': 'Params Error', 'op': 'auth', 'conn_id': 'cno3gd1qo29t7ommtc60-18fpo'}
___wallet_balance
2024-04-19 07:08:53,117 - websocket - ERROR - error from callback <function _WebSocketManager._connect.. at 0x73ccb54740d0>: Authorization for Unified V5 (Auth) failed. Please check your API keys and resync your system time. Raw error: {'success': False, 'ret_msg': 'Params Error', 'op': 'auth', 'conn_id': 'cno3gd1qo29t7ommtc60-18fpo'}
2024-04-19 07:08:53,117 - websocket - INFO - tearing down on exception Authorization for Unified V5 (Auth) failed. Please check your API keys and resync your system time. Raw error: {'success': False, 'ret_msg': 'Params Error', 'op': 'auth', 'conn_id': 'cno3gd1qo29t7ommtc60-18fpo'}

Errors while deleting Bybit's order

2024-04-26 16:04:45,011 - root - INFO - Deleting orderID=1672693634065241344 clOrdID=1231365802.BTCUSDT.spot
2024-04-26 16:04:45,680 - root - INFO - Bybit Canceled Sell: orderID=1672693634065241344 clOrdID=1231365802.BTCUSDT.spot price=70803.87 qty=0.000480
_____________ KeyError
2024-04-26 16:04:45,681 - websocket - ERROR - error from callback <function _WebSocketManager._connect.. at 0x7ba55ac0f9a0>: 'accountType'
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.10/tkinter/init.py", line 1921, in call
return self.func(*args)
File "/usr/lib/python3.10/tkinter/init.py", line 839, in callit
func(*args)
File "/home/rmn/tmatic_240424/main.py", line 16, in refresh
connect.refresh()
File "/home/rmn/tmatic_240424/connect.py", line 114, in refresh
Function.refresh_on_screen(Markets[var.current_market], utc=utc)
File "/home/rmn/tmatic_240424/functions.py", line 704, in refresh_on_screen
Function.refresh_tables(self)
File "/home/rmn/tmatic_240424/functions.py", line 1057, in refresh_tables
update_label(table="results", column=0, row=num + mod, val=currency[0])
File "/home/rmn/tmatic_240424/functions.py", line 1584, in update_label
if disp.labels_cache[table][row][column] != val:
IndexError: list index out of range
2024-04-26 16:04:45,897 - websocket - ERROR - error from callback <function _WebSocketManager._connect.. at 0x7ba55ac0f760>: 'accountType'
2024-04-26 16:04:45,898 - websocket - INFO - tearing down on exception 'accountType'

Error buying BTCUSD, BTCUSDT at Bybit

2024-04-26 14:34:52,072 - root - INFO - Posting symbol=('BTCUSD', 'inverse', 'Bybit') clOrdID=1231283091.BTCUSD.inverse side=Buy price=64150.0 qty=1.0
2024-04-26 14:34:52,311 - root - INFO - Bybit New Buy: orderID=f917575f-9c42-4cfd-83f5-6c0d7efad012 clOrdID=1231283091.BTCUSD.inverse price=64150.0 qty=1
_____________ KeyError
2024-04-26 14:34:52,331 - websocket - ERROR - error from callback <function _WebSocketManager._connect.. at 0x7929e394db40>: 'accountType'
2024-04-26 14:34:52,548 - websocket - ERROR - error from callback <function _WebSocketManager._connect.. at 0x7929e394d900>: 'accountType'
2024-04-26 14:34:52,549 - websocket - INFO - tearing down on exception 'accountType'

As well as BTCUSDT:

2024-04-26 15:51:33,281 - root - INFO - Posting symbol=('BTCUSDT', 'linear', 'Bybit') clOrdID=1231354678.BTCUSDT.linear side=Buy price=64151.0 qty=0.002
2024-04-26 15:51:33,700 - root - INFO - Bybit New Buy: orderID=b1c795ab-4b22-4341-9a36-c5ac7834e8ec clOrdID=1231354678.BTCUSDT.linear price=64151.0 qty=0.002
_____________ KeyError
2024-04-26 15:51:33,710 - websocket - ERROR - error from callback <function _WebSocketManager._connect.. at 0x786a1ed43400>: 'accountType'
2024-04-26 15:51:33,925 - websocket - ERROR - error from callback <function _WebSocketManager._connect.. at 0x786a1ed431c0>: 'accountType'
2024-04-26 15:51:33,925 - websocket - INFO - tearing down on exception 'accountType'

An error while switching to Bybit exchange

Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.10/tkinter/init.py", line 1921, in call
return self.func(*args)
File "/usr/lib/python3.10/tkinter/init.py", line 839, in callit
func(*args)
File "/home/rmn/tmatic_240424/main.py", line 16, in refresh
connect.refresh()
File "/home/rmn/tmatic_240424/connect.py", line 114, in refresh
Function.refresh_on_screen(Markets[var.current_market], utc=utc)
File "/home/rmn/tmatic_240424/functions.py", line 704, in refresh_on_screen
Function.refresh_tables(self)
File "/home/rmn/tmatic_240424/functions.py", line 990, in refresh_tables
update_label(table="account", column=0, row=num + mod, val=settlCurrency[0])
File "/home/rmn/tmatic_240424/functions.py", line 1584, in update_label
if disp.labels_cache[table][row][column] != val:
IndexError: list index out of range

The red STATUS color

According to readme description the red STATUS color is the status with unclosed positions. The NOT DEFINED status wrongly colored in red even when balance = 0.

When I'm trying to modify an order and the price field is empty, so I press Replace, then the following error appears

Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.10/tkinter/init.py", line 1921, in call
return self.func(*args)
File "/home/rmn/tmatic_240418/functions.py", line 1383, in
frame_dn, text="Replace", command=lambda id=clOrdID: replace(id)
File "/home/rmn/tmatic_240418/functions.py", line 1306, in replace
float(price_replace.get())
ValueError: could not convert string to float: ''

The Currency table precision is insufficient

For instance, I am trying to place an order at 73000 for Bybit BTCUSD, 1 contract. The ORDER_MARG must change by 1/73000 = 0,000013699 and 0,00000013699 in case of x100 leverage ratio. I suggest to set 8-digit precision after the point.

In case of 'Order quantity exceeded upper limit' Bybit erroneously reloads

The proper behavior: just display the error saving the information to the filelog.log.

2024-04-17 20:14:13,939 - api.bybit.errors - ERROR - InvalidRequestError - Order quantity exceeded upper limit. (ErrCode: 170135) (ErrTime: 17:14:13).
Request → POST https://api-testnet.bybit.com/v5/order/create: {"category": "spot", "symbol": "BTCUSDT", "side": "Sell", "orderType": "Limit", "qty": "1000000.0", "price": "62000.00", "orderLinkId": "1223648070.BTCUSDT.spot"}.

Posting a new order: lack of info

Now it looks like "Posting side=Sell price=67305.5 qty=100.0". The information in the logfile (as well as in the terminal) should be more complete while manually posting a new order. EMI and Market names must be in the posting row.

Issue about Tmatic's freezing

2024-05-21 13:24:45,341 - api.bybit.ws - INFO - ws subscription - ticker_stream - category - linear - symbol - ('BTCUSDT', 'linear', 'Bybit')
2024-05-21 13:24:45,349 - api.bybit.agent - INFO - In open_orders - sending open_orders() - parameters - {'openOnly': 0, 'limit': 50, 'category': 'spot', 'cursor': 'no'}
2024-05-21 13:24:45,349 - api.bybit.agent - INFO - In trading_history - sending get_executions() - category - spot - startTime - 2024-05-20 10:55:25+00:00
2024-05-21 13:24:45,350 - api.bybit.agent - INFO - In trading_history - sending get_executions() - category - inverse - startTime - 2024-05-20 10:55:25+00:00
2024-05-21 13:24:45,350 - api.bybit.agent - INFO - In open_orders - sending open_orders() - parameters - {'openOnly': 0, 'limit': 50, 'category': 'linear', 'settleCoin': 'USDT', 'cursor': 'no'}
2024-05-21 13:24:45,351 - api.bybit.agent - INFO - In trading_history - sending get_executions() - category - option - startTime - 2024-05-20 10:55:25+00:00
2024-05-21 13:24:45,352 - api.bybit.agent - INFO - In trading_history - sending get_executions() - category - linear - startTime - 2024-05-20 10:55:25+00:00
2024-05-21 13:24:45,590 - api.bybit.agent - INFO - In trading_history - sending get_executions() - category - linear - startTime - 2024-05-20 10:55:25+00:00
Bybit - loading trading history, startTime=2024-05-20 10:55:25+00:00, received: 1 records.
______websocket is already closed
______websocket is already closed
___urgent_announcement
2024-05-21 13:46:22,060 - api.bybit.ws - INFO - Bybit - Websocket closed
2024-05-21 13:46:22,367 - api.bybit.ws - INFO - Bybit - Websocket closed
2024-05-21 13:46:22,368 - api.bybit.agent - INFO - In get_active_instruments - sending get_instruments_info() - category - spot
2024-05-21 13:46:22,368 - api.bybit.agent - INFO - In get_active_instruments - sending get_instruments_info() - category - inverse
2024-05-21 13:46:22,368 - api.bybit.agent - INFO - In get_active_instruments - sending get_instruments_info() - category - option
2024-05-21 13:46:22,369 - api.bybit.agent - INFO - In get_active_instruments - sending get_instruments_info() - category - linear
Exception in thread Thread-130 (get_in_thread):
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 793, in urlopen
Exception in thread Thread-132 (get_in_thread):
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 793, in urlopen
Exception in thread Thread-131 (get_in_thread):
Exception in thread Thread-129 (get_in_thread):
Traceback (most recent call last):
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 793, in urlopen
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 793, in urlopen
response = self._make_request(
response = self._make_request(
response = self._make_request(
^^^^^^^^^^^^^^^^^^^
response = self._make_request(
^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 537, in _make_request
^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 537, in _make_request
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 537, in _make_request
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 537, in _make_request
response = conn.getresponse()
^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connection.py", line 466, in getresponse
response = conn.getresponse()
^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connection.py", line 466, in getresponse
response = conn.getresponse()
^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connection.py", line 466, in getresponse
response = conn.getresponse()
httplib_response = super().getresponse()
httplib_response = super().getresponse()
^^^^^^^^^^^^^^^^^^
httplib_response = super().getresponse()
^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connection.py", line 466, in getresponse
^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 1423, in getresponse
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 1423, in getresponse
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 1423, in getresponse
httplib_response = super().getresponse()
^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 1423, in getresponse
response.begin()
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 331, in begin
response.begin()
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 331, in begin
response.begin()
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 331, in begin
version, status, reason = self._read_status()
^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 300, in _read_status
version, status, reason = self._read_status()
^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 300, in _read_status
response.begin()
version, status, reason = self._read_status()
raise RemoteDisconnected("Remote end closed connection without"
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 331, in begin
raise RemoteDisconnected("Remote end closed connection without"
^^^^^^^^^^^^^^^^^^^
http.client.RemoteDisconnected: Remote end closed connection without response
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 300, in _read_status

version, status, reason = self._read_status()

During handling of the above exception, another exception occurred:
^^^^^^^^^^^^^^^^^^^

http.client.RemoteDisconnected: Remote end closed connection without response
raise RemoteDisconnected("Remote end closed connection without"
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 300, in _read_status
Traceback (most recent call last):
http.client.RemoteDisconnected: Remote end closed connection without response

File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/requests/adapters.py", line 486, in send

During handling of the above exception, another exception occurred:
During handling of the above exception, another exception occurred:

raise RemoteDisconnected("Remote end closed connection without"

Traceback (most recent call last):
http.client.RemoteDisconnected: Remote end closed connection without response

During handling of the above exception, another exception occurred:
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/requests/adapters.py", line 486, in send

resp = conn.urlopen(

Traceback (most recent call last):
Traceback (most recent call last):
^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/requests/adapters.py", line 486, in send
resp = conn.urlopen(
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 847, in urlopen
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/requests/adapters.py", line 486, in send
^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 847, in urlopen
resp = conn.urlopen(
^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 847, in urlopen
retries = retries.increment(
^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/util/retry.py", line 470, in increment
resp = conn.urlopen(
^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 847, in urlopen
retries = retries.increment(
^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/util/retry.py", line 470, in increment
retries = retries.increment(
^^^^^^^^^^^^^^^^^^
retries = retries.increment(
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/util/retry.py", line 470, in increment
^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/util/retry.py", line 470, in increment
raise reraise(type(error), error, _stacktrace)
raise reraise(type(error), error, _stacktrace)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/util/util.py", line 38, in reraise
raise reraise(type(error), error, _stacktrace)
raise reraise(type(error), error, _stacktrace)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/util/util.py", line 38, in reraise
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/util/util.py", line 38, in reraise
raise value.with_traceback(tb)
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/util/util.py", line 38, in reraise
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 793, in urlopen
raise value.with_traceback(tb)
raise value.with_traceback(tb)
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 793, in urlopen
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 793, in urlopen
response = self._make_request(
raise value.with_traceback(tb)
response = self._make_request(
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 793, in urlopen
^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 537, in _make_request
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 537, in _make_request
response = self._make_request(
response = self._make_request(
^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 537, in _make_request
^^^^^^^^^^^^^^^^^^^
response = conn.getresponse()
response = conn.getresponse()
^^^^^^^^^^^^^^^^^^
response = conn.getresponse()
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 537, in _make_request
^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connection.py", line 466, in getresponse
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connection.py", line 466, in getresponse
^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connection.py", line 466, in getresponse
response = conn.getresponse()
^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connection.py", line 466, in getresponse
httplib_response = super().getresponse()
^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 1423, in getresponse
httplib_response = super().getresponse()
^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 1423, in getresponse
httplib_response = super().getresponse()
^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 1423, in getresponse
response.begin()
response.begin()
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 331, in begin
response.begin()
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 331, in begin
httplib_response = super().getresponse()
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 331, in begin
^^^^^^^^^^^^^^^^^^^^^
version, status, reason = self._read_status()
version, status, reason = self._read_status()
^^^^^^^^^^^^^^^^^^^
version, status, reason = self._read_status()
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 1423, in getresponse
^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 300, in _read_status
^^^^^^^^^^^^^^^^^^^
response.begin()
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 300, in _read_status
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 331, in begin
raise RemoteDisconnected("Remote end closed connection without"
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 300, in _read_status
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
version, status, reason = self._read_status()
raise RemoteDisconnected("Remote end closed connection without"
^^^^^^^^^^^^^^^^^^^
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

During handling of the above exception, another exception occurred:

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
raise RemoteDisconnected("Remote end closed connection without"
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 300, in _read_status
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/threading.py", line 1073, in _bootstrap_inner
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/threading.py", line 1073, in _bootstrap_inner
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

During handling of the above exception, another exception occurred:

raise RemoteDisconnected("Remote end closed connection without"

Traceback (most recent call last):
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

During handling of the above exception, another exception occurred:
self.run()
self.run()

File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/threading.py", line 1073, in _bootstrap_inner
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/threading.py", line 1010, in run
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/threading.py", line 1010, in run
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/threading.py", line 1073, in _bootstrap_inner
self.run()
self._target(*self._args, **self._kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/threading.py", line 1010, in run
self._target(*self._args, **self._kwargs)
self.run()
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/agent.py", line 26, in get_in_thread
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/threading.py", line 1010, in run
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/agent.py", line 26, in get_in_thread
self._target(*self._args, **self._kwargs)
self._target(*self._args, **self._kwargs)
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/agent.py", line 26, in get_in_thread
result = self.session.get_instruments_info(
result = self.session.get_instruments_info(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/pybit/_v5_market.py", line 111, in get_instruments_info
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/pybit/_v5_market.py", line 111, in get_instruments_info
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/agent.py", line 26, in get_in_thread
result = self.session.get_instruments_info(
return self._submit_request(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/pybit/_v5_market.py", line 111, in get_instruments_info
result = self.session.get_instruments_info(
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/pybit/_http_manager.py", line 277, in _submit_request
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
return self._submit_request(
return self._submit_request(
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/pybit/_v5_market.py", line 111, in get_instruments_info
^^^^^^^^^^^^^^^^^^^^^
raise e
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/pybit/_http_manager.py", line 277, in _submit_request
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/pybit/_http_manager.py", line 264, in _submit_request
^^^^^^^^^^^^^^^^^^^^^
return self._submit_request(
s = self.client.send(r, timeout=self.timeout)
^^^^^^^^^^^^^^^^^^^^^
raise e
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/pybit/_http_manager.py", line 277, in _submit_request
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/pybit/_http_manager.py", line 277, in _submit_request
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/pybit/_http_manager.py", line 264, in _submit_request
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/requests/sessions.py", line 703, in send
raise e
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/pybit/_http_manager.py", line 264, in _submit_request
raise e
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/pybit/_http_manager.py", line 264, in _submit_request
s = self.client.send(r, timeout=self.timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/requests/sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
s = self.client.send(r, timeout=self.timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
r = adapter.send(request, **kwargs)
s = self.client.send(r, timeout=self.timeout)
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/requests/adapters.py", line 501, in send
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/requests/sessions.py", line 703, in send
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/requests/adapters.py", line 501, in send
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
raise ConnectionError(err, request=request)
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/requests/sessions.py", line 703, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
r = adapter.send(request, **kwargs)
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
r = adapter.send(request, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/requests/adapters.py", line 501, in send
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/requests/adapters.py", line 501, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
2024-05-21 13:46:22,498 - api.bybit.ws - INFO - Connecting to websocket
2024-05-21 13:46:22,498 - api.bybit.agent - INFO - In get_user - sending get_uid_wallet_type()
2024-05-21 13:46:22,498 - api.bybit.agent - INFO - In get_wallet_balance - sending get_wallet_balance() - accountType - UNIFIED
2024-05-21 13:46:22,499 - api.bybit.agent - INFO - In get_position_info - sending get_positions() - category - linear - settlCurrency - USDT
2024-05-21 13:46:22,501 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 attempting connection...
2024-05-21 13:46:22,504 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 (Auth) attempting connection...
2024-05-21 13:46:23,126 - api.bybit.agent - INFO - In get_wallet_balance - sending get_wallet_balance() - accountType - CONTRACT
2024-05-21 13:46:23,505 - websocket - INFO - Websocket connected
2024-05-21 13:46:23,505 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 (Auth) connected
2024-05-21 13:46:23,557 - websocket - INFO - Websocket connected
2024-05-21 13:46:23,558 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 connected
2024-05-21 13:46:23,559 - api.bybit.ws - INFO - ws subscription - orderbook_stream - category - linear - symbol - ('BTCUSDT', 'linear', 'Bybit')
2024-05-21 13:46:23,560 - api.bybit.ws - INFO - ws subscription - ticker_stream - category - linear - symbol - ('BTCUSDT', 'linear', 'Bybit')
2024-05-21 13:46:24,280 - api.bybit.agent - INFO - In open_orders - sending open_orders() - parameters - {'openOnly': 0, 'limit': 50, 'category': 'spot', 'cursor': 'no'}
2024-05-21 13:46:24,280 - api.bybit.agent - INFO - In open_orders - sending open_orders() - parameters - {'openOnly': 0, 'limit': 50, 'category': 'linear', 'settleCoin': 'USDT', 'cursor': 'no'}
2024-05-21 13:46:24,280 - api.bybit.agent - INFO - In trading_history - sending get_executions() - category - spot - startTime - 2024-05-20 10:55:25+00:00
2024-05-21 13:46:24,281 - api.bybit.agent - INFO - In trading_history - sending get_executions() - category - inverse - startTime - 2024-05-20 10:55:25+00:00
2024-05-21 13:46:24,282 - api.bybit.agent - INFO - In trading_history - sending get_executions() - category - option - startTime - 2024-05-20 10:55:25+00:00
2024-05-21 13:46:24,282 - api.bybit.agent - INFO - In trading_history - sending get_executions() - category - linear - startTime - 2024-05-20 10:55:25+00:00
Exception in thread Thread-157 (get_in_thread):
Exception in thread Thread-155 (get_in_thread):
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 793, in urlopen
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 793, in urlopen
response = self._make_request(
^^^^^^^^^^^^^^^^^^^
response = self._make_request(
^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 537, in _make_request
response = conn.getresponse()
^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connection.py", line 466, in getresponse
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 537, in _make_request
response = conn.getresponse()
^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connection.py", line 466, in getresponse
httplib_response = super().getresponse()
^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 1423, in getresponse
response.begin()
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 331, in begin
version, status, reason = self._read_status()
^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 300, in _read_status
raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/requests/adapters.py", line 486, in send
resp = conn.urlopen(
^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 847, in urlopen
retries = retries.increment(
^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/util/retry.py", line 470, in increment
raise reraise(type(error), error, _stacktrace)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/util/util.py", line 38, in reraise
raise value.with_traceback(tb)
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 793, in urlopen
response = self._make_request(
^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 537, in _make_request
response = conn.getresponse()
^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connection.py", line 466, in getresponse
httplib_response = super().getresponse()
^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 1423, in getresponse
response.begin()
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 331, in begin
httplib_response = super().getresponse()
^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 1423, in getresponse
version, status, reason = self._read_status()
^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 300, in _read_status
raise RemoteDisconnected("Remote end closed connection without"
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
response.begin()
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 331, in begin
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/threading.py", line 1073, in _bootstrap_inner
version, status, reason = self._read_status()
^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 300, in _read_status
self.run()
raise RemoteDisconnected("Remote end closed connection without"
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/threading.py", line 1010, in run
http.client.RemoteDisconnected: Remote end closed connection without response

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/requests/adapters.py", line 486, in send
resp = conn.urlopen(
^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 847, in urlopen
self._target(*self._args, **self._kwargs)
retries = retries.increment(
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/agent.py", line 140, in get_in_thread
^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/util/retry.py", line 470, in increment
result = self.session.get_executions(
raise reraise(type(error), error, _stacktrace)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/util/util.py", line 38, in reraise
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/pybit/_v5_position.py", line 220, in get_executions
raise value.with_traceback(tb)
return self._submit_request(
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 793, in urlopen
^^^^^^^^^^^^^^^^^^^^^
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/pybit/_http_manager.py", line 277, in _submit_request
response = self._make_request(
raise e
^^^^^^^^^^^^^^^^^^^
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/pybit/_http_manager.py", line 264, in _submit_request
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py", line 537, in _make_request
s = self.client.send(r, timeout=self.timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/requests/sessions.py", line 703, in send
response = conn.getresponse()
^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connection.py", line 466, in getresponse
httplib_response = super().getresponse()
^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 1423, in getresponse
r = adapter.send(request, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/requests/adapters.py", line 501, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
response.begin()
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 331, in begin
version, status, reason = self._read_status()
^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 300, in _read_status
raise RemoteDisconnected("Remote end closed connection without"
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/threading.py", line 1073, in _bootstrap_inner
self.run()
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/threading.py", line 1010, in run
self._target(*self._args, **self._kwargs)
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/agent.py", line 140, in get_in_thread
result = self.session.get_executions(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/pybit/_v5_position.py", line 220, in get_executions
return self._submit_request(
^^^^^^^^^^^^^^^^^^^^^
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/pybit/_http_manager.py", line 277, in _submit_request
raise e
File "/Users/nrmn/Documents/tmatic_240521/api/bybit/pybit/_http_manager.py", line 264, in _submit_request
s = self.client.send(r, timeout=self.timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/requests/sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/requests/adapters.py", line 501, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
Bybit - loading trading history, startTime=2024-05-20 10:55:25+00:00, received: 0 records.
2024-05-21 13:46:44,850 - api.bitmex.ws - INFO - (https) sending GET to announcement/urgent: ""
2024-05-21 13:46:44,913 - api.bitmex.ws - ERROR - Unable to contact API: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response')). https://testnet.bitmex.com/api/v1/announcement/urgent: ""
2024-05-21 13:46:47,915 - api.bitmex.ws - INFO - (https) sending GET to announcement/urgent: ""
2024-05-21 13:46:48,480 - api.bitmex.ws - INFO - (https) sending GET to instrument/active: ""
2024-05-21 13:46:48,607 - api.bitmex.ws - INFO - Connecting to websocket
2024-05-21 13:46:48,607 - api.bitmex.ws - INFO - (https) sending GET to user: ""
2024-05-21 13:46:48,608 - api.bitmex.ws - INFO - Authenticating with API key.
2024-05-21 13:46:48,608 - api.bitmex.ws - INFO - (https) sending GET to position: ""
2024-05-21 13:46:48,633 - api.bitmex.ws - ERROR - Unable to contact API: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response')). https://testnet.bitmex.com/api/v1/position: ""
2024-05-21 13:46:48,664 - api.bitmex.ws - INFO - Bitmex - Websocket closed
2024-05-21 13:46:49,038 - websocket - INFO - Websocket connected
2024-05-21 13:46:51,639 - api.bitmex.ws - INFO - (https) sending GET to position: ""
2024-05-21 13:46:51,819 - api.bitmex.ws - INFO - Bitmex - Websocket closed
2024-05-21 13:46:53,825 - api.bitmex.ws - INFO - (https) sending GET to instrument/active: ""
2024-05-21 13:46:53,939 - api.bitmex.ws - INFO - Connecting to websocket
2024-05-21 13:46:53,939 - api.bitmex.ws - INFO - Authenticating with API key.
2024-05-21 13:46:53,940 - api.bitmex.ws - INFO - (https) sending GET to user: ""
2024-05-21 13:46:53,940 - api.bitmex.ws - INFO - (https) sending GET to position: ""
2024-05-21 13:46:54,279 - websocket - INFO - Websocket connected
2024-05-21 13:46:54,946 - api.bitmex.ws - INFO - Connected to websocket.
2024-05-21 13:46:55,154 - api.bitmex.ws - INFO - Data received. Continuing.
2024-05-21 13:46:55,172 - api.bitmex.ws - INFO - (https) sending GET to execution/tradeHistory?count=500&reverse=false&startTime=2024-05-21 10:02:30: ""

Some errors

2024-04-27 16:38:40,423 - websocket - INFO - Websocket connected
2024-04-27 16:38:40,424 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 connected
2024-04-27 16:38:40,428 - api.bybit.ws - INFO - ws subscription - orderbook_stream - category - spot - symbol - ('BTCUSDT', 'spot', 'Bybit')
2024-04-27 16:38:40,428 - api.bybit.ws - INFO - ws subscription - ticker_stream - category - spot - symbol - ('BTCUSDT', 'spot', 'Bybit')
2024-04-27 16:38:40,429 - api.bybit.ws - INFO - ws subscription - orderbook_stream - category - spot - symbol - ('ETHUSDT', 'spot', 'Bybit')
2024-04-27 16:38:40,429 - api.bybit.ws - INFO - ws subscription - ticker_stream - category - spot - symbol - ('ETHUSDT', 'spot', 'Bybit')
2024-04-27 16:38:40,429 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 (Auth) attempting connection...
2024-04-27 16:38:41,439 - websocket - INFO - Websocket connected
2024-04-27 16:38:41,439 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 (Auth) connected
2024-04-27 16:38:41,442 - api.bybit.agent - INFO - In get_user - sending get_uid_wallet_type()
2024-04-27 16:38:41,659 - websocket - ERROR - error from callback <function _WebSocketManager._connect.. at 0x731e001d8940>: Authorization for Unified V5 (Auth) failed. Please check your API keys and resync your system time. Raw error: {'success': False, 'ret_msg': 'Params Error', 'op': 'auth', 'conn_id': 'cno3gd1qo29t7ommtc60-1hnn3'}
2024-04-27 16:38:41,667 - api.bybit.agent - INFO - In get_wallet_balance - sending get_wallet_balance() - accountType - UNIFIED
2024-04-27 16:38:41,878 - websocket - ERROR - error from callback <function _WebSocketManager._connect.. at 0x731e001d8700>: Authorization for Unified V5 (Auth) failed. Please check your API keys and resync your system time. Raw error: {'success': False, 'ret_msg': 'Params Error', 'op': 'auth', 'conn_id': 'cno3gd1qo29t7ommtc60-1hnn3'}
2024-04-27 16:38:41,878 - websocket - INFO - tearing down on exception Authorization for Unified V5 (Auth) failed. Please check your API keys and resync your system time. Raw error: {'success': False, 'ret_msg': 'Params Error', 'op': 'auth', 'conn_id': 'cno3gd1qo29t7ommtc60-1hnn3'}
2024-04-27 16:38:41,892 - api.bybit.agent - INFO - In get_wallet_balance - sending get_wallet_balance() - accountType - CONTRACT
______websocket is already closed
2024-04-27 16:38:42,121 - api.bybit.agent - INFO - In get_position_info - sending get_positions() - category - linear - settlCurrency - USDT
2024-04-27 16:38:42,735 - api.bybit.agent - INFO - In get_position_info - sending get_positions() - category - inverse - settlCurrency - BTC
______websocket is already closed
2024-04-27 16:38:43,019 - api.bybit.agent - INFO - In trading_history - sending get_executions() - category - spot - startTime - 2024-04-27 04:54:03+00:00
2024-04-27 16:38:43,658 - api.bybit.agent - INFO - In trading_history - sending get_executions() - category - inverse - startTime - 2024-04-27 04:54:03+00:00
______websocket is already closed
2024-04-27 16:38:43,883 - api.bybit.agent - INFO - In trading_history - sending get_executions() - category - option - startTime - 2024-04-27 04:54:03+00:00
2024-04-27 16:38:44,108 - api.bybit.agent - INFO - In trading_history - sending get_executions() - category - linear - startTime - 2024-04-27 04:54:03+00:00
2024-04-27 16:38:44,337 - api.bybit.agent - INFO - In trading_history - sending get_executions() - category - linear - startTime - 2024-04-27 04:54:03+00:00
______websocket is already closed
Bybit - loading trading history, startTime=2024-04-27 04:54:03+00:00, received: 1 records.
2024-04-27 16:38:44,741 - api.bybit.agent - INFO - In trading_history - sending open_orders() - parameters - {'openOnly': 0, 'limit': 50, 'category': 'spot', 'cursor': 'no'}
2024-04-27 16:38:45,388 - api.bybit.agent - INFO - In trading_history - sending open_orders() - parameters - {'openOnly': 0, 'limit': 50, 'category': 'inverse', 'settleCoin': 'BTC', 'cursor': 'no'}
2024-04-27 16:38:45,612 - api.bybit.agent - INFO - In trading_history - sending open_orders() - parameters - {'openOnly': 0, 'limit': 50, 'category': 'linear', 'settleCoin': 'USDT', 'cursor': 'no'}
2024-04-27 16:38:45,837 - api.bybit.agent - INFO - In trading_history - sending open_orders() - parameters - {'openOnly': 0, 'limit': 50, 'category': 'linear', 'settleCoin': 'USDT', 'cursor': '7364f459-f7f9-40c3-b98d-50be5b6bfab8%3A1714224803075%2C7364f459-f7f9-40c3-b98d-50be5b6bfab8%3A1714224803075'}
______websocket is already closed

Bitmex Instrument's table: ENTRY, PNL, MCALL

Screenshot from 2024-04-26 14-05-18

  1. No ENTRY for XBTUSDT position.
  2. PNL seems to show the correct value, but in some wrong dimension comparing with UNRLZD_PNL in Money's table.
  3. For XBTUSDT contract the MCALL field is supposed to be infinite? For XBTUSD the MCALL field is supposed to have some value.

Switching between the exchanges

Tmatic must remember the last instrument's choice (yellow line) for each market. What I see now: the instrument's choice resets to the first position and the 'yellow line' lives its own life, sometimes I see two lines simultaneously (look at the screenshot below).

Screenshot from 2024-04-17 20-41-33

Sleep mode, then F3 reboot leads to error. Tmatic's running but some widgets are not visible

Screenshot from 2024-06-06 15-49-46

2024-06-06 12:37:33,278 - functions - INFO - Emboldening SQLite
2024-06-06 12:37:35,420 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 attempting connection...
2024-06-06 12:37:36,190 - websocket - INFO - Websocket connected
2024-06-06 12:37:36,191 - api.bybit.pybit._websocket_stream - ERROR - WebSocket Unified V5 (wss://stream-testnet.bybit.com/v5/public/linear) encountered error: Connection to remote host was lost..
2024-06-06 12:37:36,191 - api.bybit.pybit._websocket_stream - ERROR - WebSocket Unified V5 (Auth) (wss://stream-testnet.bybit.com/v5/private) encountered error: Connection to remote host was lost..
2024-06-06 12:37:36,192 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 attempting connection...
2024-06-06 12:37:36,192 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 (Auth) attempting connection...
2024-06-06 12:37:36,193 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 connected
2024-06-06 12:37:36,245 - websocket - ERROR - Connection to remote host was lost. - goodbye
2024-06-06 12:37:36,926 - websocket - INFO - Websocket connected
2024-06-06 12:37:36,942 - websocket - INFO - Websocket connected
2024-06-06 12:37:36,929 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 (Auth) connected
2024-06-06 12:37:36,946 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 connected
2024-06-06 12:37:36,946 - websocket - ERROR - Connection to remote host was lost. - goodbye
2024-06-06 12:37:36,947 - websocket - ERROR - Connection to remote host was lost. - goodbye
2024-06-06 12:37:37,178 - websocket - ERROR - error from callback <function _WebSocketManager._connect.. at 0x7ec661c53640>: Authorization for Unified V5 (Auth) failed. Please check your API keys and resync your system time. Raw error: {'success': False, 'ret_msg': 'Params Error', 'op': 'auth', 'conn_id': 'cno3fi5daugt7mgdqvtg-2x4n1'}
2024-06-06 12:37:37,402 - websocket - ERROR - error from callback <function _WebSocketManager._connect.. at 0x7ec661cac1f0>: Authorization for Unified V5 (Auth) failed. Please check your API keys and resync your system time. Raw error: {'success': False, 'ret_msg': 'Params Error', 'op': 'auth', 'conn_id': 'cno3fi5daugt7mgdqvtg-2x4n1'}
2024-06-06 12:37:37,402 - websocket - INFO - tearing down on exception Authorization for Unified V5 (Auth) failed. Please check your API keys and resync your system time. Raw error: {'success': False, 'ret_msg': 'Params Error', 'op': 'auth', 'conn_id': 'cno3fi5daugt7mgdqvtg-2x4n1'}
2024-06-06 12:37:40,409 - api.bybit.pybit._websocket_stream - ERROR - WebSocket Unified V5 (wss://stream-testnet.bybit.com/v5/public/linear) encountered error: ping/pong timed out.
2024-06-06 12:37:40,420 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 attempting connection...
2024-06-06 12:37:41,159 - websocket - INFO - Websocket connected
2024-06-06 12:37:41,163 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 connected
2024-06-06 12:37:41,169 - websocket - ERROR - ping/pong timed out - goodbye
2024-06-06 12:37:43,472 - api.bitmex.ws - ERROR - Error: Connection to remote host was lost.
2024-06-06 12:37:43,472 - websocket - ERROR - Connection to remote host was lost. - goodbye
2024-06-06 12:37:43,472 - api.bitmex.ws - INFO - Bitmex - Websocket closed
2024-06-06 12:37:43,672 - api.bitmex.http - INFO - (https) sending GET to instrument/active: ""
2024-06-06 12:37:43,975 - api.bitmex.http - INFO - (https) sending GET to order?filter=%7B%22open%22%3A%20true%7D&reverse=false: ""
2024-06-06 12:37:44,055 - api.bitmex.ws - INFO - Connecting to websocket
2024-06-06 12:37:44,055 - api.bitmex.http - INFO - (https) sending GET to user: ""
2024-06-06 12:37:44,058 - api.bitmex.ws - INFO - Authenticating with API key.
2024-06-06 12:37:44,059 - api.bitmex.http - INFO - (https) sending GET to position: ""
2024-06-06 12:37:44,343 - websocket - INFO - Websocket connected
2024-06-06 12:37:45,064 - api.bitmex.ws - INFO - Connected to websocket.
2024-06-06 12:37:45,265 - api.bitmex.ws - INFO - Data received. Continuing.
2024-06-06 12:37:45,300 - api.bitmex.http - INFO - (https) sending GET to execution/tradeHistory?count=500&reverse=false&startTime=2024-06-05 07:42:12: ""
2024-06-06 12:37:45,646 - common.init - INFO - Robot EMI=XbtInv1. Adding to 'robots' with STATUS='NOT DEFINED'
2024-06-06 12:37:45,650 - common.init - INFO - Robot EMI=Xbt1_1. Adding to 'robots' with STATUS='NOT DEFINED'
2024-06-06 12:37:45,651 - common.init - INFO - Robot EMI=Xbt5. Adding to 'robots' with STATUS='NOT DEFINED'
2024-06-06 12:37:45,651 - common.init - INFO - Robot EMI=Xbt1. Adding to 'robots' with STATUS='NOT DEFINED'
2024-06-06 12:37:45,651 - common.init - INFO - Robot EMI=XbtInv5. Adding to 'robots' with STATUS='NOT DEFINED'
______Tmatic: Bybit API is still pinging, but the websocket is already closed
2024-06-06 12:45:00,167 - functions - INFO - Posting symbol=('BTCUSDT', 'linear', 'Bybit') clOrdID=1264836826.BTCUSDT.linear side=Sell price=91253.6 qty=-0.001
2024-06-06 12:45:19,114 - api.bybit.ws - INFO - Bybit - Websocket closed
2024-06-06 12:45:19,166 - api.bitmex.ws - INFO - Bitmex - Websocket closed
2024-06-06 12:45:19,182 - api.bitmex.http - INFO - (https) sending GET to instrument/active: ""
2024-06-06 12:45:19,444 - api.bitmex.http - INFO - (https) sending GET to order?filter=%7B%22open%22%3A%20true%7D&reverse=false: ""
2024-06-06 12:45:19,543 - api.bitmex.ws - INFO - Connecting to websocket
2024-06-06 12:45:19,544 - api.bitmex.ws - INFO - Authenticating with API key.
2024-06-06 12:45:19,544 - api.bitmex.http - INFO - (https) sending GET to user: ""
2024-06-06 12:45:19,550 - api.bitmex.http - INFO - (https) sending GET to position: ""
2024-06-06 12:45:19,786 - websocket - INFO - Websocket connected
2024-06-06 12:45:20,551 - api.bitmex.ws - INFO - Connected to websocket.
2024-06-06 12:45:21,052 - api.bitmex.ws - INFO - Data received. Continuing.
2024-06-06 12:45:21,098 - api.bitmex.http - INFO - (https) sending GET to execution/tradeHistory?count=500&reverse=false&startTime=2024-06-05 07:42:12: ""
2024-06-06 12:45:21,473 - common.init - INFO - Robot EMI=XbtInv1. Adding to 'robots' with STATUS='NOT DEFINED'
2024-06-06 12:45:21,473 - common.init - INFO - Robot EMI=Xbt1_1. Adding to 'robots' with STATUS='NOT DEFINED'
2024-06-06 12:45:21,473 - common.init - INFO - Robot EMI=Xbt5. Adding to 'robots' with STATUS='NOT DEFINED'
2024-06-06 12:45:21,473 - common.init - INFO - Robot EMI=Xbt1. Adding to 'robots' with STATUS='NOT DEFINED'
2024-06-06 12:45:21,474 - common.init - INFO - Robot EMI=XbtInv5. Adding to 'robots' with STATUS='NOT DEFINED'
2024-06-06 12:45:21,502 - api.bybit.ws - INFO - Bybit - Websocket closed
2024-06-06 12:45:21,503 - api.bybit.agent - INFO - Sending get_instruments_info() - category - spot
2024-06-06 12:45:21,505 - api.bybit.agent - INFO - Sending get_instruments_info() - category - inverse
2024-06-06 12:45:21,508 - api.bybit.agent - INFO - Sending get_instruments_info() - category - option
2024-06-06 12:45:21,510 - api.bybit.agent - INFO - Sending get_instruments_info() - category - linear
2024-06-06 12:45:21,550 - api.bitmex.http - INFO - (https) sending GET to instrument/active: ""
2024-06-06 12:45:21,693 - api.bitmex.http - INFO - (https) sending GET to order?filter=%7B%22open%22%3A%20true%7D&reverse=false: ""
2024-06-06 12:45:21,776 - api.bitmex.ws - INFO - Connecting to websocket
2024-06-06 12:45:21,776 - api.bitmex.ws - INFO - Authenticating with API key.
2024-06-06 12:45:21,777 - api.bitmex.http - INFO - (https) sending GET to user: ""
2024-06-06 12:45:21,779 - api.bitmex.http - INFO - (https) sending GET to position: ""
2024-06-06 12:45:22,060 - websocket - INFO - Websocket connected
2024-06-06 12:45:22,159 - api.bybit.agent - INFO - Sending open_orders() - parameters - {'openOnly': 0, 'limit': 50, 'category': 'spot', 'cursor': 'no'}
2024-06-06 12:45:22,160 - api.bybit.agent - INFO - Sending open_orders() - parameters - {'openOnly': 0, 'limit': 50, 'category': 'linear', 'settleCoin': 'USDT', 'cursor': 'no'}
2024-06-06 12:45:22,779 - api.bitmex.ws - INFO - Connected to websocket.
2024-06-06 12:45:22,803 - api.bybit.agent - INFO - Sending open_orders() - parameters - {'openOnly': 0, 'limit': 50, 'category': 'linear', 'settleCoin': 'USDT', 'cursor': 'c645fc0a-8892-4ed6-8a51-c3a4b61bab19%3A1717677901890%2Caa2205dd-6474-4199-9540-67c7e709a1d7%3A1716477047327'}
2024-06-06 12:45:22,980 - api.bitmex.ws - INFO - Data received. Continuing.
2024-06-06 12:45:23,019 - api.bitmex.http - INFO - (https) sending GET to execution/tradeHistory?count=500&reverse=false&startTime=2024-06-05 07:42:12: ""
2024-06-06 12:45:23,467 - api.bybit.ws - INFO - Connecting to websocket
2024-06-06 12:45:23,467 - api.bybit.agent - INFO - Sending get_uid_wallet_type()
2024-06-06 12:45:23,468 - api.bybit.agent - INFO - Sending get_wallet_balance() - accountType - UNIFIED
2024-06-06 12:45:23,470 - api.bybit.agent - INFO - Sending get_positions() - category - linear - settlCurrency - USDT
2024-06-06 12:45:23,473 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 attempting connection...
2024-06-06 12:45:23,473 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 (Auth) attempting connection...
2024-06-06 12:45:23,883 - api.bybit.agent - INFO - Sending get_wallet_balance() - accountType - CONTRACT
2024-06-06 12:45:25,407 - websocket - INFO - Websocket connected
2024-06-06 12:45:25,408 - websocket - INFO - Websocket connected
2024-06-06 12:45:25,408 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 (Auth) connected
2024-06-06 12:45:25,408 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 connected
2024-06-06 12:45:25,411 - api.bybit.ws - INFO - ws subscription - orderbook_stream - category - linear - symbol - ('BTCUSDT', 'linear', 'Bybit')
2024-06-06 12:45:25,411 - api.bybit.ws - INFO - ws subscription - ticker_stream - category - linear - symbol - ('BTCUSDT', 'linear', 'Bybit')
2024-06-06 12:45:25,420 - api.bybit.agent - INFO - Sending get_executions() - category - spot - startTime - 2024-06-05 08:04:40+00:00
2024-06-06 12:45:25,422 - api.bybit.agent - INFO - Sending get_executions() - category - inverse - startTime - 2024-06-05 08:04:40+00:00
2024-06-06 12:45:25,422 - api.bybit.agent - INFO - Sending get_executions() - category - option - startTime - 2024-06-05 08:04:40+00:00
2024-06-06 12:45:25,424 - api.bybit.agent - INFO - Sending get_executions() - category - linear - startTime - 2024-06-05 08:04:40+00:00
2024-06-06 12:45:25,630 - websocket - ERROR - error from callback <function _WebSocketManager._connect.. at 0x7ec661cac550>: Authorization for Unified V5 (Auth) failed. Please check your API keys and resync your system time. Raw error: {'success': False, 'ret_msg': 'Params Error', 'op': 'auth', 'conn_id': 'cno3gd1qo29t7ommtc60-2x4ks'}
2024-06-06 12:45:25,664 - api.bybit.agent - INFO - Sending get_executions() - category - linear - startTime - 2024-06-05 08:04:40+00:00
2024-06-06 12:45:25,849 - websocket - ERROR - error from callback <function _WebSocketManager._connect.. at 0x7ec661cac670>: Authorization for Unified V5 (Auth) failed. Please check your API keys and resync your system time. Raw error: {'success': False, 'ret_msg': 'Params Error', 'op': 'auth', 'conn_id': 'cno3gd1qo29t7ommtc60-2x4ks'}
2024-06-06 12:45:25,850 - websocket - INFO - tearing down on exception Authorization for Unified V5 (Auth) failed. Please check your API keys and resync your system time. Raw error: {'success': False, 'ret_msg': 'Params Error', 'op': 'auth', 'conn_id': 'cno3gd1qo29t7ommtc60-2x4ks'}
2024-06-06 12:45:26,063 - api.bybit.agent - INFO - Bybit - loading trading history, startTime=2024-06-05 08:04:40+00:00, received: 1 records.
2024-06-06 12:45:26,161 - common.init - INFO - Robot EMI=Btc5. Adding to 'robots' with STATUS='NOT DEFINED'
2024-06-06 12:45:26,161 - common.init - INFO - Robot EMI=Btc1. Adding to 'robots' with STATUS='NOT DEFINED'
2024-06-06 12:45:26,297 - common.init - INFO - Robot EMI=XbtInv1. Adding to 'robots' with STATUS='NOT DEFINED'
2024-06-06 12:45:26,297 - common.init - INFO - Robot EMI=Xbt1_1. Adding to 'robots' with STATUS='NOT DEFINED'
2024-06-06 12:45:26,298 - common.init - INFO - Robot EMI=Xbt5. Adding to 'robots' with STATUS='NOT DEFINED'
2024-06-06 12:45:26,298 - common.init - INFO - Robot EMI=Xbt1. Adding to 'robots' with STATUS='NOT DEFINED'
2024-06-06 12:45:26,298 - common.init - INFO - Robot EMI=XbtInv5. Adding to 'robots' with STATUS='NOT DEFINED'
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.10/tkinter/init.py", line 1921, in call
return self.func(*args)
File "/usr/lib/python3.10/tkinter/init.py", line 839, in callit
func(*args)
File "/home/rmn/tmatic_240604/main.py", line 16, in refresh
connect.refresh()
File "/home/rmn/tmatic_240604/connect.py", line 231, in refresh
Function.refresh_on_screen(Markets[var.current_market], utc=utc)
File "/home/rmn/tmatic_240604/functions.py", line 761, in refresh_on_screen
Function.refresh_tables(self)
File "/home/rmn/tmatic_240604/functions.py", line 928, in refresh_tables
if compare != tree.cache[num]:
IndexError: list index out of range
2024-06-06 12:45:31,052 - api.bitmex.ws - INFO - Bitmex - Websocket closed
______Tmatic: Bybit API is still pinging, but the websocket is already closed

Fields for currency table

Column name Bybit Bitmex Explanation
WALLET_BAL walletBalance walletBalance Wallet Balance = Deposits - Withdrawals + Realised PNL
UNRLZD_PNL unrealisedPnl unrealisedPnl Unrealised PNL
MARGIN_BAL equity marginBalance Margin Balance = Wallet Balance + Unrealised PNL
ORDER_MARG locked(SPOT)+totalOrderIM(DERI) initMargin Order Margin
POS_MARG 0(SPOT)+totalPositionIM(DERI) maintMargin Position Margin
AVAILABLE availableToWithdraw availableMargin(or withdrawableMargin) Available Balance = Margin Balance - Order Margin - Position Margin
PNL      
COMISS      
FUNDING      

Suggestion for: api/bitmex/ws.py > def __update_position()

    if "currentQty" in values:
        instrument.currentQty = values["currentQty"]
        self.positions[symbol]["POS"] = instrument.currentQty
    if instrument.currentQty == 0:
        instrument.avgEntryPrice = 0
        instrument.marginCallPrice = 0
        instrument.unrealisedPnl = 0
    else:
        if "avgEntryPrice" in values:
            instrument.avgEntryPrice = values["avgEntryPrice"]
        if "unrealisedPnl" in values:
            instrument.unrealisedPnl = values["unrealisedPnl"]
        if "marginCallPrice" in values:
            if values["marginCallPrice"] == 100000000:
                instrument.marginCallPrice = "inf"
            else:
                instrument.marginCallPrice = values["marginCallPrice"]

SQLite is probably a better choice for Tmatic database

The popular SQLite GUI (DB Browser):
https://sqlitebrowser.org/dl/
If appImage does not run on Linux:
sudo apt install libfuse2

Review the code below:

import sqlite3
from sqlite3 import Error

def create_connection(db_file):
conn = None
try:
conn = sqlite3.connect(db_file)

    sql_create_robots = """
    CREATE TABLE IF NOT EXISTS robots (
    EMI varchar(20) DEFAULT NULL UNIQUE,
    SYMBOL varchar(20) DEFAULT NULL,
    CATEGORY varchar(10) DEFAULT NULL,
    MARKET varchar(20) DEFAULT NULL,
    SORT tinyint DEFAULT NULL,
    DAT timestamp NULL DEFAULT CURRENT_TIMESTAMP,
    TIMEFR tinyint DEFAULT 0,
    CAPITAL int DEFAULT 0,
    MARGIN int DEFAULT 0)"""

    sql_create_coins = """
    CREATE TABLE IF NOT EXISTS coins (
    ID INTEGER PRIMARY KEY AUTOINCREMENT,
    EXECID varchar(45) DEFAULT NULL,
    EMI varchar(25) DEFAULT NULL,
    REFER varchar(20) DEFAULT NULL,
    MARKET varchar(20) DEFAULT NULL,
    CURRENCY varchar(10) DEFAULT NULL,
    SYMBOL varchar(20) DEFAULT NULL,
    CATEGORY varchar(10) DEFAULT NULL,
    SIDE tinyint DEFAULT NULL,
    QTY decimal(20,8) DEFAULT NULL,
    QTY_REST decimal(20,8) DEFAULT NULL,
    PRICE decimal(20,8) DEFAULT NULL,
    THEOR_PRICE decimal(20,8) DEFAULT NULL,
    TRADE_PRICE decimal(20,8) DEFAULT NULL,
    SUMREAL decimal(30,12) DEFAULT NULL,
    COMMISS decimal(30,16) DEFAULT 0.0000000000000000,
    TTIME datetime DEFAULT NULL,
    DAT timestamp NULL DEFAULT CURRENT_TIMESTAMP,
    CLORDID int DEFAULT 0,
    ACCOUNT int DEFAULT 0)"""

    create = conn.cursor()
    create.execute(sql_create_robots)
    create.execute(sql_create_coins)
    create.execute("CREATE UNIQUE INDEX IF NOT EXISTS ID_UNIQUE ON coins (ID)")
    create.execute("CREATE INDEX IF NOT EXISTS EXECID_ix ON coins (EXECID)")
    create.execute("CREATE INDEX IF NOT EXISTS EMI_QTY_ix ON coins (EMI, QTY)")
    create.execute("CREATE INDEX IF NOT EXISTS SIDE_ix ON coins (SIDE)")

except Error as e:
    print(e)
finally:
    if conn:
        conn.close()

create_connection(r"tmatic.db")

Pressing F3 (reload) results in an error below

And not only F3, but any reload.



2024-04-17 14:01:02,976 - api.bybit.ws - INFO - Websocket closed
++++ Bybit -1
_____ ('BTCUSDT', 'linear', 'Bybit') 0
-----starting Bybit----
2024-04-17 14:01:03,937 - api.bybit.ws - INFO - Connecting to websocket
2024-04-17 14:01:03,937 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 attempting connection...
2024-04-17 14:01:04,843 - websocket - INFO - Websocket connected
2024-04-17 14:01:04,844 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 connected
_________ws subscription: linear - orderbook_stream - ('BTCUSDT', 'linear', 'Bybit')
_________ws subscription: linear - ticker_stream - ('BTCUSDT', 'linear', 'Bybit')
2024-04-17 14:01:04,845 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 (Auth) attempting connection...
2024-04-17 14:01:05,842 - websocket - INFO - Websocket connected
2024-04-17 14:01:05,843 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 (Auth) connected
___get_user
___wallet_balance
___get_position_info
___trading_history
Bybit - loading trading history, startTime=2024-04-17 08:14:42, received: 1 records.
___trading_history
Bybit - loading trading history, startTime=2024-04-17 08:14:42.148000, received: 1 records.
___trading_history
Bybit - loading trading history, startTime=2024-04-17 08:14:42.148000, received: 1 records.
___open_orders
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.10/tkinter/init.py", line 1921, in call
return self.func(*args)
File "/home/tmatic_240417_2/connect.py", line 22, in
disp.root.bind("", lambda event: terminal_reload(event))
File "/home/tmatic_240417_2/connect.py", line 139, in terminal_reload
setup()
File "/home/tmatic_240417_2/connect.py", line 30, in setup
setup_market(Markets[name])
File "/home/tmatic_240417_2/connect.py", line 66, in setup_market
ws.robots[emi]["STATUS"] = value
KeyError: 'XBTUSDT.linear'

/api/bybit/pybit/_websocket_stream.py", line 247 error

2024-04-17 07:02:49,901 - api.bitmex.ws - INFO - (https) sending GET to instrument?symbol=XBTH24: ""
2024-04-17 07:02:49,969 - api.bitmex.ws - INFO - (https) sending GET to position?filter=%7B%22symbol%22%3A%22XBTH24%22%7D: ""
2024-04-17 07:02:50,049 - api.bitmex.agent - INFO - ('XBTH24', 'inverse', 'Bitmex') has been added to the positions dictionary for Bitmex
!!!!!!!!!!!!! BYBIT !!!!!!!!!!!
2024-04-17 07:02:50,131 - api.bybit.ws - INFO - Websocket closed
++++ Bybit -1
-----starting Bybit----
2024-04-17 07:02:50,864 - api.bybit.ws - INFO - Connecting to websocket
2024-04-17 07:02:50,865 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 attempting connection...
2024-04-17 07:02:51,695 - websocket - INFO - Websocket connected
2024-04-17 07:02:51,695 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 connected
_________ws subscription: linear - orderbook_stream - ('BTCUSDT', 'linear', 'Bybit')
_________ws subscription: linear - ticker_stream - ('BTCUSDT', 'linear', 'Bybit')
2024-04-17 07:02:51,697 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 (Auth) attempting connection...
2024-04-17 07:02:52,897 - websocket - INFO - Websocket connected
2024-04-17 07:02:52,897 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 (Auth) connected
___get_user
2024-04-17 07:02:53,085 - websocket - ERROR - error from callback <function _WebSocketManager._connect.. at 0x78a6960a2f80>: Authorization for Unified V5 (Auth) failed. Please check your API keys and resync your system time. Raw error: {'success': False, 'ret_msg': 'Params Error', 'op': 'auth', 'conn_id': 'cno3fi5daugt7mgdqvtg-16k5y'}
___wallet_balance
2024-04-17 07:02:53,274 - websocket - ERROR - error from callback <function _WebSocketManager._connect.. at 0x78a6960a2e60>: Authorization for Unified V5 (Auth) failed. Please check your API keys and resync your system time. Raw error: {'success': False, 'ret_msg': 'Params Error', 'op': 'auth', 'conn_id': 'cno3fi5daugt7mgdqvtg-16k5y'}
2024-04-17 07:02:53,274 - websocket - INFO - tearing down on exception Authorization for Unified V5 (Auth) failed. Please check your API keys and resync your system time. Raw error: {'success': False, 'ret_msg': 'Params Error', 'op': 'auth', 'conn_id': 'cno3fi5daugt7mgdqvtg-16k5y'}
___get_position_info
___trading_history
Bybit - loading trading history, startTime=2024-04-17 03:00:00, received: 1 records.
___trading_history
Bybit - loading trading history, startTime=2024-04-17 03:00:00, received: 1 records.
___trading_history
Bybit - loading trading history, startTime=2024-04-17 03:00:00, received: 1 records.
___open_orders
Exception in thread Thread-7:
Traceback (most recent call last):
File "/usr/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
self.run()
File "/usr/lib/python3.10/threading.py", line 1378, in run
self.function(*self.args, **self.kwargs)
File "/home/tmatic_240417/api/bybit/pybit/_websocket_stream.py", line 247, in _send_custom_ping
self.ws.send(self.custom_ping_message)
File "/home/.local/lib/python3.10/site-packages/websocket/_app.py", line 284, in send
raise WebSocketConnectionClosedException("Connection is already closed.")
websocket._exceptions.WebSocketConnectionClosedException: Connection is already closed.

ORDER_MARG field does not react while posting new orders

On Bitmex as well as on Bybit. For instance, I post two XBTUSDT Bitmex' orders with QTY=0.001 => the ORDER_MARG is still = 0. Posting the third order with the same parameters sets the ORDER_MARG to a non-zero state. But if I post the same instrument straightaway with QTY=0.003, then the ORDER_MARG is not zero too.

Screenshot from 2024-04-26 16-53-55

Error after reloading pressing F3

This error occurs when (1) two markets connected, (2) the second one is currently selected, (3) you press F3 button to reload Tmatic.

2024-05-21 11:17:31,731 - websocket - INFO - Websocket connected
2024-05-21 11:17:31,732 - websocket - INFO - Websocket connected
2024-05-21 11:17:31,732 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 (Auth) connected
2024-05-21 11:17:31,733 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 connected
2024-05-21 11:17:31,734 - api.bybit.ws - INFO - ws subscription - orderbook_stream - category - linear - symbol - ('BTCUSDT', 'linear', 'Bybit')
2024-05-21 11:17:31,734 - api.bybit.ws - INFO - ws subscription - ticker_stream - category - linear - symbol - ('BTCUSDT', 'linear', 'Bybit')
2024-05-21 11:17:31,758 - api.bybit.agent - INFO - In trading_history - sending get_executions() - category - spot - startTime - 2024-05-20 10:55:25+00:00
2024-05-21 11:17:31,759 - api.bybit.agent - INFO - In open_orders - sending open_orders() - parameters - {'openOnly': 0, 'limit': 50, 'category': 'spot', 'cursor': 'no'}
2024-05-21 11:17:31,760 - api.bitmex.ws - INFO - (https) sending GET to execution/tradeHistory?count=500&reverse=false&startTime=2024-05-21 07:56:44: ""
2024-05-21 11:17:31,766 - api.bybit.agent - INFO - In trading_history - sending get_executions() - category - inverse - startTime - 2024-05-20 10:55:25+00:00
2024-05-21 11:17:31,769 - api.bybit.agent - INFO - In open_orders - sending open_orders() - parameters - {'openOnly': 0, 'limit': 50, 'category': 'linear', 'settleCoin': 'USDT', 'cursor': 'no'}
2024-05-21 11:17:31,770 - api.bybit.agent - INFO - In trading_history - sending get_executions() - category - option - startTime - 2024-05-20 10:55:25+00:00
2024-05-21 11:17:31,773 - api.bybit.agent - INFO - In trading_history - sending get_executions() - category - linear - startTime - 2024-05-20 10:55:25+00:00
2024-05-21 11:17:31,999 - api.bybit.agent - INFO - In trading_history - sending get_executions() - category - linear - startTime - 2024-05-20 10:55:25+00:00
Bybit - loading trading history, startTime=2024-05-20 10:55:25+00:00, received: 1 records.
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.10/tkinter/init.py", line 1921, in call
return self.func(*args)
File "/usr/lib/python3.10/tkinter/init.py", line 839, in callit
func(*args)
File "/home/rmn/tmatic_240521/main.py", line 16, in refresh
connect.refresh()
File "/home/rmn/tmatic_240521/connect.py", line 145, in refresh
Function.refresh_on_screen(Markets[var.current_market], utc=utc)
File "/home/rmn/tmatic_240521/functions.py", line 709, in refresh_on_screen
Function.refresh_tables(self)
File "/home/rmn/tmatic_240521/functions.py", line 728, in refresh_tables
if compare != tree.cache[num]:
IndexError: list index out of range

Some errors

2024-05-16 13:49:08,311 - api.bybit.pybit._websocket_stream - ERROR - WebSocket Unified V5 (Auth) (wss://stream-testnet.bybit.com/v5/private) encountered error: Connection to remote host was lost..
2024-05-16 13:49:08,312 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 (Auth) attempting connection...
2024-05-16 13:49:13,115 - api.bitmex.ws - INFO - (https) sending GET to announcement/urgent: ""
2024-05-16 13:49:16,367 - api.bitmex.ws - ERROR - Unable to contact API: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response')). https://testnet.bitmex.com/api/v1/announcement/urgent: ""
2024-05-16 13:49:16,483 - websocket - INFO - Websocket connected
2024-05-16 13:49:16,483 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 (Auth) connected
2024-05-16 13:49:16,484 - websocket - ERROR - Connection to remote host was lost. - goodbye
2024-05-16 13:49:19,238 - api.bitmex.ws - INFO - (https) sending GET to announcement/urgent: ""
2024-05-16 13:49:21,517 - api.bybit.pybit._websocket_stream - ERROR - WebSocket Unified V5 (wss://stream-testnet.bybit.com/v5/public/linear) encountered error: ping/pong timed out.
2024-05-16 13:49:21,615 - api.bitmex.ws - INFO - Bitmex - Websocket closed
2024-05-16 13:49:22,873 - api.bitmex.ws - INFO - (https) sending GET to instrument/active: ""
2024-05-16 13:49:23,026 - api.bitmex.ws - INFO - Connecting to websocket
2024-05-16 13:49:23,027 - api.bitmex.ws - INFO - (https) sending GET to user: ""
2024-05-16 13:49:23,027 - api.bitmex.ws - INFO - Authenticating with API key.
2024-05-16 13:49:23,027 - api.bitmex.ws - INFO - (https) sending GET to position: ""
2024-05-16 13:49:23,344 - websocket - INFO - Websocket connected
2024-05-16 13:49:24,031 - api.bitmex.ws - INFO - Connected to websocket.
2024-05-16 13:49:24,240 - api.bitmex.ws - INFO - Data received. Continuing.
2024-05-16 13:49:24,267 - api.bitmex.ws - INFO - (https) sending GET to execution/tradeHistory?count=500&reverse=false&startTime=2024-05-16 04:00:00: ""
2024-05-16 13:49:24,519 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 attempting connection...
2024-05-16 13:49:25,248 - api.bitmex.ws - INFO - Bitmex - Websocket closed
2024-05-16 13:49:25,327 - websocket - INFO - Websocket connected
2024-05-16 13:49:25,376 - websocket - ERROR - error from callback <function _WebSocketManager._connect.. at 0x1096e7f60>: 'NoneType' object has no attribute 'sock'
2024-05-16 13:49:25,389 - websocket - INFO - tearing down on exception 'NoneType' object has no attribute 'sock'
2024-05-16 13:49:25,395 - api.bybit.pybit._websocket_stream - INFO - WebSocket Unified V5 attempting connection...
2024-05-16 13:49:25,505 - api.bybit.ws - INFO - Bybit - Websocket closed
Exception in Tkinter callback
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/tkinter/init.py", line 1967, in call
return self.func(*args)
^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/tkinter/init.py", line 861, in callit
func(*args)
File "/Users/nrmn/Documents/tmatic_240516_1/main.py", line 16, in refresh
connect.refresh()
File "/Users/nrmn/Documents/tmatic_240516_1/connect.py", line 133, in refresh
Function.refresh_on_screen(Markets[var.current_market], utc=utc)
File "/Users/nrmn/Documents/tmatic_240516_1/functions.py", line 696, in refresh_on_screen
disp.label_time["text"] = time.asctime(time.gmtime())
~~~~~~~~~~~~~~~^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/tkinter/init.py", line 1732, in setitem
self.configure({key: value})
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/tkinter/init.py", line 1721, in configure
return self._configure('configure', cnf, kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/tkinter/init.py", line 1711, in _configure
self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
_tkinter.TclError: invalid command name ".!frame.!frame.!label3"

Posting Bybit BTCUSDT.spot reloads Tmatic

2024-04-18 19:25:03,391 - root - INFO - Posting side=Buy price=60000.00 qty=0.01
___place_limit
2024-04-18 19:25:03,588 - api.bybit.errors - ERROR - InvalidRequestError - Buy order price cannot be higher than 58720.0215USDT. (ErrCode: 170193) (ErrTime: 16:25:03).
Request → POST https://api-testnet.bybit.com/v5/order/create: {"category": "spot", "symbol": "BTCUSDT", "side": "Buy", "orderType": "Limit", "qty": "0.01", "price": "60000.00", "orderLinkId": "1224561393.BTCUSDT.spot"}.
2024-04-18 19:25:04,340 - api.bybit.ws - INFO - Websocket closed

Strange behavior of POS_MARG field

When I trade 600 Bitmex XBTUSD at apprx 64000 the AVAILABLE field changes by 0,000103 XBt. This is correct taking into consideration that the leverage factor is x100. The same time the POS_MARG field changes its value only by 0.000026 XBt. This is incorrect because the AVAILABLE field is a result of the POS_MARG subtraction (Available Balance = Wallet Balance + Unrealised PNL - Order Margin - Position Margin).

RuntimeError: main thread is not in main loop

2024-04-27 18:40:31,517 - api.bybit.agent - INFO - In trading_history - sending get_executions() - category - linear - startTime - 2024-04-27 13:51:38+00:00
Bybit - loading trading history, startTime=2024-04-27 13:51:38+00:00, received: 1 records.
2024-04-27 18:40:32,429 - api.bybit.agent - INFO - In trading_history - sending open_orders() - parameters - {'openOnly': 0, 'limit': 50, 'category': 'spot', 'cursor': 'no'}
2024-04-27 18:40:32,651 - api.bybit.agent - INFO - In trading_history - sending open_orders() - parameters - {'openOnly': 0, 'limit': 50, 'category': 'inverse', 'settleCoin': 'BTC', 'cursor': 'no'}
_____________error RuntimeError
Traceback (most recent call last):
File "/home/rmn/tmatic_240424/api/bybit/errors.py", line 18, in decorator
result = method(*args, **kwargs)
File "/home/rmn/tmatic_240424/api/bybit/ws.py", line 306, in __handle_order
self.transaction(row=row)
File "/home/rmn/tmatic_240424/functions.py", line 404, in transaction
Function.orders_processing(self, row=row, info=info)
File "/home/rmn/tmatic_240424/functions.py", line 501, in orders_processing
info_display(
File "/home/rmn/tmatic_240424/display/functions.py", line 16, in info_display
disp.text_info.configure(state='normal')
File "/usr/lib/python3.10/tkinter/init.py", line 1675, in configure
return self._configure('configure', cnf, kw)
File "/usr/lib/python3.10/tkinter/init.py", line 1665, in _configure
self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
RuntimeError: main thread is not in main loop
Aborted (core dumped)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.