forked from kodorvan/stcs
The entire database has been changed to PostgresSQL. The entire code has been updated.
This commit is contained in:
449
app/telegram/keyboards/inline.py
Normal file
449
app/telegram/keyboards/inline.py
Normal file
@@ -0,0 +1,449 @@
|
||||
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup
|
||||
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
||||
|
||||
connect_the_platform = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="Подключить платформу", callback_data="connect_platform"
|
||||
)
|
||||
]
|
||||
]
|
||||
)
|
||||
|
||||
add_bybit_api = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[InlineKeyboardButton(text="Добавить API", callback_data="add_bybit_api")]
|
||||
]
|
||||
)
|
||||
|
||||
profile_bybit = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[InlineKeyboardButton(text="На главную", callback_data="profile_bybit")]
|
||||
]
|
||||
)
|
||||
|
||||
cancel = InlineKeyboardMarkup(
|
||||
inline_keyboard=[[InlineKeyboardButton(text="Отменить", callback_data="cancel")]]
|
||||
)
|
||||
|
||||
main_menu = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[InlineKeyboardButton(text="Настройки", callback_data="main_settings")],
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="Сменить торговую пару", callback_data="change_symbol"
|
||||
)
|
||||
],
|
||||
[InlineKeyboardButton(text="Мои сделки", callback_data="my_deals")],
|
||||
[InlineKeyboardButton(text="Начать торговлю", callback_data="start_trading")],
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="Остановить торговлю", callback_data="stop_trading"
|
||||
)
|
||||
],
|
||||
]
|
||||
)
|
||||
|
||||
# MAIN SETTINGS
|
||||
main_settings = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="Основные настройки", callback_data="additional_settings"
|
||||
),
|
||||
InlineKeyboardButton(
|
||||
text="Риск-менеджмент", callback_data="risk_management"
|
||||
),
|
||||
],
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="Условия запуска", callback_data="conditional_settings"
|
||||
)
|
||||
],
|
||||
[InlineKeyboardButton(text="Назад", callback_data="profile_bybit")],
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
# additional_settings
|
||||
def get_additional_settings_keyboard(
|
||||
current_order_type: str, conditional_order: str
|
||||
) -> InlineKeyboardMarkup:
|
||||
"""
|
||||
Create keyboard for additional settings
|
||||
:param current_order_type: Market, Limit or Conditional
|
||||
:param conditional_order: Market or Limit
|
||||
:return: InlineKeyboardMarkup
|
||||
"""
|
||||
buttons = [
|
||||
[
|
||||
InlineKeyboardButton(text="Режим позиции", callback_data="trade_mode"),
|
||||
InlineKeyboardButton(text="Тип маржи", callback_data="margin_type"),
|
||||
],
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="Размер кредитного плеча", callback_data="leverage"
|
||||
),
|
||||
InlineKeyboardButton(text="Тип ордера", callback_data="order_type"),
|
||||
],
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="Количество ордера", callback_data="order_quantity"
|
||||
),
|
||||
InlineKeyboardButton(
|
||||
text="Коэффициент мартингейла", callback_data="martingale_factor"
|
||||
),
|
||||
],
|
||||
]
|
||||
|
||||
if current_order_type == "Conditional":
|
||||
buttons.append(
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="Тип условного ордера", callback_data="conditional_order_type"
|
||||
)
|
||||
]
|
||||
)
|
||||
buttons.append(
|
||||
[InlineKeyboardButton(text="Триггер цена", callback_data="trigger_price")]
|
||||
)
|
||||
if conditional_order == "Limit":
|
||||
buttons.append(
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="Цена лимитного ордера", callback_data="limit_price"
|
||||
)
|
||||
]
|
||||
)
|
||||
elif current_order_type == "Limit":
|
||||
buttons.append(
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="Цена лимитного ордера", callback_data="limit_price"
|
||||
)
|
||||
]
|
||||
)
|
||||
|
||||
buttons.append(
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="Максимальное кол-во ставок в серии",
|
||||
callback_data="max_bets_in_series",
|
||||
)
|
||||
]
|
||||
)
|
||||
buttons.append(
|
||||
[
|
||||
InlineKeyboardButton(text="Назад", callback_data="main_settings"),
|
||||
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
|
||||
]
|
||||
)
|
||||
|
||||
return InlineKeyboardMarkup(inline_keyboard=buttons)
|
||||
|
||||
|
||||
order_type = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(text="Рыночный", callback_data="Market"),
|
||||
InlineKeyboardButton(text="Лимитный", callback_data="Limit"),
|
||||
],
|
||||
[InlineKeyboardButton(text="Условный", callback_data="Conditional")],
|
||||
[
|
||||
InlineKeyboardButton(text="Назад", callback_data="additional_settings"),
|
||||
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
|
||||
],
|
||||
]
|
||||
)
|
||||
|
||||
conditional_order_type = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(text="Рыночный", callback_data="set_market"),
|
||||
InlineKeyboardButton(text="Лимитный", callback_data="set_limit"),
|
||||
],
|
||||
[
|
||||
InlineKeyboardButton(text="Назад", callback_data="additional_settings"),
|
||||
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
|
||||
],
|
||||
]
|
||||
)
|
||||
|
||||
trade_mode = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="Односторонний режим", callback_data="Merged_Single"
|
||||
),
|
||||
InlineKeyboardButton(text="Хеджирование", callback_data="Both_Sides"),
|
||||
],
|
||||
[
|
||||
InlineKeyboardButton(text="Назад", callback_data="additional_settings"),
|
||||
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
|
||||
],
|
||||
]
|
||||
)
|
||||
|
||||
margin_type = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(text="Изолированная", callback_data="ISOLATED_MARGIN"),
|
||||
InlineKeyboardButton(text="Кросс", callback_data="REGULAR_MARGIN"),
|
||||
],
|
||||
[
|
||||
InlineKeyboardButton(text="Назад", callback_data="additional_settings"),
|
||||
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
|
||||
],
|
||||
]
|
||||
)
|
||||
|
||||
back_to_additional_settings = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(text="Назад", callback_data="additional_settings"),
|
||||
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
|
||||
],
|
||||
]
|
||||
)
|
||||
|
||||
change_limit_price = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="Установить цену", callback_data="set_limit_price"
|
||||
),
|
||||
InlineKeyboardButton(text="Последняя цена", callback_data="last_price"),
|
||||
],
|
||||
[
|
||||
InlineKeyboardButton(text="Назад", callback_data="additional_settings"),
|
||||
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
|
||||
],
|
||||
]
|
||||
)
|
||||
|
||||
back_to_change_limit_price = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(text="Назад", callback_data="limit_price"),
|
||||
InlineKeyboardButton(
|
||||
text="Основные настройки", callback_data="additional_settings"
|
||||
),
|
||||
],
|
||||
[InlineKeyboardButton(text="На главную", callback_data="profile_bybit")],
|
||||
]
|
||||
)
|
||||
|
||||
# risk_management
|
||||
risk_management = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="Изм. цены прибыли", callback_data="take_profit_percent"
|
||||
),
|
||||
InlineKeyboardButton(
|
||||
text="Изм. цены убытка", callback_data="stop_loss_percent"
|
||||
),
|
||||
],
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="Максимальный риск", callback_data="max_risk_percent"
|
||||
)
|
||||
],
|
||||
[InlineKeyboardButton(text="Комиссия биржи", callback_data="commission_fee")],
|
||||
[
|
||||
InlineKeyboardButton(text="Назад", callback_data="main_settings"),
|
||||
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
|
||||
],
|
||||
]
|
||||
)
|
||||
|
||||
back_to_risk_management = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(text="Назад", callback_data="risk_management"),
|
||||
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
|
||||
],
|
||||
]
|
||||
)
|
||||
|
||||
commission_fee = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(text="Да", callback_data="Yes_commission_fee"),
|
||||
InlineKeyboardButton(text="Нет", callback_data="No_commission_fee"),
|
||||
],
|
||||
[
|
||||
InlineKeyboardButton(text="Назад", callback_data="risk_management"),
|
||||
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
|
||||
],
|
||||
]
|
||||
)
|
||||
|
||||
# conditions
|
||||
conditions = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(text="Таймер для старта", callback_data="start_timer"),
|
||||
InlineKeyboardButton(
|
||||
text="Таймер для остановки", callback_data="stop_timer"
|
||||
),
|
||||
],
|
||||
[
|
||||
InlineKeyboardButton(text="Назад", callback_data="main_settings"),
|
||||
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
|
||||
],
|
||||
]
|
||||
)
|
||||
|
||||
back_to_conditions = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(text="Назад", callback_data="conditional_settings"),
|
||||
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
|
||||
],
|
||||
]
|
||||
)
|
||||
|
||||
# SYMBOL
|
||||
symbol = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(text="Назад", callback_data="profile_bybit"),
|
||||
],
|
||||
]
|
||||
)
|
||||
|
||||
# POSITION
|
||||
|
||||
change_position = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(text="Позиции", callback_data="change_position"),
|
||||
InlineKeyboardButton(text="Открытые ордера", callback_data="open_orders"),
|
||||
],
|
||||
[InlineKeyboardButton(text="Назад", callback_data="profile_bybit")],
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def create_active_positions_keyboard(symbols):
|
||||
builder = InlineKeyboardBuilder()
|
||||
for sym in symbols:
|
||||
builder.button(text=f"{sym}", callback_data=f"get_position_{sym}")
|
||||
builder.button(text="Назад", callback_data="my_deals")
|
||||
builder.button(text="На главную", callback_data="profile_bybit")
|
||||
builder.adjust(2)
|
||||
return builder.as_markup()
|
||||
|
||||
|
||||
def make_close_position_keyboard(symbol_pos: str):
|
||||
return InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="Закрыть позицию", callback_data=f"close_position_{symbol_pos}"
|
||||
)
|
||||
],
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="Установить TP/SL", callback_data=f"pos_tp_sl_{symbol_pos}"
|
||||
)
|
||||
],
|
||||
[
|
||||
InlineKeyboardButton(text="Назад", callback_data="my_deals"),
|
||||
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
|
||||
],
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def create_active_orders_keyboard(orders):
|
||||
builder = InlineKeyboardBuilder()
|
||||
for order in orders:
|
||||
builder.button(text=f"{order}", callback_data=f"get_order_{order}")
|
||||
builder.button(text="Закрыть все ордера", callback_data="cancel_all_orders")
|
||||
builder.button(text="Назад", callback_data="my_deals")
|
||||
builder.button(text="На главную", callback_data="profile_bybit")
|
||||
builder.adjust(2)
|
||||
return builder.as_markup()
|
||||
|
||||
|
||||
def make_close_orders_keyboard(symbol_order: str):
|
||||
return InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="Закрыть ордер", callback_data=f"close_order_{symbol_order}"
|
||||
)
|
||||
],
|
||||
[
|
||||
InlineKeyboardButton(text="Назад", callback_data="my_deals"),
|
||||
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
|
||||
],
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
# START TRADING
|
||||
|
||||
merged_start_trading = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(text="Лонг", callback_data="long"),
|
||||
InlineKeyboardButton(text="Шорт", callback_data="short"),
|
||||
],
|
||||
[InlineKeyboardButton(text="Свитч", callback_data="switch")],
|
||||
[InlineKeyboardButton(text="Назад", callback_data="profile_bybit")],
|
||||
]
|
||||
)
|
||||
|
||||
both_start_trading = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(text="Лонг", callback_data="long"),
|
||||
InlineKeyboardButton(text="Шорт", callback_data="short"),
|
||||
],
|
||||
[InlineKeyboardButton(text="Назад", callback_data="profile_bybit")],
|
||||
]
|
||||
)
|
||||
|
||||
switch_side = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(text="Лонг", callback_data="switch_long"),
|
||||
InlineKeyboardButton(text="Шорт", callback_data="switch_short"),
|
||||
],
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="По направлению", callback_data="switch_direction"
|
||||
),
|
||||
InlineKeyboardButton(
|
||||
text="Противоположно", callback_data="switch_opposite"
|
||||
),
|
||||
],
|
||||
[
|
||||
InlineKeyboardButton(text="Назад", callback_data="start_trading"),
|
||||
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
|
||||
],
|
||||
]
|
||||
)
|
||||
|
||||
back_to_start_trading = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(text="Назад", callback_data="start_trading"),
|
||||
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
|
||||
],
|
||||
]
|
||||
)
|
||||
|
||||
cancel_timer = InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[InlineKeyboardButton(text="Отменить таймер", callback_data="cancel_timer")],
|
||||
[
|
||||
InlineKeyboardButton(text="Назад", callback_data="conditions"),
|
||||
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
|
||||
],
|
||||
]
|
||||
)
|
8
app/telegram/keyboards/reply.py
Normal file
8
app/telegram/keyboards/reply.py
Normal file
@@ -0,0 +1,8 @@
|
||||
from aiogram.types import KeyboardButton, ReplyKeyboardMarkup
|
||||
|
||||
profile = ReplyKeyboardMarkup(
|
||||
keyboard=[[KeyboardButton(text="Панель Bybit"), KeyboardButton(text="Профиль")]],
|
||||
resize_keyboard=True,
|
||||
one_time_keyboard=True,
|
||||
input_field_placeholder="Выберите пункт меню...",
|
||||
)
|
Reference in New Issue
Block a user