From 488ef6b8e2b27cbe0f4c9380f2bef2f399bf9b98 Mon Sep 17 00:00:00 2001 From: freedakgmail Date: Wed, 22 Jul 2026 06:55:35 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=96=B0=E6=B5=AA/=E8=85=BE=E8=AE=AF5mi?= =?UTF-8?q?n=20K=E7=BA=BF=E6=95=B0=E6=8D=AE=E6=BA=90=E8=A1=A5=E5=85=A8amou?= =?UTF-8?q?nt=E5=AD=97=E6=AE=B5=EF=BC=8C=E4=BF=AE=E5=A4=8D=E8=B5=84?= =?UTF-8?q?=E9=87=91=E6=B5=81=E5=90=91=E6=95=B0=E6=8D=AE=E7=BC=BA=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- stock-html/sync_kline_5min.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/stock-html/sync_kline_5min.py b/stock-html/sync_kline_5min.py index 90a40ae..97201bf 100755 --- a/stock-html/sync_kline_5min.py +++ b/stock-html/sync_kline_5min.py @@ -243,8 +243,9 @@ def fetch_5min_kline_sina(code): l = float(row.get('low', 0)) c = float(row.get('close', 0)) v = int(float(row.get('volume', 0))) + amt = float(row.get('amount', 0)) - rows.append((code, dt, o, h, l, c, v, 0.0, 0.0)) + rows.append((code, dt, o, h, l, c, v, amt, 0.0)) return rows if rows else None except (IndexError, KeyError, ValueError): @@ -366,7 +367,8 @@ def fetch_5min_kline_tencent(code): dt = datetime(today.year, today.month, today.day, h, m, 0) except (ValueError, IndexError): continue - min_data.append((dt, price, vol)) + amt = float(parts[3]) if len(parts) > 3 else 0.0 + min_data.append((dt, price, vol, amt)) if not min_data: return None @@ -375,26 +377,30 @@ def fetch_5min_kline_tencent(code): # 5分钟窗口: 09:30-09:35, 09:35-09:40, ... from collections import defaultdict bars = defaultdict(list) - for dt, price, vol in min_data: + for dt, price, vol, amt in min_data: # 5分钟窗口起始时间 minute = dt.minute bar_min = (minute // 5) * 5 bar_dt = dt.replace(minute=bar_min, second=0) - bars[bar_dt].append((price, vol)) + bars[bar_dt].append((price, vol, amt)) rows = [] prev_vol = 0 + prev_amt = 0 for bar_dt in sorted(bars.keys()): ticks = bars[bar_dt] o = ticks[0][0] # 第一个价格 c = ticks[-1][0] # 最后一个价格 - h = max(p for p, _ in ticks) - l = min(p for p, _ in ticks) - # 腾讯的volume是累积值,取窗口最后的 - 窗口最前的之前 + h = max(p for p, _, _ in ticks) + l = min(p for p, _, _ in ticks) + # 腾讯的volume和amount是累积值,取窗口最后的 - 前一窗口最后的 last_vol = ticks[-1][1] bar_vol = last_vol - prev_vol if prev_vol > 0 else ticks[-1][1] prev_vol = last_vol - rows.append((code, bar_dt, o, h, l, c, max(0, bar_vol), 0.0, 0.0)) + last_amt = ticks[-1][2] + bar_amt = last_amt - prev_amt if prev_amt > 0 else ticks[-1][2] + prev_amt = last_amt + rows.append((code, bar_dt, o, h, l, c, max(0, bar_vol), max(0, bar_amt), 0.0)) return rows if rows else None