forked from kodorvan/stcs
Added trigger function
This commit is contained in:
@@ -1,13 +1,10 @@
|
||||
import asyncio
|
||||
import logging.config
|
||||
import logging.config
|
||||
import app.telegram.Keyboards.inline_keyboards as inline_markup
|
||||
from aiogram import Router, F
|
||||
from aiogram.types import Message, CallbackQuery
|
||||
from aiogram.fsm.context import FSMContext
|
||||
import app.telegram.database.requests as rq
|
||||
from aiogram.fsm.state import State, StatesGroup
|
||||
|
||||
from app.services.Bybit.functions.Futures import trading_cycle
|
||||
from app.states.States import condition_settings
|
||||
|
||||
from logger_helper.logger_helper import LOGGING_CONFIG
|
||||
|
||||
@@ -17,27 +14,21 @@ logger = logging.getLogger("condition_settings")
|
||||
condition_settings_router = Router()
|
||||
|
||||
|
||||
class condition_settings(StatesGroup):
|
||||
trigger = State()
|
||||
timer = State()
|
||||
volatilty = State()
|
||||
volume = State()
|
||||
integration = State()
|
||||
use_tv_signal = State()
|
||||
|
||||
|
||||
async def reg_new_user_default_condition_settings(id, message):
|
||||
async def reg_new_user_default_condition_settings(id):
|
||||
tg_id = id
|
||||
|
||||
trigger = await rq.get_for_registration_trigger()
|
||||
trigger = await rq.get_for_registration_trigger(tg_id)
|
||||
|
||||
await rq.set_new_user_default_condition_settings(tg_id, trigger)
|
||||
|
||||
|
||||
async def main_settings_message(id, message, state):
|
||||
text = """ <b>Условия запуска</b>
|
||||
async def main_settings_message(id, message):
|
||||
|
||||
<b>- Триггер:</b> Ручной запуск / Сигнал TradingView / Полностью автоматический
|
||||
tg_id = id
|
||||
trigger = await rq.get_for_registration_trigger(tg_id)
|
||||
text = f""" <b>Условия запуска</b>
|
||||
|
||||
<b>- Триггер:</b> {trigger}
|
||||
<b>- Таймер: </b> установить таймер / остановить таймер
|
||||
<b>- Фильтр волатильности / объёма: </b> включить/отключить
|
||||
<b>- Интеграции и внешние сигналы: </b>
|
||||
@@ -48,14 +39,33 @@ async def main_settings_message(id, message, state):
|
||||
await message.answer(text=text, parse_mode='html', reply_markup=inline_markup.condition_settings_markup)
|
||||
|
||||
|
||||
async def trigger_message(message, state):
|
||||
text = '''Триггер
|
||||
|
||||
Описание ручного запуска, сигналов, автоматического режима '''
|
||||
async def trigger_message(id, message, state: FSMContext):
|
||||
await state.set_state(condition_settings.trigger)
|
||||
text = '''
|
||||
<b>- Автоматический:</b> торговля будет продолжаться до условии остановки.
|
||||
<b>- Ручной:</b> торговля будет происходить только в ручном режиме.
|
||||
<em>- Выберите тип триггера:</em>'''
|
||||
|
||||
await message.answer(text=text, parse_mode='html', reply_markup=inline_markup.trigger_markup)
|
||||
|
||||
|
||||
@condition_settings_router.callback_query(F.data == "clb_trigger_manual")
|
||||
async def trigger_manual_callback(callback: CallbackQuery, state: FSMContext):
|
||||
await state.set_state(condition_settings.trigger)
|
||||
await rq.update_trigger(tg_id=callback.from_user.id, trigger="Ручной")
|
||||
await callback.message.answer("Триггер установлен в ручной режим.")
|
||||
await main_settings_message(callback.from_user.id, callback.message)
|
||||
await callback.answer()
|
||||
|
||||
|
||||
@condition_settings_router.callback_query(F.data == "clb_trigger_auto")
|
||||
async def trigger_manual_callback(callback: CallbackQuery, state: FSMContext):
|
||||
await state.set_state(condition_settings.trigger)
|
||||
await rq.update_trigger(tg_id=callback.from_user.id, trigger="Автоматический")
|
||||
await callback.message.answer("Триггер установлен в автоматический режим.")
|
||||
await main_settings_message(callback.from_user.id, callback.message)
|
||||
await callback.answer()
|
||||
|
||||
async def timer_message(id, message: Message, state: FSMContext):
|
||||
await state.set_state(condition_settings.timer)
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
from aiogram import Router
|
||||
from aiogram import Router, F
|
||||
|
||||
import app.telegram.Keyboards.inline_keyboards as inline_markup
|
||||
import app.telegram.Keyboards.reply_keyboards as reply_markup
|
||||
@@ -18,6 +18,7 @@ class update_main_settings(StatesGroup):
|
||||
martingale_factor = State()
|
||||
starting_quantity = State()
|
||||
maximal_quantity = State()
|
||||
switch_mode_enabled = State()
|
||||
|
||||
async def reg_new_user_default_main_settings(id, message):
|
||||
tg_id = id
|
||||
@@ -34,6 +35,8 @@ async def main_settings_message(id, message, state):
|
||||
await message.answer(f"""<b>Основные настройки</b>
|
||||
|
||||
<b>- Режим торговли:</b> {data['trading_mode']}
|
||||
<b>- Режим свитч:</b> {data['switch_mode_enabled']}
|
||||
<b>- Состояние свитча:</b> {data['switch_state']}
|
||||
<b>- Тип маржи:</b> {data['margin_type']}
|
||||
<b>- Размер кредитного плеча:</b> х{data['size_leverage']}
|
||||
<b>- Начальная ставка:</b> {data['starting_quantity']}
|
||||
@@ -53,8 +56,6 @@ async def trading_mode_message(message, state):
|
||||
|
||||
<b>Смарт</b> — автоматизированный режим, который подбирает оптимальную стратегию в зависимости от текущих рыночных условий.
|
||||
|
||||
<b>Свитч</b> — динамическое переключение между торговыми режимами для максимизации эффективности.
|
||||
|
||||
<em>Выберите ниже для изменений:</em>
|
||||
""", parse_mode='html', reply_markup=inline_markup.trading_mode_markup)
|
||||
|
||||
@@ -79,12 +80,7 @@ async def state_trading_mode(callback: CallbackQuery, state):
|
||||
await main_settings_message(id, callback.message, state)
|
||||
|
||||
await state.clear()
|
||||
case 'trade_mode_switch':
|
||||
await callback.message.answer(f"✅ Изменено: {data_settings['trading_mode']} → Switch")
|
||||
await rq.update_trade_mode_user(id, 'Switch')
|
||||
await main_settings_message(id, callback.message, state)
|
||||
|
||||
await state.clear()
|
||||
case 'trade_mode_smart':
|
||||
await callback.message.answer(f"✅ Изменено: {data_settings['trading_mode']} → Smart")
|
||||
await rq.update_trade_mode_user(id, 'Smart')
|
||||
@@ -94,11 +90,63 @@ async def state_trading_mode(callback: CallbackQuery, state):
|
||||
except Exception as e:
|
||||
print(f"error: {e}")
|
||||
|
||||
|
||||
async def switch_mode_enabled_message(message, state):
|
||||
await state.set_state(update_main_settings.switch_mode_enabled)
|
||||
|
||||
await message.edit_text(
|
||||
"""<b>Свитч</b> — динамическое переключение между торговыми режимами для максимизации эффективности.
|
||||
|
||||
<em>Выберите ниже для изменений:</em>""", parse_mode='html', reply_markup=inline_markup.buttons_on_off_markup_for_switch)
|
||||
|
||||
|
||||
|
||||
|
||||
@router_main_settings.callback_query(lambda c: c.data in ["clb_on_switch", "clb_off_switch"])
|
||||
async def state_switch_mode_enabled(callback: CallbackQuery, state):
|
||||
await callback.answer()
|
||||
tg_id = callback.from_user.id
|
||||
val = "Включить" if callback.data == "clb_on_switch" else "Выключить"
|
||||
if val == "Включить":
|
||||
await rq.update_switch_mode_enabled(tg_id, "Включено")
|
||||
await callback.message.answer(f"Включено")
|
||||
await main_settings_message(tg_id, callback.message, state)
|
||||
else:
|
||||
await rq.update_switch_mode_enabled(tg_id, "Выключено")
|
||||
await callback.message.answer(f"Выключено")
|
||||
await main_settings_message(tg_id, callback.message, state)
|
||||
await state.clear()
|
||||
|
||||
|
||||
@router_main_settings.callback_query(lambda c: c.data in ["clb_switch_state"])
|
||||
async def state_switch_mode_enabled(callback: CallbackQuery):
|
||||
await callback.answer()
|
||||
await callback.message.answer("Выберите состояние свитча:", reply_markup=inline_markup.switch_state_markup)
|
||||
|
||||
|
||||
@router_main_settings.callback_query(lambda c: c.data in ["clb_long_switch", "clb_short_switch"])
|
||||
async def state_switch_mode_enabled(callback: CallbackQuery, state):
|
||||
await callback.answer()
|
||||
tg_id = callback.from_user.id
|
||||
val = "Long" if callback.data == "clb_long_switch" else "Short"
|
||||
if val == "Long":
|
||||
await rq.update_switch_state(tg_id, "Long")
|
||||
await callback.message.answer(f"Состояние свитча: {val}")
|
||||
await main_settings_message(tg_id, callback.message, state)
|
||||
else:
|
||||
await rq.update_switch_state(tg_id, "Short")
|
||||
await callback.message.answer(f"Состояние свитча: {val}")
|
||||
await main_settings_message(tg_id, callback.message, state)
|
||||
await state.clear()
|
||||
|
||||
|
||||
|
||||
async def size_leverage_message (message, state):
|
||||
await state.set_state(update_main_settings.size_leverage)
|
||||
|
||||
await message.edit_text("Введите размер <b>кредитного плеча</b> (от 1 до 100): ", parse_mode='html', reply_markup=inline_markup.back_btn_list_settings_markup)
|
||||
|
||||
|
||||
@router_main_settings.message(update_main_settings.size_leverage)
|
||||
async def state_size_leverage(message: Message, state):
|
||||
await state.update_data(size_leverage = message.text)
|
||||
|
Reference in New Issue
Block a user