更新ios

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

58
app.py
View File

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