Optimize
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
from .calc import calc_buy_volume, trading_time
|
||||
from .lockfile import is_lock, write_lockfile
|
||||
from .market import market_allow_open, status
|
||||
from .market import market_allow_open, refresh_market, status
|
||||
from .signal import SignalItem, SignalResult, fetch_signal, init_signals
|
||||
|
||||
__all__ = [
|
||||
@@ -9,6 +9,7 @@ __all__ = [
|
||||
"is_lock",
|
||||
"write_lockfile",
|
||||
"market_allow_open",
|
||||
"refresh_market",
|
||||
"status",
|
||||
"SignalItem",
|
||||
"SignalResult",
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,10 +1,13 @@
|
||||
import logging
|
||||
import secrets
|
||||
from threading import Lock
|
||||
|
||||
from .http import get_json
|
||||
|
||||
API_HOST = "http://139.224.247.176:13499"
|
||||
MARKET_URL, PERIOD, HTTP_TIMEOUT = "/a/market", "60m", 5.0
|
||||
_market_lock = Lock()
|
||||
_market_status = "UNKNOWN"
|
||||
|
||||
|
||||
def status(payload) -> str:
|
||||
@@ -15,10 +18,22 @@ def status(payload) -> str:
|
||||
return result if result in {"UP", "DOWN", "NEUTRAL"} else "UNKNOWN"
|
||||
|
||||
|
||||
def market_allow_open(api_host: str = API_HOST) -> bool:
|
||||
def refresh_market(api_host: str = API_HOST) -> str:
|
||||
"""由后台调度线程刷新大盘状态;请求失败时缓存为 UNKNOWN。"""
|
||||
global _market_status
|
||||
url = f"{api_host}{MARKET_URL}?period={PERIOD}&t={secrets.token_urlsafe(12)}"
|
||||
try: result = status(get_json(url, HTTP_TIMEOUT))
|
||||
try:
|
||||
result = status(get_json(url, HTTP_TIMEOUT))
|
||||
except Exception as exc:
|
||||
logging.error("获取大盘指数失败: %s %s", url, exc); return False
|
||||
result = "UNKNOWN"
|
||||
logging.error("获取大盘指数失败: %s %s", url, exc)
|
||||
with _market_lock:
|
||||
_market_status = result
|
||||
logging.info("大盘信号: url=%s status=%s", url, result)
|
||||
return result == "UP"
|
||||
return result
|
||||
|
||||
|
||||
def market_allow_open() -> bool:
|
||||
"""读取最近一次后台刷新得到的大盘缓存;未知状态时禁止开仓。"""
|
||||
with _market_lock:
|
||||
return _market_status == "UP"
|
||||
|
||||
Reference in New Issue
Block a user