You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Angel Broking SmartAPI计算VWAP(成交量加权平均价)

计算VWAP的实现方法

首先明确VWAP(成交量加权平均价格)的核心计算公式:

VWAP = 累计(典型价格 × 成交量) / 累计成交量
其中典型价格 = (开盘价 + 最高价 + 最低价 + 收盘价) / 4

基于你已获取的K线DataFrame,直接用Pandas就能完成计算,具体实现如下:

含VWAP计算的完整代码

import pyotp
from datetime import datetime, timedelta
import pandas as pd
from smartapi import SmartConnect  # 需确保已导入该库

totp = pyotp.TOTP(Token).now()
SMART_API_OBJ = SmartConnect(api_key)
# 登录接口调用
history_data = SMART_API_OBJ.generateSession(clientId, pwd, totp)        

to_date = datetime.now()
from_date = to_date - timedelta(days=maxDays)
from_date_format = from_date.strftime("%Y-%m-%d %H:%M")
to_date_format = to_date.strftime("%Y-%m-%d %H:%M")

try:
    historicParam = {
        "exchange": "NSE",
        "symboltoken": getToken(symbol),
        "interval": interval,
        "fromdate": from_date_format,
        "todate": to_date_format
    }
    try:
        candel_json = SMART_API_OBJ.getCandleData(historicParam)
        columns = ['timestamp', 'O', 'H', 'L', 'C', 'V']
        df = pd.DataFrame(candel_json['data'], columns=columns)
        
        # 开始计算VWAP
        # 1. 计算单根K线的典型价格
        df['typical_price'] = (df['O'] + df['H'] + df['L'] + df['C']) / 4
        # 2. 计算典型价格与成交量的乘积,并累计求和
        df['tp_volume'] = df['typical_price'] * df['V']
        df['cum_tp_volume'] = df['tp_volume'].cumsum()
        # 3. 累计成交量
        df['cum_volume'] = df['V'].cumsum()
        # 4. 计算最终VWAP值
        df['VWAP'] = df['cum_tp_volume'] / df['cum_volume']
        
        # 处理成交量为0的特殊情况,避免除零报错
        df['VWAP'] = df['VWAP'].fillna(0)
        
    except Exception as e:
        print(f"获取K线数据失败: {str(e)}")
except Exception as e:
    print(f"参数配置或登录异常: {str(e)}")

补充说明

  • VWAP通常用于日内交易分析,如果你的K线数据跨多个交易日,需要按日期分组重新计算,避免不同交易日的累计值混淆:
# 先将timestamp转为datetime格式
df['timestamp'] = pd.to_datetime(df['timestamp'])
# 按自然日分组计算VWAP
df['VWAP'] = df.groupby(df['timestamp'].dt.date).apply(
    lambda x: (x['typical_price'] * x['V']).cumsum() / x['V'].cumsum()
).reset_index(drop=True)

内容的提问来源于stack exchange,提问作者qagourab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 13:15:20