This commit is contained in:
algizn97
2025-10-03 14:19:18 +05:00
parent 4adbd70948
commit 1508629727
15 changed files with 412 additions and 210 deletions

View File

@@ -169,6 +169,7 @@ async def trading_cycle(tg_id: int, symbol: str, reverse_side: str, size: str) -
leverage=leverage,
)
if reverse_side == "Buy":
real_side = "Sell"
else:
@@ -219,7 +220,7 @@ async def trading_cycle(tg_id: int, symbol: str, reverse_side: str, size: str) -
leverage_to_sell=leverage_to_sell,
order_type=order_type,
conditional_order_type=conditional_order_type,
order_quantity=current_step,
order_quantity=next_quantity,
limit_price=limit_price,
trigger_price=trigger_price,
martingale_factor=martingale_factor,
@@ -258,9 +259,9 @@ async def open_positions(
trigger_price: float,
trade_mode: str,
margin_type: str,
leverage: float,
leverage_to_buy: float,
leverage_to_sell: float,
leverage: str,
leverage_to_buy: str,
leverage_to_sell: str,
take_profit_percent: float,
stop_loss_percent: float,
max_risk_percent: float,
@@ -317,19 +318,22 @@ async def open_positions(
if trade_mode == "Both_Sides":
po_position_idx = 1 if side == "Buy" else 2
leverage = safe_float(
if margin_type == "ISOLATED_MARGIN":
get_leverage = safe_float(
leverage_to_buy if side == "Buy" else leverage_to_sell
)
else:
get_leverage = safe_float(leverage)
else:
po_position_idx = 0
leverage = safe_float(leverage)
get_leverage = safe_float(leverage)
potential_loss = (
safe_float(order_quantity)
* safe_float(price_for_calc)
* (stop_loss_percent / 100)
)
adjusted_loss = potential_loss / leverage
adjusted_loss = potential_loss / get_leverage
allowed_loss = safe_float(user_balance) * (max_risk_percent / 100)
if adjusted_loss > allowed_loss:
@@ -356,10 +360,11 @@ async def open_positions(
entry_price=price_for_calc,
symbol=symbol,
order_quantity=order_quantity,
leverage=get_leverage,
)
if liq_long > 0 or liq_short > 0 and price_for_calc > 0:
if side.lower() == "buy":
if (liq_long > 0 or liq_short > 0) and price_for_calc > 0:
if side == "Buy":
base_tp = price_for_calc + (price_for_calc - liq_long)
take_profit_price = base_tp + total_commission
else:
@@ -371,7 +376,7 @@ async def open_positions(
stop_loss_price = None
else:
if side.lower() == "buy":
if side == "Buy":
take_profit_price = price_for_calc * tp_multiplier
stop_loss_price = price_for_calc * (1 - stop_loss_percent / 100)
else:
@@ -383,6 +388,7 @@ async def open_positions(
take_profit_price = max(take_profit_price, 0)
stop_loss_price = max(stop_loss_price, 0)
# Place order
order_params = {
"category": "linear",