Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wiseplat
GitHub Repository: wiseplat/python-code
Path: blob/master/ invest-robot-contest_trading_bot-master/bot/handlers/strategy_handlers.py
5935 views
1
from main import dp
2
from aiogram.types import Message
3
from aiogram.dispatcher.filters import Text
4
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton, ReplyKeyboardRemove
5
import sqlite3 as sl
6
from aiogram.dispatcher.filters.state import State, StatesGroup
7
from bot.keyboards.start_menu_keyboard import get_start_menu
8
from aiogram.dispatcher import FSMContext
9
10
11
'''
12
Выводит варианты алготрейдинга
13
'''
14
15
16
@dp.message_handler(text="Торговые стратегии")
17
async def algo_trade(message: Message):
18
await message.answer(f"Выберите торговую стратегию:\n")
19
20
str1_keyboard = InlineKeyboardMarkup()
21
str1_keyboard.add(InlineKeyboardButton(text="Торговля", callback_data="str1:list"))
22
str1_keyboard.add(
23
InlineKeyboardButton(text="Добавить бумагу в стратегию", callback_data="str1:settings:add:start"))
24
str1_keyboard.add(
25
InlineKeyboardButton(text="Удалить бумагу из стратегии", callback_data="str1:settings:delete:start"))
26
27
await message.answer(f"EMA + ADX + MACD\n", reply_markup=str1_keyboard)
28
29
30
class DeleteStrategy(StatesGroup):
31
wait_yes_or_no = State()
32
33
34
@dp.message_handler(Text(contains="Удалить все торговые стратегии", ignore_case=True))
35
async def delete_all_strategies_start(message: Message):
36
text = ""
37
38
connection = sl.connect("db/BotDB.db")
39
cursor = connection.cursor()
40
41
strategies = cursor.execute('SELECT account_id, account_type, name FROM str1_config WHERE user_id = ?', (message.from_user.id,))
42
43
for line in strategies:
44
text += f"ID аккаунта: {line[0]}\n"
45
if line[1] == "sandbox":
46
text += f"Песочница\n"
47
elif line[1] == "1":
48
text += f"Брокерский счёт\n"
49
text += f"Бумаги {line[2]}\n\n"
50
51
if text:
52
await message.answer(f"Все открытые стратегии стратегии:\n")
53
await message.answer(text)
54
await DeleteStrategy.wait_yes_or_no.set()
55
56
await message.answer(
57
f"Напишите <b>ДА</b> для удаления всех торговых стратегий.\n\nНапишите <b>НЕТ</b> для отмены.",
58
reply_markup=ReplyKeyboardRemove())
59
60
else:
61
await message.answer("У Вас нет открытых стратегий!")
62
63
64
@dp.message_handler(state=DeleteStrategy.wait_yes_or_no)
65
async def delete_all_strategies_finish(message: Message, state: FSMContext):
66
67
if message.text.upper() == "ДА":
68
connection = sl.connect("db/BotDB.db")
69
cursor = connection.cursor()
70
71
cursor.execute('DELETE FROM str1_config WHERE user_id = ?',
72
(message.from_user.id,))
73
74
connection.commit()
75
76
await state.reset_state()
77
78
await message.answer("Все стратегии были удалены!", reply_markup=get_start_menu(message.from_user.id))
79
80
elif message.text.upper() == "НЕТ":
81
82
await state.reset_state()
83
84
await message.answer("Операция отменена!", reply_markup=get_start_menu(message.from_user.id))
85
86
else:
87
await message.answer("Введите <b>ДА</b> или <b>НЕТ</b>!")
88
89
90
91