更新ios
This commit is contained in:
58
app.py
58
app.py
@@ -6277,35 +6277,47 @@ 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 = """
|
||||
kline_map = {}
|
||||
with engine.connect() as conn:
|
||||
kline_query = text("""
|
||||
SELECT
|
||||
code, date, open, high, low, close
|
||||
FROM stock_daily
|
||||
WHERE code IN %(codes)s
|
||||
AND date >= %(start)s
|
||||
ORDER BY code, date DESC
|
||||
"""
|
||||
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 = client.execute(kline_query, {
|
||||
'codes': full_codes,
|
||||
'start': kline_start
|
||||
})
|
||||
kline_result = conn.execute(kline_query, {'codes': tuple(pure_codes)}).fetchall()
|
||||
|
||||
# 按股票代码分组日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
|
||||
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数据,使其按时间正序
|
||||
|
||||
Reference in New Issue
Block a user