1
0
forked from kodorvan/stcs

The message about the Bybit profile output has been corrected when clicking the "Start" button, and messages regarding the requirement to connect the platform and incorrect API entries have been added. Messages about successful and erroneous changes to user settings have been added.

This commit is contained in:
Kirill Strelnikov
2025-07-22 16:08:23 +07:00
parent e555bfa8fb
commit 1997b9d1c0
6 changed files with 80 additions and 62 deletions

View File

@@ -71,7 +71,7 @@ async def contract_long(tg_id, message, margin_mode):
setMarginMode=margin_mode # margin_type
)
martingale_factor = float(data_main_stgs['martingale_factor'])
martingale_factor = float(data_main_stgs['martingale_factor']) # Исправлено: было maximal_quantity
max_martingale_steps = int(data_main_stgs['maximal_quantity'])
starting_quantity = float(data_main_stgs['starting_quantity'])
max_risk_percent = float(data_risk_management_stgs['max_risk_deal'])
@@ -98,21 +98,6 @@ async def contract_long(tg_id, message, margin_mode):
realised_pnl = float(position['unrealisedPnl'])
if realised_pnl > 0:
print(f'''
=====================
=====Сделка=========
===уСПЕШНЕАЯ================
===================
=================
{realised_pnl}
===============
===============
=============
===============
==============
''')
starting_quantity = next_quantity
current_martingale_step = 0
elif not realised_pnl:
@@ -122,22 +107,6 @@ async def contract_long(tg_id, message, margin_mode):
current_martingale_step += 1
next_quantity = last_quantity * martingale_factor
starting_quantity = next_quantity
print(f'''
======СДЕЛКА===============
=====УБЫТОЧНАЯ==============
===================
===================
=================
{realised_pnl}
===============
===============
=============
===============
==============
''')
except Exception as e:
print("Не получены позиции")
next_quantity = starting_quantity
@@ -209,7 +178,7 @@ async def contract_short(tg_id, message, margin_mode):
setMarginMode=margin_mode # margin_type
)
martingale_factor = float(data_main_stgs['martingale_factor'])
martingale_factor = float(data_main_stgs['martingale_factor']) # Исправлено: было maximal_quantity
max_martingale_steps = int(data_main_stgs['maximal_quantity'])
starting_quantity = float(data_main_stgs['starting_quantity'])
max_risk_percent = float(data_risk_management_stgs['max_risk_deal'])
@@ -235,17 +204,16 @@ async def contract_short(tg_id, message, margin_mode):
realised_pnl = float(position['unrealisedPnl'])
if realised_pnl > 0: # Прибыльная сделка
if realised_pnl > 0:
starting_quantity = next_quantity
current_martingale_step = 0
elif not realised_pnl:
next_quantity = starting_quantity
current_martingale_step += 1
else: # Убыточная сделка
else:
current_martingale_step += 1
next_quantity = last_quantity * martingale_factor
starting_quantity = next_quantity
except Exception as e:
print("Не получены позиции")
next_quantity = starting_quantity

View File

@@ -13,10 +13,21 @@ async def get_balance(tg_id, message):
api_secret=secret_key
)
try:
balance = client.get_wallet_balance(accountType='UNIFIED', coin='USDT')['result']['list'][0]['coin'][0]['walletBalance']
if api_key == 'None' or secret_key == 'None':
await message.answer('⚠️ Подключите платформу для торговли')
return 0
return balance
try:
check_user = client.get_wallet_balance()
if check_user:
try:
balance = client.get_wallet_balance(accountType='UNIFIED', coin='USDT')['result']['list'][0]['coin'][0]['walletBalance']
return balance
except Exception as e:
await message.answer('⚠️ Ошибка при получении баланса пользователя')
return 0
except Exception as e:
await message.answer('Баланс не был получен, подключите платформу')
await message.answer('⚠️ Неверные данные API, перепроверьте их')
return 0

View File

@@ -20,9 +20,9 @@ class state_update_symbol(StatesGroup):
async def clb_start_bybit_trade_message(callback: CallbackQuery, state: FSMContext):
api = await rq.get_bybit_api_key(callback.from_user.id)
secret = await rq.get_bybit_secret_key(callback.from_user.id)
balance = await get_balance(callback.from_user.id, callback.message)
if api and secret:
balance = await get_balance(callback.from_user.id, callback.message)
if balance:
symbol = await rq.get_symbol(callback.from_user.id)
text = f'''💎 Торговля на Bybit
@@ -30,38 +30,33 @@ async def clb_start_bybit_trade_message(callback: CallbackQuery, state: FSMConte
⚖️ Ваш баланс (USDT): {balance}
📊 Текущая торговая пара: {symbol}
---
Как начать торговлю?
1⃣ Проверьте и тщательно настройте все параметры в вашем профиле.
2⃣ Нажмите ниже кнопку 'Указать торговую пару' и введите торговую пару заглавными буквами, без лишних символов (например: BTCUSDT).
'''
await callback.message.edit_text(text=text, parse_mode='html', reply_markup=inline_markup.trading_markup)
else:
callback.message.answer('Перед началом работы, в настройках подключите bybit')
async def start_bybit_trade_message(message, state):
api = await rq.get_bybit_api_key(message.from_user.id)
secret = await rq.get_bybit_secret_key(message.from_user.id)
balance = await get_balance(message.from_user.id, message)
if api and secret:
balance = await get_balance(message.from_user.id, message)
if balance:
symbol = await rq.get_symbol(message.from_user.id)
text = f'''Торговля на Bybit
text = f'''💎 Торговля на Bybit
⚖️ Ваш баланс (USDT): {balance}
📊 Текущая торговая пара: {symbol}
<b>ваш баланс (USDT):</b> {balance}
<b>Текущая торговая пара: </b> {symbol}
Как начать торговлю?
1. Внимательно проверьте и настройте все параметры в вашем профиле
2. Ниже нажмите 'Указать торговую пару' и отправьте торговую пару заглавными буквами, указав два актива без всяких лишних символов! (Пример: BTCUSDT)
1⃣ Проверьте и тщательно настройте все параметры в вашем профиле.
2⃣ Нажмите ниже кнопку 'Указать торговую пару' и введите торговую пару заглавными буквами, без лишних символов (например: BTCUSDT).
'''
await message.answer(text=text, parse_mode='html', reply_markup=inline_markup.trading_markup)
else:
await message.answer('Перед началом работы, в настройках подключите bybit')
@router_functions_bybit_trade.callback_query(F.data == 'clb_update_trading_pair')
async def update_symbol_for_trade_message(callback: CallbackQuery, state: FSMContext):
@@ -75,6 +70,7 @@ async def update_symbol_for_trade(message: Message, state: FSMContext):
data = await state.get_data()
await message.answer('Пара была успешно обновлена')
await rq.update_symbol(message.from_user.id, data['symbol'])
await start_bybit_trade_message(message, state)