首页 文章 精选 留言 我的

精选列表

搜索[思维导图],共10000篇文章
优秀的个人博客,低调大师

Echarts 象形图

2018年5月15日 var walk = 'image://../images/health_walk.png'; var dom = document.getElementById("recoveryChart"); var myChart = echarts.init(dom); var app = {}; option = null; option = { tooltip: { trigger: 'axis', formatter: '{b}<br />{a1}:{c1}' }, legend: { show: true, data: ['改善目标'], textStyle: { color: '#000' }, left: 38 }, grid: { top: 60, left: 8, containLabel: true, }, color: ['#0f0', '#c23531', '#2f4554', '#61a0a8', '#d48265', '#91c7ae', '#749f83', '#ca8622', '#bda29a', '#6e7074', '#546570', '#c4ccd3'], xAxis: { type: 'category', boundaryGap: false, interval: 1, data: [0, '第2周', '第4周', '第6周', '第8周', '第10周', '第12周'], splitLine: { show: false, lineStyle: { type: 'solid', color: '#000', }, interval: 0 }, axisTick: { show: false }, axisLine: { lineStyle: { color: '#000' }, }, }, yAxis: { name: '公斤', type: 'value', nameGap: 6, splitLine: { show: false, lineStyle: { color: '#000' } }, axisLine: { //坐标轴线设置 lineStyle: { color: '#000' } }, axisTick: { //坐标轴刻度设置 show: false }, nameTextStyle: { color: '#000' }, axisLabel: { //坐标轴刻度标签设置 color: '#000' }, splitArea: { //分隔区域样式设置 show: false, areaStyle: { color: ['rgba(250,250,250,0.3)', 'rgba(200,200,200,0.3)'], }, }, }, series: [{ type: 'pictorialBar', symbol: walk, symbolSize: [15, 23], z: 10, data: [{ value: 88, symbolPosition: 'end', symbolOffset: [15,-23] },{ },{ },{ },{ },{ },{ value: 71, symbolPosition: 'end', symbolOffset: [-15, -23] }] },{ name: '改善目标', type: 'line', step: 'middle', lineStyle: { normal: { color: '#ff9743', }, }, itemStyle: { normal: { color: '#ff9743' } }, data: [88, 86, 83.5, 81, 76.9, 73, 71] }] }; if(option && typeof option === "object") { myChart.setOption(option, true); }

优秀的个人博客,低调大师

用QMT批量下载全市场ETF数据,再也不用手动导了

上次我们结束了怎么样下载全市场股票的数据量化研究--QMT下载全部的股票历史数据,今天我们详细的介绍一下,怎么样把QMT的数据保存在本地研究,比如做因子分析,回测,交易的模拟等需求 ![](https://developer.qcloudimg.com/http-save/audit-12698924/d689195886529c147753faac0c059340.webp) 第一步打开QMT,点击策略编辑,进入下载数据策略,设置里面的参数 ![](https://developer.qcloudimg.com/http-save/audit-12698924/b492efa017c36480225831c331ba3c49.webp) 设置下载文件保存的路径比如桌面 ![](https://developer.qcloudimg.com/http-save/audit-12698924/1adae569d9c8542f56aa32d5bd8f16b5.webp) 比如桌面没有这个文件夹的话会自动建立,路径设置对就可以 读取板块的成分股,就是qmt界面行情左边的板块名称,全部板块名称都可以读取 ![](https://developer.qcloudimg.com/http-save/audit-12698924/22fbbf1ed962fffdcb7f0b076b30387e.webp) 行情左边的全部板块 ![](https://developer.qcloudimg.com/http-save/audit-12698924/c14ef514c51d100072e84752d8c8b055.webp) 读取的函数注意不要输入时间,输入时间有问题读取不到,realtime参数我输入有问题读取不到成分股,不输入可以正常读取 ![](https://developer.qcloudimg.com/http-save/audit-12698924/2ac118e3eaae27b9441c53ed04354dc7.webp) 比如 - ```javascript # coding:gbk def init(C): pass def handlebar(C): print(C.get_stock_list_in_sector('上证50')) ``` 3下载历史行情数据,如果订阅实时读取的话,数据下载会比较慢,我们补充好数据一次性读取下载就可以,点击界面的操作,下面的数据管理下载 ![](https://developer.qcloudimg.com/http-save/audit-12698924/31bd6fd50e2d2da97d9b83536e3b475d.webp) ![](https://developer.qcloudimg.com/http-save/audit-12698924/879fe45e3c5a779d08662ff732db5b44.webp) 选择自己需要的数据,时间周期下载就可以 ![](https://developer.qcloudimg.com/http-save/audit-12698924/bdcb077d481ae1632952174636574adc.webp) 支持多周期数据下载可以自己选择 ![](https://developer.qcloudimg.com/http-save/audit-12698924/f39073e95f68916048ab228b8af5ee83.webp) 参数说明 ```javascript ContextInfo.get_market_data_ex( fields=[], stock_code=[], period='follow', start_time='', end_time='', count=-1, dividend_type='follow', fill_data=True, subscribe=True) ``` ![](https://developer.qcloudimg.com/http-save/audit-12698924/0607e32b795b472e63c67da26a31a920.webp) ![](https://developer.qcloudimg.com/http-save/audit-12698924/a672ec15f88b5873e05d8d3f2426c089.webp) 例子说明 ```javascript # coding:gbk import pandas as pd import numpy as np def init(C): C.stock_list = ["0001.SZ","609.SH", "5100.SH"]# 指定获取的标的 C.start_time = "20230901"# 指定获取数据的开始时间 C.end_time = "20231101"# 指定获取数据的结束时间 def handlebar(C): # 获取多只股票,多个字段,一条数据 data1 = C.get_market_data_ex([],C.stock_list, period = "1d",count = 1) # 获取多只股票,多个字段,指定时间数据 data2 = C.get_market_data_ex([],C.stock_list, period = "1d", start_time = C.start_time, end_time = C.end_time) # 获取多只股票,多个字段,指定时间15m数据 data3 = C.get_market_data_ex([],C.stock_list, period = "15m", start_time = C.start_time, end_time = C.end_time) # 获取多只股票,指定字段,指定时间15m数据 data4 = C.get_market_data_ex(["close","open"],C.stock_list, period = "15m", start_time = C.start_time, end_time = C.end_time) # 获取多只股票,历史tick tick = C.get_market_data_ex([],C.stock_list, period = "tick", start_time = C.start_time, end_time = C.end_time) # 获取期货5档盘口tick future_lv2_quote = C.get_market_data_ex([],["rb25.SF","ec4.INE"], period = "l2quote", count = 1) print(data1) print(data2["01.SZ"].tail()) print(data3) print(data4["001.SZ"]) print(data4["0001.SZ"].to_csv("your_path")) # 导出文件为csv格式,路径填本机路径 print(tick["0001.SZ"]) print(future_lv2_quote) ``` 最后一步选择模型交易,把策略挂交易,点击运行就会下载行情数据,运行的结果 ![](https://developer.qcloudimg.com/http-save/audit-12698924/dbdcd81938ddd1ebdd2a2c16c165e476.webp) 可惜大qmt是单线程的,不然多线程一分钟就下载好了,下载的数据参考 ![](https://developer.qcloudimg.com/http-save/audit-12698924/86f256819ba2a0fabc027b25b3ddc9c8.webp) 随便打开看看,前提是需要把数据补充完整 ![](https://developer.qcloudimg.com/http-save/audit-12698924/2d5b051c26ed41e5b78b01508f3887a1.webp) 不懂的问我就可以 下载代码参考学习使用 - ```javascript #coding:gbk ''' 作者:小果 全市场ETF数据下载器 功能:读取全部沪深ETF板块成分股,循环下载每只股票的历史日线数据,保存为xlsx文件 ''' import pandas as pd import os import datetime def init(c): c.account = '55001947' download_all_a_stock_data(c) def download_all_a_stock_data(c): """ 下载全部A股历史日线数据 参数 c: ContextInfo 对象(QMT回调传入) """ # ========== 设置 ========== save_path = r'C:\Users\lxg123456\Desktop\data' # 创建文件夹 if not os.path.exists(save_path): os.makedirs(save_path) print(f"已创建文件夹: {save_path}") # ========== 1. 获取全部A股股票池 ========== current_time = int(datetime.datetime.now().timestamp() * 1000) print("正在获取全部ETF板块成分股...") stock_list = c.get_stock_list_in_sector('沪深ETF') # 如果"全部A股"拿不到,尝试"沪深A股" if not stock_list or len(stock_list) == 0: print("'全部ETF'板块未找到,尝试'沪深A股'...") stock_list = c.get_stock_list_in_sector('沪深ETF') # 过滤:只保留正常A股(6位数字.市场标识) stock_list = [s for s in stock_list if s.count('.') == 1 and s.split('.')[0].isdigit()] print(f"共获取到 {len(stock_list)} 只A股\n") # ========== 2. 循环下载每只股票 ========== success = 0 fail = 0 for i, stock in enumerate(stock_list, 1): file_path = os.path.join(save_path, f"{stock}.xlsx") print(f"[{i}/{len(stock_list)}] 下载 {stock} ...", end="") try: # 获取历史日线数据 data = c.get_market_data_ex( [], # 获取全部字段 [stock], # 股票代码 period='1d', # 日线 start_time='19900101', # 从1990年开始 end_time='20500101', # 到足够远的时间 count=-1, # 全部数据 dividend_type='front', # 前复权 fill_data=True, subscribe=False ) if stock in data and data[stock] is not None: df = data[stock] if not df.empty: df.to_excel(file_path) success += 1 print(f" 完成 ({len(df)}条)") else: fail += 1 print(" 数据为空") else: fail += 1 print(" 无数据") except Exception as e: fail += 1 print(f" 失败 - {e}") # ========== 3. 打印结果 ========== print(f"\n{'='*50}") print(f"下载完成!") print(f"总计: {len(stock_list)} 只股票") print(f"成功: {success} 只") print(f"失败: {fail} 只") print(f"数据保存在: {save_path}") print(f"{'='*50}") def handlebar(c): pass ```

优秀的个人博客,低调大师

为了避免网络攻击,企业需要了解黑客的思维

如今,各公司在网络安全上的花费比以往任何时候都多,大量新的安全系统也挡不住黑客们的攻击,而且攻击势头越来越猛,对公司造成更大的财务和生意上的损失。 我认为,之所以会出现这种情况,是因为企业正在以错误的方式对待网络安全。 尽管从逻辑上讲,一家公司在网络安全系统上的投入越多,就会被保护的更好,但这两者之间并没有必然的关联。更重要的是:增加网络安全支出往往会产生意想不到的效果,会给人一种虚假的安全感。 为了真正保护自己,企业需要放下这样一种观念:花的钱越多,实施的安全系统越多,得到的保护就越好。真正的安全要站在黑客的角度看待IT系统,并在系统的最脆弱的地方实施严格的保护。思考黑客最有可能使用的方法,公司最重要的资产才能得到保护。 对于许多企业来说,需要调整视角,并重新考虑“安全”对他们意味着什么。以下的步骤至关重要: 分析和优先排序数字资产 防御黑客攻击最好是从业务角度分析企业的资产以及黑客攻击的潜在成本开始。例如,当一个站点从备份中恢复,并且客户抱怨缺乏社交媒体访问权限时,企业需要花费大量精力来阻止这种攻击,这种攻击会使企业离线数小时。与此同时,对于那种包含了未使用或旧应用程序的服务器,就不用担心被黑客攻击了。 如果一个企业的资源有限,那么这些资源应该分配到哪里就很清楚了。因此,关于决定应该首先保护哪些资产,必须要看他们对业务的重要性以及拥有多少价值。这些都需要企业领导者来做决定,而不仅仅是IT团队。 像黑客一样思考 了解黑客的心理非常重要。黑客们寻找的是能够提供低阻力、高质量的资产。如果他们在包含客户数据或知识产权的服务器上发现一个“明显的”错误配置,他们就会攻击这个服务器,并且很大程度上会成功。 为了防止黑客攻击,企业应将大部分安全工作、资源和预算用于保护服务器,并为访问它设置尽可能多的障碍。多个防御层会导致黑客攻击服务器需要花费大量时间、精力,因此黑客很有可能将目标转移到容易攻击的目标上。企业的首要任务应该是为关键资产设置防御,以便转移黑客的注意力。 不断反思并作出调整 “花钱防御”态度的一个弱点是,人们倾向于相信,企业花了这么多钱的安全系统能够解决黑客入侵问题。但是黑客构成的威胁也在不断变化着,许多现有的安全系统还没有测试是否能够抵御黑客威胁。 许多网络安全计划没有考虑到需要经常修改和测试的问题。一个好的安全计划需要不断地检验和更新。大多数企业都在计划并执行着一个长期计划,且没有建立持续进行更新防御系统所需的敏捷性和灵活性。这一点是必须改变的。 网络攻击的细节及其补救措施可能让人眼花缭乱。考虑到当今IT系统的规模和影响范围,即使是最能干的安全团队也不可能将所有黑客挡在门外。花钱也解决不了这个问题;为了保护自己,企业尽可能提高网络安全投资的效率而把钱花在刀刃上,才能确保他们的重要资产得以保护。

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册