中控增加下单,关键位,系统设置
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ import sys
|
||||
|
||||
if _REPO_ROOT not in sys.path:
|
||||
sys.path.insert(0, _REPO_ROOT)
|
||||
from hub_auth import request_allowed as hub_request_allowed
|
||||
from history_window_lib import (
|
||||
PRESET_CUSTOM,
|
||||
PRESET_UTC_LAST24H,
|
||||
@@ -5138,11 +5139,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
|
||||
|
||||
|
||||
@@ -7301,6 +7300,40 @@ def ai_weekly_review():
|
||||
conn.close()
|
||||
return jsonify({"result": full})
|
||||
|
||||
def _hub_meta_bundle():
|
||||
return {
|
||||
"exchange_display": EXCHANGE_DISPLAY_NAME,
|
||||
"trend_pullback_preview_ttl": TREND_PULLBACK_PREVIEW_TTL_SECONDS,
|
||||
"trend_manual_breakeven_offset_pct": TREND_PULLBACK_MANUAL_BREAKEVEN_OFFSET_PCT,
|
||||
"trend_pullback_dca_legs": TREND_PULLBACK_DCA_LEGS,
|
||||
"trend_preview_max_drift_pct": TREND_PREVIEW_MAX_BALANCE_DRIFT_PCT,
|
||||
"manual_min_planned_rr": float(os.getenv("MANUAL_MIN_PLANNED_RR", "1.4")),
|
||||
"max_active_positions": max(1, int(os.getenv("MAX_ACTIVE_POSITIONS", "1"))),
|
||||
}
|
||||
|
||||
|
||||
try:
|
||||
from hub_bridge import install_on_app
|
||||
|
||||
install_on_app(
|
||||
app,
|
||||
exchange="gate_bot",
|
||||
capabilities=["order", "trend"],
|
||||
has_trend=True,
|
||||
get_db=get_db,
|
||||
row_to_dict=row_to_dict,
|
||||
meta_fn=_hub_meta_bundle,
|
||||
views={
|
||||
"add_order": add_order,
|
||||
"add_key": add_key,
|
||||
"preview_trend_pullback": preview_trend_pullback,
|
||||
"execute_trend_pullback": execute_trend_pullback,
|
||||
},
|
||||
)
|
||||
except Exception as _hub_err:
|
||||
print(f"[hub_bridge] gate_bot: {_hub_err}")
|
||||
|
||||
|
||||
# 启动
|
||||
if __name__ == "__main__":
|
||||
threading.Thread(target=background_task, daemon=True).start()
|
||||
|
||||
Reference in New Issue
Block a user