1
+ import os
2
+ from datetime import datetime
3
+
4
+ from huobi .client .trade import TradeClient
5
+ from huobi .constant import *
6
+ from huobi .utils import *
7
+
8
+
9
+ access_key = os .environ .get ('ACCESS_KEY' )
10
+ secret_key = os .environ .get ('SECRET_KEY' )
11
+ assert access_key and secret_key , 'ACCESS_KEY or SECRET_KEY env variables not found'
12
+ trade_client = TradeClient (api_key = access_key , secret_key = secret_key , init_log = True )
13
+
14
+ def build_notification_text (order_obj ) -> str :
15
+ """
16
+ Build notification text
17
+ """
18
+
19
+ dt_str_format = '%m/%d/%Y, %H:%M:%S'
20
+
21
+ text = f'{ order_obj .symbol .upper ()} \n ' + \
22
+ f'Order Type: { order_obj .type } \n ' + \
23
+ f'Order State: { order_obj .state } \n ' + \
24
+ f'Price: { order_obj .price } \n ' + \
25
+ f'Amount: { order_obj .amount } \n ' + \
26
+ f'Filled Fees: { order_obj .filled_fees } \n ' + \
27
+ f'Created at: { datetime .fromtimestamp (order_obj .created_at / 1e3 ).strftime (dt_str_format )} '
28
+
29
+ if order_obj .canceled_at :
30
+ dt = datetime .fromtimestamp (order_obj .canceled_at / 1e3 )
31
+ text += f'\n Canceled at: { dt .strftime (dt_str_format )} '
32
+
33
+ if order_obj .finished_at :
34
+ dt = datetime .fromtimestamp (order_obj .finished_at / 1e3 )
35
+ text += f'\n Finished at: { dt .strftime (dt_str_format )} '
36
+
37
+ return text
38
+
39
+ def callback (upd_event : 'OrderUpdateEvent' ):
40
+ """
41
+ Order update callback
42
+ """
43
+
44
+ print ('---- order update : ----' )
45
+ upd_event .print_object ()
46
+
47
+ order_id = upd_event .data .orderId
48
+ order_obj = trade_client .get_order (order_id = order_id )
49
+ LogInfo .output (f'---- get order by order id : { order_id } ----' )
50
+ order_obj .print_object ()
51
+ print ()
52
+
53
+ tg_message = build_notification_text (order_obj )
54
+
55
+ print (f'TG: { tg_message } ' )
56
+
57
+ def subscribe ():
58
+ """
59
+ Subscribe to spot order events
60
+ """
61
+
62
+ from huobi .client .generic import GenericClient
63
+ generic_client = GenericClient ()
64
+ symbol_objs = generic_client .get_exchange_symbols ()
65
+ symbols = ',' .join ([list_obj .symbol for list_obj in symbol_objs ])
66
+ print (symbols )
67
+ trade_client .sub_order_update (symbols = symbols , callback = callback )
68
+
69
+ if __name__ == "__main__" :
70
+ subscribe ()
0 commit comments