forked from kodorvan/stcs
Fixed
This commit is contained in:
@@ -132,12 +132,11 @@ async def start_trading_cycle(
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
async def trading_cycle(tg_id: int, symbol: str, reverse_side: str) -> str | None:
|
async def trading_cycle(tg_id: int, symbol: str, reverse_side: str, size: str) -> str | None:
|
||||||
try:
|
try:
|
||||||
user_deals_data = await rq.get_user_deal_by_symbol(tg_id=tg_id, symbol=symbol)
|
user_deals_data = await rq.get_user_deal_by_symbol(tg_id=tg_id, symbol=symbol)
|
||||||
trade_mode = user_deals_data.trade_mode
|
trade_mode = user_deals_data.trade_mode
|
||||||
order_type = user_deals_data.order_type
|
order_type = user_deals_data.order_type
|
||||||
order_quantity = user_deals_data.order_quantity
|
|
||||||
conditional_order_type = user_deals_data.conditional_order_type
|
conditional_order_type = user_deals_data.conditional_order_type
|
||||||
margin_type = user_deals_data.margin_type
|
margin_type = user_deals_data.margin_type
|
||||||
leverage = user_deals_data.leverage
|
leverage = user_deals_data.leverage
|
||||||
@@ -180,7 +179,7 @@ async def trading_cycle(tg_id: int, symbol: str, reverse_side: str) -> str | Non
|
|||||||
if switch_side_mode:
|
if switch_side_mode:
|
||||||
side = "Sell" if real_side == "Buy" else "Buy"
|
side = "Sell" if real_side == "Buy" else "Buy"
|
||||||
|
|
||||||
next_quantity = safe_float(order_quantity) * (
|
next_quantity = safe_float(size) * (
|
||||||
safe_float(martingale_factor) ** current_step
|
safe_float(martingale_factor) ** current_step
|
||||||
)
|
)
|
||||||
current_step += 1
|
current_step += 1
|
||||||
@@ -220,7 +219,7 @@ async def trading_cycle(tg_id: int, symbol: str, reverse_side: str) -> str | Non
|
|||||||
leverage_to_sell=leverage_to_sell,
|
leverage_to_sell=leverage_to_sell,
|
||||||
order_type=order_type,
|
order_type=order_type,
|
||||||
conditional_order_type=conditional_order_type,
|
conditional_order_type=conditional_order_type,
|
||||||
order_quantity=order_quantity,
|
order_quantity=current_step,
|
||||||
limit_price=limit_price,
|
limit_price=limit_price,
|
||||||
trigger_price=trigger_price,
|
trigger_price=trigger_price,
|
||||||
martingale_factor=martingale_factor,
|
martingale_factor=martingale_factor,
|
||||||
|
@@ -9,6 +9,7 @@ import app.telegram.keyboards.inline as kbi
|
|||||||
import database.request as rq
|
import database.request as rq
|
||||||
from app.bybit.get_functions.get_positions import get_active_positions_by_symbol
|
from app.bybit.get_functions.get_positions import get_active_positions_by_symbol
|
||||||
from app.bybit.open_positions import start_trading_cycle
|
from app.bybit.open_positions import start_trading_cycle
|
||||||
|
from app.helper_functions import safe_float
|
||||||
from logger_helper.logger_helper import LOGGING_CONFIG
|
from logger_helper.logger_helper import LOGGING_CONFIG
|
||||||
|
|
||||||
logging.config.dictConfig(LOGGING_CONFIG)
|
logging.config.dictConfig(LOGGING_CONFIG)
|
||||||
@@ -41,14 +42,14 @@ async def start_trading(callback_query: CallbackQuery, state: FSMContext) -> Non
|
|||||||
size = deals.get("size") or 0
|
size = deals.get("size") or 0
|
||||||
position_idx = deals.get("positionIdx")
|
position_idx = deals.get("positionIdx")
|
||||||
|
|
||||||
if position_idx != 0 and int(size) > 0 and trade_mode == "Merged_Single":
|
if position_idx != 0 and safe_float(size) > 0 and trade_mode == "Merged_Single":
|
||||||
await callback_query.answer(
|
await callback_query.answer(
|
||||||
text="У вас есть активная позиция в режиме хеджирования. "
|
text="У вас есть активная позиция в режиме хеджирования. "
|
||||||
"Открытие сделки в одностороннем режиме невозможно.",
|
"Открытие сделки в одностороннем режиме невозможно.",
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
if position_idx == 0 and int(size) > 0 and trade_mode == "Both_Sides":
|
if position_idx == 0 and safe_float(size) > 0 and trade_mode == "Both_Sides":
|
||||||
await callback_query.answer(
|
await callback_query.answer(
|
||||||
text="У вас есть активная позиция в одностороннем режиме. "
|
text="У вас есть активная позиция в одностороннем режиме. "
|
||||||
"Открытие сделки в режиме хеджирования невозможно.",
|
"Открытие сделки в режиме хеджирования невозможно.",
|
||||||
@@ -108,7 +109,7 @@ async def start_trading_long(callback_query: CallbackQuery, state: FSMContext) -
|
|||||||
size = deals.get("size") or 0
|
size = deals.get("size") or 0
|
||||||
position_idx = deals.get("positionIdx")
|
position_idx = deals.get("positionIdx")
|
||||||
|
|
||||||
if position_idx == 0 and int(size) > 0:
|
if position_idx == 0 and safe_float(size) > 0:
|
||||||
await callback_query.answer(
|
await callback_query.answer(
|
||||||
text="Торговля уже запущена в одностороннем режиме для данного инструмента"
|
text="Торговля уже запущена в одностороннем режиме для данного инструмента"
|
||||||
)
|
)
|
||||||
@@ -251,13 +252,13 @@ async def start_switch(callback_query: CallbackQuery, state: FSMContext) -> None
|
|||||||
size = deals.get("size") or 0
|
size = deals.get("size") or 0
|
||||||
position_idx = deals.get("positionIdx")
|
position_idx = deals.get("positionIdx")
|
||||||
|
|
||||||
if position_idx == 1 and int(size) > 0 and side == "Buy":
|
if position_idx == 1 and safe_float(size) > 0 and side == "Buy":
|
||||||
await callback_query.answer(
|
await callback_query.answer(
|
||||||
text="Торговля уже запущена в режиме хеджирования на покупку для данного инструмента"
|
text="Торговля уже запущена в режиме хеджирования на покупку для данного инструмента"
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
if position_idx == 2 and int(size) > 0 and side == "Sell":
|
if position_idx == 2 and safe_float(size) > 0 and side == "Sell":
|
||||||
await callback_query.answer(
|
await callback_query.answer(
|
||||||
text="Торговля уже запущена в режиме хеджирования на продажу для данного инструмента"
|
text="Торговля уже запущена в режиме хеджирования на продажу для данного инструмента"
|
||||||
)
|
)
|
||||||
|
Reference in New Issue
Block a user