07.4.4.1.4 Entry Decision Diagnostics Layer
This commit is contained in:
@@ -155,16 +155,23 @@ def _build_waiting_text(state) -> str:
|
||||
entry_price_override=price,
|
||||
)
|
||||
|
||||
signal_lines = [
|
||||
_signal_line(state),
|
||||
_market_state_line(state),
|
||||
_entry_block_line(state),
|
||||
*_signal_confidence_lines(state),
|
||||
*_execution_block_lines(state),
|
||||
]
|
||||
|
||||
signal_lines = [line for line in signal_lines if line]
|
||||
|
||||
parts = [
|
||||
f"🤖 Автоторговля {_status_text(state.status)}",
|
||||
_account_mode_line(),
|
||||
"",
|
||||
f"<b>Доступно</b> · $ {_format_money_compact(available)}",
|
||||
"",
|
||||
_signal_line(state),
|
||||
_market_state_line(state),
|
||||
*_signal_confidence_lines(state),
|
||||
*_execution_block_lines(state),
|
||||
*signal_lines,
|
||||
"",
|
||||
"🧾 <b>Подготовка ордера</b>",
|
||||
"",
|
||||
@@ -253,16 +260,28 @@ def _market_state_line(state) -> str:
|
||||
return labels.get(market_state, "⏳ Рынок · Идёт анализ")
|
||||
|
||||
|
||||
def _entry_block_line(state) -> str:
|
||||
message = getattr(state, "entry_block_message", None)
|
||||
|
||||
if not message:
|
||||
return ""
|
||||
|
||||
return f"Вход в позицию · {message}"
|
||||
|
||||
|
||||
def _execution_block_lines(state) -> list[str]:
|
||||
lines: list[str] = []
|
||||
|
||||
reason = getattr(state, "execution_block_reason", None)
|
||||
if reason:
|
||||
lines.append(f"Blocked · {reason}")
|
||||
lines.append(f"Исполнение · {reason}")
|
||||
|
||||
adjustment = getattr(state, "execution_size_adjustment_reason", None)
|
||||
|
||||
if adjustment == "MARGIN_LIMIT":
|
||||
lines.append("Size adjusted by Max Reserved")
|
||||
lines.append(
|
||||
"Позиция ограничена настройкой Max Reserved."
|
||||
)
|
||||
|
||||
return lines
|
||||
|
||||
|
||||
Reference in New Issue
Block a user