382 lines
12 KiB
Python
382 lines
12 KiB
Python
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="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"),
|
||
],
|
||
]
|
||
)
|