
一篇纯技术分享类文章分享,请大家自觉遵守《微信公众平台运营规范》。






--------注意事项-------
1.确保指标代码没有语法错误或遗漏的部分,如果复制代码安装出错,请点击左下角阅读原文到网页上复制。或进入公众号主页发消息回复对应的关键词 获取下载
2.指标名称应简洁明了,避免与其他已有指标混淆,防止复制过程出错,完整版或在电脑上点击左下角阅读原文,下载tn6安装使用。
3.在应用指标时,确保选择了正确的指标类型(如K线图、分时图等)。
4.如果指标没有立即显示,请尝试刷新指标或重启软件。
5.更多精品指标:请记得 关注 点赞 留言 !您的点赞 就是我分享的 最大动力!感谢支持!
一、核心逻辑:
适用平台:电脑版 免费数据下载工具
一,核心功能:
免登录、免加密、不依赖通达信客户端运行(独立进程)。
所有代码开源透明,支持用户自行编译修改。
多线程增量下载日线数据,自动保存至通达信目录,
自动校验与修复,下载后自动校验数据完整性,对损坏文件自动重新下载。
全A行情数据下载,自动识别通达信本地目录结构(默认路径:vipdoc)。
支持下载日线数据和C务数据(无需开通L2权限),支持断点续传,避免重复下载。
数据格式兼容通达信 原生缓存格式。
可自定义下载目录,支持导入列表,筛选下载定时范围。
多线程并行处理,利用多核CPU加速下载,提升更新效率。
二,使用方法:
1.下载解压后--打开--通达信数据下载V8.0极速
2.选择文件夹--打开通达信目录--找到vipdoc单击--点击右下角--选择文件夹。
3.其他的无需设置,直接点击-【开始下载】 --会自动通达信下载日线和C务数据,等待自动下载完成即可。(大约3分钟即可自动完成下载)。
4.怎么确认数据是否下载完成:
自动下载数据时vipdoc文件会有压缩包,数据下载完后会自动删除没用的压缩包。
操作日志--下方会提示:所有3个下载任务已全部完成。

指标源码免费分享
核心代码:(Python )
# -*- coding: utf-8 -*-
import os
import struct
import time
import datetime
import requests
from concurrent.futures import ThreadPoolExecutor, as_completed
import logging
# 配置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
TDX_DATA_DIR = r"D:\new_tdx\vipdoc" #←←← 请改成你的通达信安装路径
def get_market_prefix(code):
if code.startswith(('6', '9')):
return 'sh'
elif code.startswith(('0', '3')):
return 'sz'
else:
return None
def fetch_sina_daily(code):
"""
返回: [(date, open, high, low, close, vol), ...]
"""
prefix = get_market_prefix(code)
if not prefix:
return []
url = f"http://money.finance.sina.com.cn/quotes_service/api/json_v2.php/CN_MarketData.getKLineData?symbol={prefix}{code}&scale=240&ma=5&datetype=1&candletype=1"
try:
resp = requests.get(url, timeout=10)
if resp.status_code != 200:
return []
data = resp.json()
if not isinstance(data, list):
return []
result = []
for item in data:
date_str = item['day'].replace('-', '')
date_int = int(date_str)
open_p = float(item['open'])
high = float(item['high'])
low = float(item['low'])
close = float(item['close'])
vol = int(float(item['volume']) / 100)
result.append((date_int, open_p, high, low, close, vol))
return result
except Exception as e:
logging.error(f"获取 {code} 失败: {e}")
return []
# 将数据写入通达信 .day 文件
def write_tdx_day_file(code, klines):
prefix = get_market_prefix(code)
if not prefix:
return
filename = os.path.join(TDX_DATA_DIR, f"{prefix}{code}.day")
os.makedirs(TDX_DATA_DIR, exist_ok=True)
# 读取已有数据(避免重复)
existing_dates = set()
if os.path.exists(filename):
with open(filename, "rb") as f:
while True:
buf = f.read(32)
if len(buf) < 32:
break
date, = struct.unpack('<I', buf[:4])
existing_dates.add(date)
# 过滤新数据
new_klines = [k for k in klines if k[0] not in existing_dates]
if not new_klines:
return
# 写入
with open(filename, "ab") as f:
for k in sorted(new_klines, key=lambda x: x[0]):
date, open_p, high, low, close, vol = k
buf = struct.pack(
'<IffffII',
date,
open_p * 100,
high * 100,
low * 100,
close * 100,
vol,
0
)
f.write(buf)
logging.info(f"更新 {code} 新增 {len(new_klines)} 条记录")
# 下载
def download_stock(code):
try:
klines = fetch_sina_daily(code)
if klines:
write_tdx_day_file(code, klines)
except Exception as e:
logging.error(f"处理 {code} 异常: {e}")
def main():
stock_list = [
'600000', '000001', '300750', '601318', '002475',
'600519', '000858', '603259', '300059', '688981'
]
logging.info(f"开始下载 {len(stock_list)}...")
with ThreadPoolExecutor(max_workers=12) as executor:
futures = {executor.submit(download_stock, code): code for code in stock_list}
for future in as_completed(futures):
code = futures[future]
try:
future.result()
except Exception as e:
logging.error(f"{code}: {e}")
logging.info("全部下载完成!")
if __name__ == "__main__":
main()

——温馨提示——
指标下载:https://docs.qq.com/doc/DQ0hRSUFpZVdyTVFZ
1、在文章最下面点“在赞”
”+点“
”
2、然后进入公众号主页发消息回复关键词 sjxz 几个字不要回复错了,获取下载链接。或【tn6】格式的指标链接!文档内没有广告,方便源码的复制或下载。
免费指标下载:WWW.TDXLFXJ.COM.CN复制链接到浏览器打开即可下载更多免费指标
3、关键词回复错误,以及没有点赞和❤的朋友回复是没用的,后台设置过了。且有被拉黑的风险。大家都要遵守平台规则哦。

记得点赞在看哦~感谢支持!

点击下方“阅读原文”查看更多