Skip to content

Commit

Permalink
Update 10/06/2020
Browse files Browse the repository at this point in the history
Add .config file and installer, modify principal script and excel configuration
  • Loading branch information
thremilien committed Jun 10, 2020
1 parent d49cd16 commit 3a23e60
Show file tree
Hide file tree
Showing 4 changed files with 140 additions and 54 deletions.
4 changes: 4 additions & 0 deletions CryptExcel.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
api_key = xxxxx
secret_key = xxxxx
pairs = ETHUSDT, ETHEUR
refresh = 10
171 changes: 117 additions & 54 deletions CryptExcel.py
Original file line number Diff line number Diff line change
@@ -1,58 +1,121 @@
from binance.client import Client
from datetime import datetime
from time import sleep
import openpyxl

#Binance API
api_key = "Your api key"
secret_key = "Your secret key"
client = Client(api_key, secret_key)
balances = client.get_account().get('balances')
prices = client.get_all_tickers()
pairs = ["ETHUSDT", "ETHEUR"] #Add in the array the other pairs for which you want to recover the trade
trades = []
for pair in pairs:
trade = (client.get_all_orders(symbol=pair, limit=1000))
for order in trade:
trades.append(order)


#Excel Values
workbook = openpyxl.load_workbook('trading.xlsx')
DetailledHome = workbook.get_sheet_by_name('DetailledHome')
Wallet = workbook.get_sheet_by_name('Wallet')
values = workbook.get_sheet_by_name('Values')
alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']



#Fill Wallet sheet
y=2
for balance in balances:
x=0
for i in balance:
Wallet[alphabet[x]+str(y)] = balance.get(i)
x += 1
y += 1


#Fill DetailledHome
y=2
for order in trades:
x=0
for i in order:
if i == "time" or i == "updateTime":
timestamp = int(str(order.get(i))[:-3])
time = datetime.fromtimestamp(timestamp)
DetailledHome[alphabet[x]+str(y)] = str(time)
x+=1
DetailledHome[alphabet[x]+str(y)] = order.get(i)
x+=1
y+=1

#Fill Values
for i in range(len(prices)):
values[f'A{i+2}'] = prices[i].get('symbol')
values[f'B{i+2}'] = prices[i].get('price')

#Save Excel
workbook.save('trading.xlsx')
#Read CryptExcel.config
f = open("CryptExcel.config", "r")
content = f.read().split("\n")
api_key = content[0].replace("api_key", "").replace("=", "").strip()
secret_key = content[1].replace("secret_key", "").replace("=", "").strip()
pairs = content[2].replace("pairs", "").replace("=", "").replace(" ", "").strip().split(",")
refresh = int(content[3].replace("refresh", "").replace("=", "").strip())

def modify():
#Binance API
client = Client(api_key, secret_key)
balances = client.get_account().get('balances')
prices = client.get_all_tickers()
trades = []
for pair in pairs:
trade = (client.get_all_orders(symbol=pair, limit=1000))
for order in trade:
trades.append(order)

#Excel Values
workbook = openpyxl.load_workbook('trading.xlsx')
Home = workbook.get_sheet_by_name('Home')
DetailledHome = workbook.get_sheet_by_name('DetailledHome')
Wallet = workbook.get_sheet_by_name('Wallet')
values = workbook.get_sheet_by_name('Values')

#Fill Wallet sheet
for i in range(len(balances)):
Wallet[f'A{i+2}'] = balances[i].get('asset')
Wallet[f'B{i+2}'] = balances[i].get('free')
Wallet[f'C{i+2}'] = balances[i].get('locked')
Wallet['E1'] = "Last update at " + str(datetime.now().strftime("%H:%M:%S %d/%m/%Y"))


#Fill DetailledHome sheet
trade_id = []
for i in range(2, 10000):
val = DetailledHome[f'B{i}'].value
if val != None:
trade_id.append(val)

for order in trades:
if trade_id.count(order.get('orderId')) == 0:
DetailledHome[f'A{len(trade_id)+2}'] = order.get('symbol')
DetailledHome[f'B{len(trade_id)+2}'] = order.get('orderId')
DetailledHome[f'C{len(trade_id)+2}'] = order.get('orderListId')
DetailledHome[f'D{len(trade_id)+2}'] = order.get('clientOrderId')
DetailledHome[f'E{len(trade_id)+2}'] = order.get('price')
DetailledHome[f'F{len(trade_id)+2}'] = order.get('origQty')
DetailledHome[f'G{len(trade_id)+2}'] = order.get('executedQty')
DetailledHome[f'H{len(trade_id)+2}'] = order.get('cummulativeQuoteQty')
DetailledHome[f'I{len(trade_id)+2}'] = order.get('status')
DetailledHome[f'J{len(trade_id)+2}'] = order.get('timeInForce')
DetailledHome[f'K{len(trade_id)+2}'] = order.get('type')
DetailledHome[f'L{len(trade_id)+2}'] = order.get('side')
DetailledHome[f'M{len(trade_id)+2}'] = order.get('stopPrice')
DetailledHome[f'N{len(trade_id)+2}'] = order.get('icebergQty')
DetailledHome[f'O{len(trade_id)+2}'] = datetime.fromtimestamp(int(str(order.get('time'))[:-3]))
DetailledHome[f'P{len(trade_id)+2}'] = order.get('time')
DetailledHome[f'Q{len(trade_id)+2}'] = datetime.fromtimestamp(int(str(order.get('updateTime'))[:-3]))
DetailledHome[f'R{len(trade_id)+2}'] = order.get('updateTime')
DetailledHome[f'S{len(trade_id)+2}'] = order.get('isWorking')
DetailledHome[f'T{len(trade_id)+2}'] = order.get('origQuoteOrderQty')
trade_id.append(order.get('orderId'))
else:
index = trade_id.index(order.get('orderId'))
DetailledHome[f'A{index+2}'] = order.get('symbol')
DetailledHome[f'B{index+2}'] = order.get('orderId')
DetailledHome[f'C{index+2}'] = order.get('orderListId')
DetailledHome[f'D{index+2}'] = order.get('clientOrderId')
DetailledHome[f'E{index+2}'] = order.get('price')
DetailledHome[f'F{index+2}'] = order.get('origQty')
DetailledHome[f'G{index+2}'] = order.get('executedQty')
DetailledHome[f'H{index+2}'] = order.get('cummulativeQuoteQty')
DetailledHome[f'I{index+2}'] = order.get('status')
DetailledHome[f'J{index+2}'] = order.get('timeInForce')
DetailledHome[f'K{index+2}'] = order.get('type')
DetailledHome[f'L{index+2}'] = order.get('side')
DetailledHome[f'M{index+2}'] = order.get('stopPrice')
DetailledHome[f'N{index+2}'] = order.get('icebergQty')
DetailledHome[f'O{index+2}'] = datetime.fromtimestamp(int(str(order.get('time'))[:-3]))
DetailledHome[f'P{index+2}'] = order.get('time')
DetailledHome[f'Q{index+2}'] = datetime.fromtimestamp(int(str(order.get('updateTime'))[:-3]))
DetailledHome[f'R{index+2}'] = order.get('updateTime')
DetailledHome[f'S{index+2}'] = order.get('isWorking')
DetailledHome[f'T{index+2}'] = order.get('origQuoteOrderQty')
DetailledHome['V1'] = "Last update at " + str(datetime.now().strftime("%H:%M:%S %d-%m-%Y"))

#Feel Home sheet
for i in range(len(trade_id)):
Home[f'A{i+2}'] = f'=DetailledHome!O{i+2}'
Home[f'B{i+2}'] = f'=DetailledHome!A{i+2}'
Home[f'C{i+2}'] = f'=DetailledHome!L{i+2}'
Home[f'D{i+2}'] = round(float(DetailledHome[f'F{i+2}'].value)*float(DetailledHome[f'E{i+2}'].value), 4)
Home[f'E{i+2}'] = f'=DetailledHome!F{i+2}'
Home[f'G{i+2}'] = f'=DetailledHome!E{i+2}'
Home[f'H{i+2}'] = f'=DetailledHome!I{i+2}'
Home['K1'] = '=DetailledHome!V1'

#Fill Values sheet
for i in range(len(prices)):
values[f'A{i+2}'] = prices[i].get('symbol')
values[f'B{i+2}'] = prices[i].get('price')
values['D1'] = "Last update at " + str(datetime.now().strftime("%H:%M:%S %d-%m-%Y"))

#Save Excel
try:
workbook.save('trading.xlsx')
print('Saved !')
except:
print('Not saved because file is open...')
pass

while True:
modify()
sleep(refresh)
19 changes: 19 additions & 0 deletions Installer.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
@echo off
if not "%1"=="am_admin" (powershell start -verb runas '%0' am_admin & exit /b)
cd %TEMP%
python --version | find "Python 3" >nul 2>nul
if %errorlevel% == 1 (
echo Python 3 isn't install, proceed to install it
curl https://www.python.org/ftp/python/3.8.3/python-3.8.3.exe -O python.exe
python-3.8.3.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0
del /f python-3.8.3.exe
) else (
echo Python 3 is already installed
)
echo Installing libraries
pip install Twisted
pip install python-binance
pip install openpyxl
pip install datetime
pause

Binary file modified trading.xlsx
Binary file not shown.

0 comments on commit 3a23e60

Please sign in to comment.