Added status and PnL
All checks were successful
Build and Push Docker Image / build-and-push (release) Successful in 1m13s
All checks were successful
Build and Push Docker Image / build-and-push (release) Successful in 1m13s
This commit is contained in:
39
src/main.py
39
src/main.py
@ -1,3 +1,5 @@
|
||||
import time
|
||||
from datetime import datetime
|
||||
import asyncio
|
||||
|
||||
from aiogram import Bot, Dispatcher
|
||||
@ -16,6 +18,7 @@ from logger import generalLogger
|
||||
from logger import tradingLogger
|
||||
|
||||
import bybit
|
||||
import arbus
|
||||
import jsonProcessing
|
||||
|
||||
import credentials
|
||||
@ -54,25 +57,32 @@ stop_router = Router()
|
||||
|
||||
@dp.message(Command("start"))
|
||||
async def commandStart(message: Message) -> None:
|
||||
# print(whitelist.chatIDs)
|
||||
# id = message.from_user.id
|
||||
# print('Got message from', id, ' with type ', type(id))
|
||||
await message.answer(strings.startCommand)
|
||||
|
||||
@dp.message(Command("help"), F.chat.id.in_(whitelist.chatIDs))
|
||||
async def commandHelp(message: Message) -> None:
|
||||
await message.answer(strings.helpCommand)
|
||||
|
||||
@dp.message(Command("status"), F.chat.id.in_(whitelist.chatIDs))
|
||||
async def commandStatus(message: Message) -> None:
|
||||
currentTime = time.time()
|
||||
timeDiff = round(currentTime - arbus.startTime) # Время работы в секундах
|
||||
timeDiffH = round(timeDiff/60/60, 3) # Время работы в часах
|
||||
await message.answer(strings.status + str(timeDiff) + ' секунд' \
|
||||
+ ' (' + str(timeDiffH) + ' часов)')
|
||||
|
||||
|
||||
@dp.message(Command("info"), F.chat.id.in_(whitelist.chatIDs))
|
||||
async def commandInfo(message: Message) -> None:
|
||||
data = await jsonProcessing.loadJson()
|
||||
msgText = strings.foundData
|
||||
msgText = ''
|
||||
if data == {}:
|
||||
msgText = strings.noData
|
||||
else:
|
||||
msgText = strings.foundData
|
||||
for i in data:
|
||||
msgText += (f"<b>{str(i)}</b>: P&L - x%\n")
|
||||
pnl = arbus.getPnL(str(i))
|
||||
msgText += (f"<b>{str(i)}</b>: P&L - {pnl}%\n")
|
||||
await message.answer(msgText)
|
||||
|
||||
|
||||
@ -88,7 +98,7 @@ async def capture_start_pair(message: Message, state: FSMContext):
|
||||
|
||||
t = 0
|
||||
if await jsonProcessing.checkPair(data.get("pair")) == 1:
|
||||
msgText = (f'Стратегия на паре <b>{data.get("pair")}</b> уже запущена.\nПожалуйста остановите стратегию либо введите другую пару.')
|
||||
msgText = strings.strategyAlreadyRunning
|
||||
t = 1
|
||||
else:
|
||||
msgText = strings.askParams
|
||||
@ -118,16 +128,17 @@ async def capture_params(message: Message, state: FSMContext):
|
||||
else:
|
||||
try:
|
||||
asyncio.create_task(bybit.strategy(data.get("pair"), data.get("params")))
|
||||
msgText = (f'Вы запустили стратегию на паре <b>{data.get("pair")}</b> с данными параметрами:\n<b>{data.get("params")}</b>\n')
|
||||
msgText = (f'Вы запустили стратегию на паре <b>{data.get("pair")}</b> \
|
||||
с данными параметрами:\n<b>{data.get("params")}</b>\n')
|
||||
except:
|
||||
await jsonProcessing.deletePair(pair=data.get("pair"))
|
||||
msgText = (f'Возникла ошибка в работе стратегии =( Пожалуйста сообщите об этом администратору.')
|
||||
msgText = (strings.strategyError)
|
||||
elif t == -1:
|
||||
msgText = (f'Параметры введены в неверном формате, пожалуйста начните заново.')
|
||||
msgText = strings.wrongFormat
|
||||
elif t == -2:
|
||||
msgText = (f'Стратегия на паре <b>{data.get("pair")}</b> уже запущена.')
|
||||
msgText = (f"Стратегия на паре <b>{data.get("pair")}</b> уже запущена.")
|
||||
else:
|
||||
msgText = (f'Возникла непредвиденная ошибка. =(')
|
||||
msgText = strings.unexpectedError
|
||||
await message.answer(msgText)
|
||||
await state.clear()
|
||||
|
||||
@ -165,7 +176,9 @@ async def main() -> None:
|
||||
# Main
|
||||
|
||||
if __name__ == "__main__":
|
||||
generalLogger.info("Started bot!")
|
||||
tradingLogger.info("Started bot!")
|
||||
arbus.setStartTime()
|
||||
jsonProcessing.startUp()
|
||||
currentTime = datetime.now().strftime("%H:%M:%S")
|
||||
generalLogger.info(f"Started bot!")
|
||||
tradingLogger.info(f"Started bot!")
|
||||
asyncio.run(main())
|
||||
|
||||
Reference in New Issue
Block a user