更新ios

This commit is contained in:
2026-01-18 19:48:00 +08:00
parent 5396da96b4
commit ce040e6ae7

68
app.py
View File

@@ -6277,36 +6277,48 @@ def get_watchlist_mini_charts():
'change_pct': float(change_pct) if change_pct else 0
})
# ========== 2. 批量查询最近20天日K线数据 ==========
kline_start = today - timedelta(days=40) # 多查一些天确保有20个交易日
# ========== 2. 批量查询最近20天日K线数据(从 MySQL ea_trade 表)==========
# 提取纯6位代码用于 MySQL 查询
pure_codes = [code.split('.')[0] for code in full_codes]
kline_query = """
SELECT
code, date, open, high, low, close
FROM stock_daily
WHERE code IN %(codes)s
AND date >= %(start)s
ORDER BY code, date DESC
"""
kline_result = client.execute(kline_query, {
'codes': full_codes,
'start': kline_start
})
# 按股票代码分组日K数据最近20根
kline_map = {}
for row in kline_result:
code, date, open_p, high, low, close = row
if code not in kline_map:
kline_map[code] = []
if len(kline_map[code]) < 20:
kline_map[code].append({
'open': float(open_p) if open_p else 0,
'high': float(high) if high else 0,
'low': float(low) if low else 0,
'close': float(close) if close else 0
})
with engine.connect() as conn:
kline_query = text("""
SELECT
SECCODE,
TRADEDATE,
F003N as open_price,
F005N as high,
F006N as low,
F007N as close
FROM ea_trade
WHERE SECCODE IN :codes
ORDER BY SECCODE, TRADEDATE DESC
""")
kline_result = conn.execute(kline_query, {'codes': tuple(pure_codes)}).fetchall()
# 按股票代码分组日K数据最近20根
for row in kline_result:
row_dict = row._mapping
code6 = row_dict['SECCODE']
# 转换为带后缀的代码
if code6.startswith('6'):
full_code = f"{code6}.SH"
elif code6.startswith(('8', '9', '4')):
full_code = f"{code6}.BJ"
else:
full_code = f"{code6}.SZ"
if full_code not in kline_map:
kline_map[full_code] = []
if len(kline_map[full_code]) < 20:
kline_map[full_code].append({
'open': float(row_dict['open_price']) if row_dict['open_price'] else 0,
'high': float(row_dict['high']) if row_dict['high'] else 0,
'low': float(row_dict['low']) if row_dict['low'] else 0,
'close': float(row_dict['close']) if row_dict['close'] else 0
})
# 反转日K数据使其按时间正序
for code in kline_map: