-
Notifications
You must be signed in to change notification settings - Fork 41
/
Copy pathbinance_functions.py
104 lines (92 loc) · 4.52 KB
/
binance_functions.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
93
94
95
96
97
98
99
100
101
102
103
104
from flask import request, jsonify
from binance.enums import *
from binance.client import Client
from message_filter_functions import *
import csv
class Binance(object):
def __init__(self, api_key, secret_key):
self.client = Client(api_key, secret_key)
self.client.API_URL = 'https://testnet.binance.vision/api' #only for testing
# ---- Account Info Commands --- #
def get_account(self):
''' Returns account info '''
recvWindow = { 'recvWindow': 59999 }
account_info = self.client.get_account(**recvWindow)
return account_info
# ---- ---- #
# ---- Order Commands ---- #
def send_order(self, order_type, message):
raw_message = message.text
if order_type == "limit":
order_params = limit_order_message_filter(raw_message)
order_response = self.limit_order(order_params[0], order_params[1], order_params[2], order_params[3], order_params[4], order_params[5])
order_confirmation = order_message(order_response) #Telegram message sent to user
elif order_type == "market":
order_params = market_order_message_filter(raw_message)
order_response = self.market_order(order_params[0], order_params[1], order_params[2], order_params[3])
order_confirmation = order_message(order_response) #Telegram message sent to user
elif order_type =="stoploss":
order_params = stoploss_order_message_filter(raw_message)
order_response = self.stoploss_order(order_params[0], order_params[1], order_params[2], order_params[3], order_params[4], order_params[5], order_params[6])
order_confirmation = stopLoss_message(order_response) #Telegram message sent to user
print(order_response)
return order_confirmation
def market_order(self, symbol, side, order_type, quantity):
''' Executes market orders/Depending on type of order commands '''
try:
order_dictionary = {'symbol': symbol, 'side': side, 'type': order_type, 'quantity': quantity, 'recvWindow': 59999}
order = self.client.create_order(**order_dictionary)
except Exception as e:
print("something went wrong - {}".format(e))
#bot.error_message(symbol, quantity, str(e))
return False
return order
def limit_order(self, symbol, side, order_type, timeInForce, quantity, price):
''' Executes limit orders/Depending on type of order commands '''
try:
order_dictionary = {'symbol': symbol, 'side': side, 'type': order_type, 'timeInForce': timeInForce, 'quantity': quantity, 'price': price, 'recvWindow': 59999}
order = self.client.create_order(**order_dictionary)
except Exception as e:
print("something went wrong - {}".format(e))
#bot.error_message(symbol, quantity, str(e))
return False
return order
def stoploss_order(self, symbol, side, order_type, timeInForce, quantity, price, stopPrice):
try:
order_dictionary = {'symbol': symbol, 'side': side, 'type': order_type, 'timeInForce': timeInForce, 'quantity': quantity, 'price': price, 'stopPrice': stopPrice, 'recvWindow': 59999}
order = self.client.create_order(**order_dictionary)
except Exception as e:
print("something went wrong - {}".format(e))
#bot.error_message(symbol, quantity, str(e))
return False
return order
# ---- ---- #
# ---- Check Orders Commands --- #
def see_all_orders(self, symbol):
try:
dict = { 'symbol': symbol, 'recvWindow': 59999 }
all_orders = self.client.get_all_orders(**dict)
return all_orders
except Exception as e:
print(str(e))
return 'Whoops'
def open_orders(self, symbol):
try:
dict = { 'symbol': symbol, 'recvWindow': 59999 }
open_orders = self.client.get_open_orders(**dict)
print(open_orders)
return open_orders
except Exception as e:
print(str(e))
return 'Whoops'
# ---- ---- #
# ---- Cancel Orders ---- #
def cancel_order(self, message):
try:
cancel_order_params = cancel_order_message_filter(message)
dict = { 'symbol': cancel_order_params[0], 'orderId': cancel_order_params[1], "recvWindow": 59999 }
response = self.client.cancel_order(**dict)
print(response)
return response
except Exception as e:
print(str(e))