Files
stcs/app/telegram/keyboards/inline.py

385 lines
12 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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="start_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(mode: str
) -> InlineKeyboardMarkup:
"""
Create keyboard for additional settings
:param mode: Trade mode
: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_quantity"),
],
[
InlineKeyboardButton(
text="Коэффициент мартингейла", callback_data="martingale_factor"
),
InlineKeyboardButton(text="Триггер цена", callback_data="trigger_price"
),
],
]
if mode == "Switch":
buttons.append(
[InlineKeyboardButton(text="Направление первой сделки", callback_data="switch_side_start")]
)
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)
trade_mode = InlineKeyboardMarkup(
inline_keyboard=[
[
InlineKeyboardButton(
text="Лонг", callback_data="Long"
),
InlineKeyboardButton(text="Шорт", callback_data="Short"),
InlineKeyboardButton(text="Свитч", callback_data="Switch"),
],
[
InlineKeyboardButton(text="Назад", callback_data="additional_settings"),
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
],
]
)
switch_side = InlineKeyboardMarkup(
inline_keyboard=[
[
InlineKeyboardButton(
text="По направлению", callback_data="switch_direction"
),
InlineKeyboardButton(
text="Противоположно", callback_data="switch_opposite"
),
],
[
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"),
],
]
)
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="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: list):
builder = InlineKeyboardBuilder()
for sym, side in symbols:
builder.button(text=f"{sym}:{side}", callback_data=f"get_position_{sym}_{side}")
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, side: str, position_idx: int, qty: int
):
return InlineKeyboardMarkup(
inline_keyboard=[
[
InlineKeyboardButton(
text="Закрыть позицию",
callback_data=f"close_position_{symbol_pos}_{side}_{position_idx}_{qty}",
)
],
[
InlineKeyboardButton(
text="Установить TP/SL",
callback_data=f"pos_tp_sl_{symbol_pos}_{position_idx}",
)
],
[
InlineKeyboardButton(text="Назад", callback_data="change_position"),
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
],
]
)
def create_active_orders_keyboard(orders: list):
builder = InlineKeyboardBuilder()
for order, side in orders:
builder.button(text=f"{order}", callback_data=f"get_order_{order}_{side}")
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, order_id: str):
return InlineKeyboardMarkup(
inline_keyboard=[
[
InlineKeyboardButton(
text="Закрыть ордер",
callback_data=f"close_order_{symbol_order}_{order_id}",
)
],
[
InlineKeyboardButton(text="Назад", callback_data="open_orders"),
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
],
]
)
# START TRADING
back_to_start_trading = InlineKeyboardMarkup(
inline_keyboard=[
[
InlineKeyboardButton(text="Назад", callback_data="start_trading"),
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
],
]
)
cancel_timer_merged = InlineKeyboardMarkup(
inline_keyboard=[
[
InlineKeyboardButton(
text="Отменить таймер", callback_data="cancel_timer_merged"
)
],
[
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
],
]
)
cancel_timer_switch = InlineKeyboardMarkup(
inline_keyboard=[
[
InlineKeyboardButton(
text="Отменить таймер", callback_data="cancel_timer_switch"
)
],
[
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
],
]
)
# STOP TRADING
cancel_timer_stop = InlineKeyboardMarkup(
inline_keyboard=[
[
InlineKeyboardButton(
text="Отменить таймер", callback_data="cancel_timer_stop"
)
],
[
InlineKeyboardButton(text="На главную", callback_data="profile_bybit"),
],
]
)