TdxQuant是由深圳市财富趋势科技股份有限公司研发的专业量化投研平台,专注于为国内量化投资者提供从策略研究到投资决策的全流程解决方案。平台以高效、简洁为核心设计理念,致力于降低量化交易门槛,提升策略开发与执行的效率。

官方文档:https://help.tdx.com.cn/quant/

202603101690_302.jpg

一、安装TdxQuant

首先,你需要在通达信官网下载并安装TdxQuant软件。安装过程和普通软件类似,按照提示一步步操作即可,属于有手就会的操作。 下载链接:https://www.tdx.com.cn/soft.html 找到支持TQ策略的版本,如下图红框里的2个版本。

202603104023_402.png

打开通达信,如果菜单栏里有TQ策略这个按钮,说明你安装成功了。

202603101601_382.png

二、安装Python环境和Vscode

安装教程略

记得安装常用python库:

pip install numpy pandas backtrader vectorbt  matplotlib
三、数据下载

打开并登录通达信金融终端,点击【TQ策略-TQ数据设置】在弹出框就可以看到当前已经下载的数据和对应的时间,然后点击【盘后数据下载】

202603104486_796.png

打开【盘后数据下载】弹窗,根据你的需求选择对应的数据。

202603103403_465.png

四、开发选股策略

打开VScode,从文件--打开文件夹打开通达信量化目录:\\安装目录\\PYPlugins\\user

202603102205_724.png

这里需要重点说明下,文件夹中的tqcenter.py是最主要的TQData支撑文件,请勿修改或删除,请勿修改或删除,请勿修改或删除.

点击新建文件然后新建一个test001.py文件,用来执行我们的选股策略:

import pandas as pd
import numpy as np
from datetime import datetime
from tqcenter import tq

# 初始化tq
tq.initialize(__file__)

# 获取沪深京A股列表
pool = tq.get_stock_list(market ='5')
print(f"共获取了{len(pool)}只股票")

df_real = tq.get_market_data(
        field_list=[],
        stock_list=['001220.SZ'],
        start_time='20250101',
        end_time='',
        count=-1,
        dividend_type='front',
        period='1d',
        fill_data=False
    )

# return
golden_cross_stocks = []
for code in pool:  # 仅展示前5只股票
    df_real = tq.get_market_data(
        field_list=[],
        stock_list=[code],
        start_time='20250101',
        end_time='',
        count=-1,
        dividend_type='front',
        period='1d',
        fill_data=False
    )
    if len(df_real)==0:
        print(f"股票代码 {code} 无数据,跳过")
        continue
    print(f"处理股票代码: {code}")
    # 转换成Dataframe格式方便后期处理
    combined = pd.concat(df_real.values(), keys=df_real.keys(), axis=0)
    df = combined.stack().unstack(level=0).reset_index()
    df.columns.name = None
    df.rename(columns={'level_0': 'Date', 'level_1': 'Symbol'}, inplace=True)
    
    if len(df) < 20:
        print(f"股票代码 {code} 数据不足20天,跳过")
        continue
    
    # 选出最新日期5日上穿10日均线的股票,且是第一次上穿
    # 计算移动平均线
    df['ma5'] = df['Close'].rolling(window=5, min_periods=5).mean()
    df['ma10'] = df['Close'].rolling(window=10, min_periods=10).mean()
    #  判断金叉条件:当日ma5 > ma10,且前一日ma5 <= ma10[2,5]
    df['golden_cross'] = (df['ma5'] > df['ma10']) & (df['ma5'].shift(1) <= df['ma10'].shift(1))
    if df['golden_cross'].iloc[-1]:
        golden_cross_stocks.append(code)
print("出现5日上穿10日均线的股票有:", golden_cross_stocks)
# 创建自定义板块
# 日期字符串
date_str = datetime.now().strftime('%Y%m%d')
block_code = 'JXJC' + date_str
create_ptr = tq.create_sector(block_code=block_code, block_name='均线金叉'+date_str)
print(create_ptr)
zxg_result = tq.send_user_block(block_code=block_code, stocks=golden_cross_stocks)
print(zxg_result)
tq.close()

运行完以后你就会在通达信的自定义板块中看到新加的板块。