1.环境准备:目前该模式需要通过投研专业版进行调用,并且必须用投研先锋版本的安装包,非先锋版不支持。
另外需要本地有xtquant,官网下载xtquant包即可:https://dict.thinktrader.net/nativeApi/download_xtquant.html?id=TB5IbM
2.可使用 python 函数 便捷获取vba公式的输出
data = xtdata.get_vba_func_result(
"dynainfo(7, '000001.SZ')",
stock_code,
period,
start_time, end_time, count,
dividend_type
)
print(data)
3.填写vba公式内容即可获取gmd_ex格式的数据:

data = xtdata.get_vba_func_result(
[
'收盘价:c',
"均价:dynainfo(11, '000001.SZ')",
"涨幅:dynainfo(14, '000001.SZ')",
'交易日:tdate()',
],
stock_code,
period,
start_time, end_time, count,
dividend_type
)
print(data)
同时支持多输出:

4.获取数据量较大时,获取速度较gmd_ex会有所降低,但更加灵活,可快速创建新字段:


原生内置调用方式相同
原生
from xtquant import xtdata
## 把要取的VBA代码写到这
vb_code = """
variable:trend=0;
INPUT:P(10,1,100,10);
INPUT:STEP(2,1,100,10);
INPUT:MAXP(20,5,100,10);
t:=SARTURN(P,STEP,MAXP);
trend := iff(t <> 0, t, trend);
RES:SAR(P,STEP,MAXP),NODRAW,NOAXIS,COLORWHITE;
"""
if __name__ == "__main__":
stock_code = "000001.SZ"
period = "1d"
start_time = "20230101"
end_time = ""
count = -1
dividend_type = "front_ratio"
data = xtdata.get_vba_func_result(
vb_code,
stock_code,
period,
start_time, end_time, count,
dividend_type
)
print(data)
内置
# coding:gbk
## 把要取的VBA代码写到这
vb_code = """
variable:trend=0;
INPUT:P(10,1,100,10);
INPUT:STEP(2,1,100,10);
INPUT:MAXP(20,5,100,10);
t:=SARTURN(P,STEP,MAXP);
trend := iff(t <> 0, t, trend);
RES:SAR(P,STEP,MAXP),NODRAW,NOAXIS,COLORWHITE;
"""
def after_init(C):
stock_code = "000001.SZ"
period = "1d"
start_time = "20230101"
end_time = ""
count = -1
dividend_type = "front_ratio"
data = get_vba_func_result(
vb_code,
stock_code,
period,
start_time, end_time, count,
dividend_type
)
print(data)