Added status and PnL
All checks were successful
Build and Push Docker Image / build-and-push (release) Successful in 1m13s

This commit is contained in:
2025-05-19 15:45:30 +03:00
parent 330d34702f
commit 808f7112f7
7 changed files with 91 additions and 21 deletions

View File

@ -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())