forked from kodorvan/stcs
208 lines
10 KiB
Python
208 lines
10 KiB
Python
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup
|
||
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
||
|
||
start_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||
[InlineKeyboardButton(text="🔥 Начать торговлю", callback_data="clb_start_chatbot_message")]
|
||
])
|
||
|
||
settings_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||
[InlineKeyboardButton(text="Настройки", callback_data='clb_settings_message')],
|
||
[InlineKeyboardButton(text="Запуск", callback_data='clb_start_trading')]
|
||
])
|
||
|
||
back_btn_profile = [InlineKeyboardButton(text="Назад", callback_data='clb_start_chatbot_message')]
|
||
|
||
special_settings_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||
[InlineKeyboardButton(text="Основные настройки", callback_data='clb_change_main_settings'),
|
||
InlineKeyboardButton(text="Риск-менеджмент", callback_data='clb_change_risk_management_settings')],
|
||
|
||
[InlineKeyboardButton(text="Условия запуска", callback_data='clb_change_condition_settings'),
|
||
InlineKeyboardButton(text="Дополнительные параметры", callback_data='clb_change_additional_settings')],
|
||
|
||
[InlineKeyboardButton(text="Подключить Bybit", callback_data='clb_new_user_connect_bybit_api_message')],
|
||
|
||
back_btn_profile
|
||
])
|
||
|
||
connect_bybit_api_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||
[InlineKeyboardButton(text="Подключить Bybit", callback_data='clb_new_user_connect_bybit_api')]
|
||
])
|
||
|
||
trading_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||
[InlineKeyboardButton(text="Настройки", callback_data='clb_settings_message')],
|
||
[InlineKeyboardButton(text="Мои сделки", callback_data='clb_my_deals')],
|
||
[InlineKeyboardButton(text="Указать торговую пару", callback_data='clb_update_trading_pair')],
|
||
[InlineKeyboardButton(text="Начать торговлю", callback_data='clb_update_entry_type')],
|
||
[InlineKeyboardButton(text="Остановить торговлю", callback_data='clb_stop_trading')],
|
||
])
|
||
|
||
start_trading_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||
[InlineKeyboardButton(text="На главную", callback_data='back_to_main')],
|
||
[InlineKeyboardButton(text="Начать торговлю", callback_data="clb_start_chatbot_trading")],
|
||
[InlineKeyboardButton(text="Установить таймер", callback_data="clb_set_timer")],
|
||
|
||
])
|
||
|
||
cancel = InlineKeyboardMarkup(inline_keyboard=[
|
||
[InlineKeyboardButton(text="Отменить", callback_data="clb_cancel")]
|
||
])
|
||
|
||
entry_order_type_markup = InlineKeyboardMarkup(
|
||
inline_keyboard=[
|
||
[
|
||
InlineKeyboardButton(text="Market (текущая цена)", callback_data="entry_order_type:Market"),
|
||
InlineKeyboardButton(text="Limit (фиксированная цена)", callback_data="entry_order_type:Limit"),
|
||
],
|
||
]
|
||
)
|
||
|
||
back_btn_list_settings = [InlineKeyboardButton(text="Назад",
|
||
callback_data='clb_back_to_special_settings_message')] # Кнопка для возврата к списку каталога настроек
|
||
back_btn_list_settings_markup = InlineKeyboardMarkup(inline_keyboard=[[InlineKeyboardButton(text="Назад",
|
||
callback_data='clb_back_to_special_settings_message')]]) # Клавиатура для возврата к списку каталога настроек
|
||
back_btn_to_main = [InlineKeyboardButton(text="На главную", callback_data='clb_back_to_main')]
|
||
|
||
back_to_main = InlineKeyboardMarkup(inline_keyboard=[
|
||
[InlineKeyboardButton(text="На главную", callback_data='back_to_main')],
|
||
])
|
||
|
||
main_settings_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||
[InlineKeyboardButton(text='Режим торговли', callback_data='clb_change_trading_mode'),
|
||
InlineKeyboardButton(text='Тип маржи', callback_data='clb_change_margin_type')],
|
||
|
||
[InlineKeyboardButton(text='Размер кредитного плеча', callback_data='clb_change_size_leverage'),
|
||
InlineKeyboardButton(text='Начальная ставка', callback_data='clb_change_starting_quantity')],
|
||
|
||
[InlineKeyboardButton(text='Коэффициент Мартингейла', callback_data='clb_change_martingale_factor'),
|
||
InlineKeyboardButton(text='Сбросить шаги Мартингейла', callback_data='clb_change_martingale_reset')],
|
||
[InlineKeyboardButton(text='Максимальное кол-во ставок', callback_data='clb_change_maximum_quantity')],
|
||
|
||
back_btn_list_settings,
|
||
back_btn_to_main
|
||
])
|
||
|
||
risk_management_settings_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||
[InlineKeyboardButton(text='Изм. цены прибыли', callback_data='clb_change_price_profit'),
|
||
InlineKeyboardButton(text='Изм. цены убытков', callback_data='clb_change_price_loss')],
|
||
|
||
[InlineKeyboardButton(text='Макс. риск на сделку', callback_data='clb_change_max_risk_deal')],
|
||
[InlineKeyboardButton(text='Учитывать комиссию биржи (Да/Нет)', callback_data='commission_fee')],
|
||
|
||
back_btn_list_settings,
|
||
back_btn_to_main
|
||
])
|
||
|
||
condition_settings_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||
[InlineKeyboardButton(text='Триггер', callback_data='clb_change_trigger'),
|
||
InlineKeyboardButton(text='Таймер', callback_data='clb_change_timer')],
|
||
|
||
[InlineKeyboardButton(text='Фильтр волатильности', callback_data='clb_change_filter_volatility'),
|
||
InlineKeyboardButton(text='Внешние сигналы', callback_data='clb_change_external_cues')],
|
||
|
||
[InlineKeyboardButton(text='Сигналы TradingView', callback_data='clb_change_tradingview_cues'),
|
||
InlineKeyboardButton(text='Webhook URL', callback_data='clb_change_webhook')],
|
||
|
||
[InlineKeyboardButton(text='AI - аналитика', callback_data='clb_change_ai_analytics')],
|
||
|
||
back_btn_list_settings,
|
||
back_btn_to_main
|
||
])
|
||
|
||
additional_settings_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||
[InlineKeyboardButton(text='Сохранить шаблон', callback_data='clb_change_save_pattern'),
|
||
InlineKeyboardButton(text='Автозапуск', callback_data='clb_change_auto_start')],
|
||
|
||
[InlineKeyboardButton(text='Уведомления', callback_data='clb_change_notifications')],
|
||
|
||
back_btn_list_settings,
|
||
back_btn_to_main
|
||
])
|
||
|
||
trading_mode_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||
[InlineKeyboardButton(text="Лонг", callback_data="trade_mode_long"),
|
||
InlineKeyboardButton(text="Шорт", callback_data="trade_mode_short")],
|
||
|
||
[InlineKeyboardButton(text="Свитч", callback_data="trade_mode_switch"),
|
||
InlineKeyboardButton(text="Смарт", callback_data="trade_mode_smart")],
|
||
|
||
back_btn_list_settings,
|
||
back_btn_to_main
|
||
])
|
||
|
||
margin_type_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||
[InlineKeyboardButton(text="Изолированный", callback_data="margin_type_isolated"),
|
||
InlineKeyboardButton(text="Кросс", callback_data="margin_type_cross")],
|
||
|
||
back_btn_list_settings,
|
||
back_btn_to_main
|
||
])
|
||
|
||
trigger_markup = InlineKeyboardMarkup(inline_keyboard=[ # ИЗМЕНИТЬ НА INLINE
|
||
[InlineKeyboardButton(text='Ручной', callback_data="clb_trigger_ruchnoy"),
|
||
InlineKeyboardButton(text='TradingView', callback_data="clb_trigger_tradingview")],
|
||
[InlineKeyboardButton(text="Автоматический", callback_data="clb_trigger_auto")]
|
||
])
|
||
|
||
buttons_yes_no_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||
[InlineKeyboardButton(text='Да', callback_data="clb_yes"),
|
||
InlineKeyboardButton(text='Нет', callback_data="clb_no")],
|
||
])
|
||
|
||
buttons_on_off_markup = InlineKeyboardMarkup(inline_keyboard=[ # ИЗМЕНИТЬ НА INLINE
|
||
[InlineKeyboardButton(text='Включить', callback_data="clb_on"),
|
||
InlineKeyboardButton(text='Выключить', callback_data="clb_off")]
|
||
])
|
||
|
||
my_deals_select_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||
[InlineKeyboardButton(text='Открытые сделки', callback_data="clb_open_deals"),
|
||
InlineKeyboardButton(text='Лимитные ордера', callback_data="clb_open_orders")],
|
||
back_btn_to_main
|
||
])
|
||
|
||
def create_trades_inline_keyboard(trades):
|
||
builder = InlineKeyboardBuilder()
|
||
for trade in trades:
|
||
builder.button(text=trade, callback_data=f"show_deal_{trade}")
|
||
builder.adjust(2)
|
||
return builder.as_markup()
|
||
|
||
def create_trades_inline_keyboard_limits(trades):
|
||
builder = InlineKeyboardBuilder()
|
||
for trade in trades:
|
||
builder.button(text=trade, callback_data=f"show_limit_{trade}")
|
||
builder.adjust(2)
|
||
return builder.as_markup()
|
||
|
||
|
||
def create_close_deal_markup(symbol: str) -> InlineKeyboardMarkup:
|
||
return InlineKeyboardMarkup(inline_keyboard=[
|
||
[InlineKeyboardButton(text="Закрыть сделку", callback_data=f"close_deal:{symbol}")],
|
||
[InlineKeyboardButton(text="Закрыть по таймеру", callback_data=f"close_deal_by_timer:{symbol}")],
|
||
[InlineKeyboardButton(text="Установить TP/SL", callback_data="clb_set_tp_sl")],
|
||
back_btn_to_main
|
||
])
|
||
|
||
def create_close_limit_markup(symbol: str) -> InlineKeyboardMarkup:
|
||
return InlineKeyboardMarkup(inline_keyboard=[
|
||
[InlineKeyboardButton(text="Закрыть лимитный ордер", callback_data=f"close_limit:{symbol}")],
|
||
[InlineKeyboardButton(text="Установить TP/SL", callback_data="clb_set_tp_sl_")],
|
||
back_btn_to_main
|
||
])
|
||
|
||
timer_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||
[InlineKeyboardButton(text="Установить таймер", callback_data="clb_set_timer")],
|
||
back_btn_to_main
|
||
])
|
||
|
||
cancel_start_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||
[InlineKeyboardButton(text="Отменить таймер", callback_data="clb_stop_timer")]
|
||
])
|
||
|
||
stop_choice_markup = InlineKeyboardMarkup(
|
||
inline_keyboard=[
|
||
[
|
||
InlineKeyboardButton(text="Остановить сразу", callback_data="stop_immediately"),
|
||
InlineKeyboardButton(text="Остановить по таймеру", callback_data="stop_with_timer"),
|
||
]
|
||
]
|
||
) |