-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathOrder.py
92 lines (82 loc) · 2.87 KB
/
Order.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import Database as _DATABASE
import Exchange as _EXCHANGE
import Helper as _HELPER
import User as _USER
import sys
class Order():
def __init__(self, params=None):
self.id = params['id']
self.bot_id = params['bot_id']
self.market = params['market']
self.currency = params['currency']
self.buy_value = params['buy_value']
self.sell_value = params['sell_value']
self.amount = params['amount']
self.status = params['status']
self.date = params['date']
self.binance = _EXCHANGE.Exchange()
def execute_buy(self, bot_status, bot_id):
Database = _DATABASE.Database()
symbol = self.currency+"/"+self.market
print("BOTAO STATUS E:%s"% bot_status)
if(bot_status == 2):
_HELPER.log("[execute_buy] Abrindo uma ordem simulada para o par: %s-%s"% (self.market, self.currency))
Database.open_order(self, '2')
Database.insert_queue(bot_id)
return
Success, ID = self.binance.send_buy_order({
'symbol': symbol,
'amount': self.amount,
'price': self.buy_value,
})
if(Success == False):
_HELPER.log.warning("[execute_buy] Ordem nao executada pelo livro: %s-%s"% (self.market, self.currency))
return
else:
_HELPER.log("[execute_buy] Abrindo uma ordem real para o par: %s-%s"% (self.market, self.currency))
Database.open_order(self, ID)
Database.insert_queue(bot_id)
def execute_sell(self, bot_status):
Database = _DATABASE.Database()
symbol = self.currency+"/"+self.market
User = _USER.User(sys.argv[2])
if(bot_status == 2):
_HELPER.log("[execute_sell] Fechando uma ordem simulada para o par: %s-%s"% (self.market, self.currency))
Database.close_order(self, '3')
# Apply fee to user if trade as winner
User.fee(self)
return
Success, ID = self.binance.send_sell_order({
'symbol': symbol,
'amount': self.amount*0.99,
'price': self.sell_value,
})
if(Success == False):
_HELPER.log.warning("[execute_sell] Ordem nao executada pelo livro: %s-%s"% (self.market, self.currency))
return
else:
_HELPER.log("[execute_sell] Fechando uma ordem real para o par: %s-%s"% (self.market, self.currency))
Database.close_order(self, ID)
# Apply fee to user if trade as winner
User.fee(self)
def queue_signal(self):
Database = _DATABASE.Database()
Database.insert_queue(self.bot_id)
return
def get_precision(self):
self.binance.load_markets()
precision = self.binance.market(self.currency+"/"+self.market)['precision']['amount']
return precision
def check_precision(self):
precision = float(self.get_precision())
if (precision == 1):
return int(self.amount)
elif (precision == 2):
self.amount = str(self.amount)[:4]
return float(self.amount)
elif(precision == 3):
self.amount = str(self.amount)[:5]
return float(self.amount)
else:
self.amount = str(self.amount)[:9]
return float(self.amount)