中控增加下单,关键位,系统设置

This commit is contained in:
dekun
2026-05-22 10:04:28 +08:00
parent ed6b56ff87
commit 46f73fce43
19 changed files with 1844 additions and 568 deletions
+4
View File
@@ -26,6 +26,10 @@ APP_USERNAME=dekun
APP_PASSWORD=ChangeMe123!
# 是否关闭登录校验(局域网可设 true;公网务必 false)
APP_AUTH_DISABLED=true
# --- 多账户交易中控 manual_trading_hub ---
# 中控请求本实例 /api/hub/* 时携带请求头 X-Hub-Token,须与中控启动环境变量 HUB_BRIDGE_TOKEN 一致
# 未设置且 APP_AUTH_DISABLED=false 时,仅网页登录后可访问;本机联调可保持 APP_AUTH_DISABLED=true
# HUB_BRIDGE_TOKEN=your-long-random-token
# Flask 会话密钥(必须替换为长随机字符串)
FLASK_SECRET_KEY=CHANGE_TO_LONG_RANDOM_SECRET
+35 -4
View File
@@ -54,6 +54,7 @@ from key_sl_tp_lib import (
sl_tp_mode_label,
sl_tp_plan_summary_text,
)
from hub_auth import request_allowed as hub_request_allowed
from history_window_lib import (
PRESET_CUSTOM,
PRESET_UTC_LAST24H,
@@ -5316,11 +5317,9 @@ def logout():
def login_required(f):
@wraps(f)
def decorated(*args, **kwargs):
if AUTH_DISABLED:
if hub_request_allowed(bool(session.get("logged_in")), AUTH_DISABLED):
return f(*args, **kwargs)
if not session.get("logged_in"):
return redirect("/login")
return f(*args, **kwargs)
return redirect("/login")
return decorated
@@ -7669,6 +7668,38 @@ def ai_weekly_review():
conn.close()
return jsonify({"result": full})
def _hub_meta_bundle():
return {
"exchange_display": EXCHANGE_DISPLAY_NAME,
"key_gate_rule_text": (
f"周期 {KLINE_TIMEFRAME}|确认K:突破棒偏移 {KEY_CONFIRM_BREAKOUT_BAR}、确认棒偏移 {KEY_CONFIRM_BAR}"
f"量能:突破量 > 前{KEY_VOLUME_MA_BARS}均量×{KEY_VOLUME_RATIO_MIN}"
f"自动开仓盈亏比 > {KEY_AUTO_MIN_PLANNED_RR}:1|日成交量排名前 {KEY_DAILY_VOLUME_RANK_MAX}"
),
"manual_min_planned_rr": MANUAL_MIN_PLANNED_RR,
"max_active_positions": MAX_ACTIVE_POSITIONS,
"btc_leverage": BTC_LEVERAGE,
"alt_leverage": ALT_LEVERAGE,
}
try:
from hub_bridge import install_on_app
install_on_app(
app,
exchange="gate",
capabilities=["order", "key"],
has_trend=False,
get_db=get_db,
row_to_dict=row_to_dict,
meta_fn=_hub_meta_bundle,
views={"add_order": add_order, "add_key": add_key},
)
except Exception as _hub_err:
print(f"[hub_bridge] gate: {_hub_err}")
# 启动
if __name__ == "__main__":
threading.Thread(target=background_task, daemon=True).start()