量化交易系统
文章平均质量分 58
zhuxian2009
音视频,流媒体。量化交易系统,大道至简。
展开
-
mysql数据表太大怎么办?
日积月累,mysql的日K先数据已经达到百万级别,查询一条数据超过3秒,太慢了,不可否认,云服务器便宜没好货,硬件不行,只能软件改了。想想怎么优化,先看看这张巨无霸表的基本信息。数据总量350万条;查询一次3.15秒。考虑到,实时计算,一般用到热点数据,最多一年范围。所以,暂时简单的优化方案,就是建立一张新table,预先将最近一年左右的数据挪过来,量化处理时,直接从新表查询。2. copy去年6月1日-今天的所有数据到新table3.再次验证查询速度可以看到,已原创 2022-06-04 23:48:07 · 2017 阅读 · 2 评论 -
mac安装brew
1. 网上大多数的脚本 % ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" curl: (22) The requested URL returned error: 404 Not Found然鹅,报错404 not found2. 有人给出了新的链接,看上去可以了,然鹅...原创 2020-03-02 12:22:34 · 618 阅读 · 0 评论 -
潮汐量化系统
最近想好了名字,量化交易系统正式改为“潮汐量化系统”。潮汐,海洋的一种自然现象,投资就如潮汐,有其规律和趋势,应该去遵循和敬畏。原创 2019-10-24 15:08:39 · 948 阅读 · 0 评论 -
centos下python使用matplotlib绘图出现中文乱码
1. 当前环境当前centos中,使用fc-list :lang=zh查询不到合适的系统中文字体文件(venv) [root@VM_0_3_centos mpl-data]# fc-list :lang=zh(venv) [root@VM_0_3_centos mpl-data]# fc-list/usr/share/fonts/dejavu/DejaVuSansCondensed-...原创 2019-08-30 04:37:54 · 1146 阅读 · 0 评论 -
python matlotlib绘图,以时间为横坐标
实现一个时间为横坐标,整数为纵坐标的例子:import matplotlib.pyplot as plt#导入中文字体,避免显示乱码import pylab as mplimport numpy as np #数据源 list_date = ['20190813', '20190814', '20190815', '20190816', '20190819'] ...原创 2019-08-20 23:36:38 · 13019 阅读 · 4 评论 -
python跨平台文件锁
封装了一下文件锁,方便使用。在flask中,经常使用Flask-APScheduler进行任务调度。如果使用gunicorn来管理flask,可以启动多个flask进程。例如:nohup gunicorn -w 4 -b 0.0.0.0:5000 myflask:app &根据-w 4的值,可以启动4个flask进程,每个进程拥有一个独立的内存空间,管理自己的...原创 2019-08-11 17:17:46 · 1131 阅读 · 0 评论 -
flask推送matplotlib绘图到html
1.matplotlib绘图import matplotlib.pyplot as pltimport numpy as npimport base64from io import BytesIO #############################################绘图测试 X = np.linspace(-np.pi, np.pi, 256...原创 2019-08-19 04:58:39 · 4728 阅读 · 4 评论 -
python flask有中文运行报错:SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xc5
在flask中,加入了一个函数:#1.修改配置@app.route('/config')def config(): print('Hello, World 3') return '配置'运行一下:flask run居然直接报错了:SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xc5 ...原创 2019-07-28 15:52:14 · 1678 阅读 · 0 评论 -
量化交易系统用例图(二)
系统以及跑起来,再画用例图,就更清晰了。大致说一下,如果要新增一个策略要怎么弄。1.新增一个任务调度;2.从mysql读历史日K数据;3.从mysql读实时分时数据;4.将数据加工厂策略需要的形式,喂给策略执行;5.将结果写入mysql;6.写一个html页面展示(模仿即可)。7.请求页面时,从flask读mysql,发送给html展示。...原创 2019-08-31 22:25:02 · 466 阅读 · 2 评论 -
量化交易系统——回测模块实现之策略模式
需求回测模块上层业务是相同的。我们需要保证上层逻辑不变,切换不同的策略,进行策略回测。在一个回测模块中,一次执行一种策略。解决方案在面向对象中,其实就用多态。不同的子类,继承于同一个基类(父类)。业务中调用父类的函数,达到不改变业务逻辑的前提下,切换不同的策略。设计模式中,将它取名为“策略模式”。策略模式流程图...原创 2019-09-20 23:48:48 · 655 阅读 · 0 评论 -
量化交易系统——回测模块实现之状态模式
上一篇文章《量化交易系统——回测模块实现之策略模式》中,使用策略模式,实现回测模块中切换不同策略的设计方案。现在,实际的策略中,涉及到不同的状态:选股状态,买入(持股)状态,卖出(统计)状态;往复杂的说,还有加仓状态,减仓状态等。不同的状态,需要处理不同的动作,如果一个策略类中,用if/else来处理这么多状态,将会非常头大。于是,选择使用状态模式,虽说有些冗余,但是非常清晰。...原创 2019-09-23 00:11:34 · 403 阅读 · 0 评论 -
量化交易系统——突破前期股价的算法(一)
目录概述一、水平突破1.1 前期高点选择1.2 总结二、趋势线突破概述大A股中,想盈利只能做多。做多的策略中,只有突破压力位,才能打开上涨空间。压力位包括很多种:前期高点、下跌趋势线、X线、整数位、黄金分割线等。本文主要梳理前期高点的突破情况。一、水平突破1.1 前期高点选择图1中,以当前交易日(今天)为起点,往历史交易日方向,取N天。1...原创 2019-09-25 00:28:53 · 1625 阅读 · 2 评论 -
腾讯股票API获取上证指数
使用腾讯股票API,获取上证指数的日k数据:http://web.ifzq.gtimg.cn/appstock/app/fqkline/get?param=sh000001,day,2017-12-01,,640,qfq参数简述:sh000001--上证指数;param=代码,日k,开始日期,结束日期,获取多少个交易日,前复权返回:["2019-09-30","2...原创 2019-10-07 03:18:11 · 11439 阅读 · 0 评论 -
python解析腾讯股票api的上证指数
import requestsimport jsondef main(): url = 'http://web.ifzq.gtimg.cn/appstock/app/fqkline/get?param=sh000001,day,2017-12-01,,640,qfq' r = requests.get(url) # 向指定网址请求,下载股票数据 print(r....原创 2019-10-07 03:55:59 · 2699 阅读 · 0 评论 -
mysql的select语句写计算公式
没有公式的selectmysql> select * from t_bt_strategy a where strategyid=2 and buyprice<sellprice;+-------+-----------+----------+----------+----------+-----------+----------+------------+| id |...原创 2019-10-09 23:09:56 · 2088 阅读 · 0 评论 -
tushare接口get_realtime_quotes报错:AssertionError: 33 columns passed, passed data had 34 columns
tushare接口get_realtime_quotes,今天报错了:AssertionError: 33 columns passed, passed data had 34 columns看了一下源码,在获取股票代码为600063时,报了错。dataframe5 = ts.get_realtime_quotes('600063')与正常的代码比较dataframe5 =...原创 2019-08-01 18:41:46 · 13457 阅读 · 7 评论 -
量化交易系统之双重底(W底)算法(一)
双重底是经典的形态选股策略,市场认可度比较高。要准确的实现双重底,还是需要一定的计算量,根据算法的灵活度越大,计算量越大。算法描述算法自定义词汇说明:1. 以实际交易日期为X横坐标,某只股票的价格为Y纵坐标;2. 一个交易日,就会出现一条K线。以当前需要回测的日期为终点,往历史时间选择一个大区间N天;3. 将大区间一分为二,简化处理,两个小区间完全相等,分别包含N/...原创 2019-07-28 12:12:08 · 7469 阅读 · 4 评论 -
python计算涨停价格
计算涨停价格,只需要一个输入参数:昨日收盘价pre_close涨停价格计算原理limit_price =pre_close +pre_close * 0.1对涨停价格limit_price做四舍五入。四舍五入计算不要用round,因为round不是四舍五入! #计算涨停价格 def calc_limit_price(self, pre_close)...原创 2019-08-07 22:37:31 · 3104 阅读 · 0 评论 -
flask启动过程+实现网页跳转
目录1. 激活虚拟环境2.设置变量3. html文件4. myflask.py文件内容5. 执行flask6.第二种执行flask的方法1. 激活虚拟环境cd到工程目录E:\workspace\ffmpeg\bin>cd E:\workspace\stock\hdf5testE:\workspace\stock\hdf5test>E:\...原创 2019-07-29 00:24:39 · 3336 阅读 · 0 评论 -
flask启动其他工程下的py程序
涉及这个问题,是计划用flask实现一个简单的web服务器,以后可以运行在云服务器。通过web控制量化交易系统,进行功能配置,结果展示等。初步设想,是flask单独运行,量化交易系统也是单独运行。所以,flask启动其他工程(量化交易系统)的py程序,是预研的第一件事。通过欢迎来到 Flask 的世界的指导,相信很容易可以跑通第一个hello world:from flask i...原创 2019-07-23 23:11:00 · 1662 阅读 · 0 评论 -
python计算macd指标
移动平滑异同平均线(Moving Average Convergence Divergence,简称MACD指标)策略,被称为“指标之王”,经常使用它,当日要常备在数据库了。macd计算方法,不求多完美,能对标常用的炒股软件就好了。需要的结果又macd值(红绿柱),diff(快线),dea(慢线)主要用到talib库talib.MACD方法。代码实现:diff, dea, my...原创 2019-07-24 15:50:09 · 11868 阅读 · 0 评论 -
量化交易系统之python+mysql(一)
前言之前用python+hdf5+其他实现了一个简单功能的量化交易系统。在使用过程中,遇到了性能问题,以及扩展问题。所以,想改用mysql+redis架构。工欲善其事,必先利其器:windows系统,mysql-8.0.16-winx64,Navicat Premium 12,pyCharm community正文1.python操作mysql,用到pymysql,所以,需要在...原创 2019-07-21 00:00:20 · 4899 阅读 · 4 评论 -
腾讯云部署samba
系统:centos 7.2大坑记公网现在一般都封了samba监听端口554,如果需要正常访问,需要:1.改变samba服务器的监听端口;2.在windows下做端口映射,将对554的访问,改为修改后的samba端口连接;安装sambayum -y install samba测试安装是否成功,启动一下试试:systemctl start smb.services...原创 2019-08-02 17:31:51 · 2715 阅读 · 0 评论 -
量化交易系统之python+mysql(二)
在上一篇文章中《量化交易系统之python+mysql(一)》,实现了插入一条数据的效果。现在,开始分析真实数据了,以及在开发过程中,进行优化。问题描述在mysql方面,遇到如下问题:1.一支股票,所具有的历史数据,从上市开始到今天,称为纵向数据;现在,A股中有3500+只股票,称为横向数据;也就是说,一张表需要存储纵向数据个数*横向数据个数(3500+),可能需要分表。不过我这里...原创 2019-07-21 19:54:06 · 1462 阅读 · 2 评论 -
新版本tushare使用pro_bar()报错:pro_bar() got an unexpected keyword argument 'pro_api'
以下简单的测试代码(老版本1.2.18正常,新版本1.2.39报错):import tushare as tsdef main(): ts.set_token('你的token id') print(ts.__version__) pro = ts.pro_api() try: #返回dataframe结构:ts_code/trade_d...原创 2019-08-03 11:49:05 · 5783 阅读 · 0 评论 -
云服务器用Gunicorn部署flask
GunicornGunicorn‘Green Unicorn’ 是一个 UNIX 下的 WSGI HTTP 服务器,它是一个 移植自 Ruby 的 Unicorn 项目的 pre-fork worker 模型。它既支持eventlet, 也支持greenlet。在 Gunicorn 上运行 Flask 应用非常简单:gunicorn myproject:appGun...原创 2019-08-04 17:54:35 · 513 阅读 · 0 评论 -
tushare之“前复权”
复权问题描述通过上一篇文章《量化交易系统之python+mysql(二)》的内容,已经可以将需要的实时A股数据写入到mysql,与股票分析软件做对比,“开盘价”,“收盘价”等,却发现,有的数据相同,有的数据完全不一样,同样是通过tushare接口(daily)获取的,怎么会这种差异?pro = ts.pro_api()df = pro.daily(ts_code='000001.SZ...原创 2019-07-23 09:09:44 · 4635 阅读 · 3 评论 -
'numpy.ndarray' object has no attribute 'translate'
使用pymysql批量插入mysql数据 # 执行SQL语句 cursor.executemany(sql, list_values),出现报错'numpy.ndarray' object has no attribute 'translate';通过调试比较,出错的list_values类型与正常的有些许差异,出错的list_va...原创 2019-07-27 01:01:21 · 8971 阅读 · 0 评论 -
python dataframe类型转换后存入mysql
上文中《tushare之前复权》提到,从tushare得到复权日K线数据,而返回值是dataframe类型的。现在需要将dataframe类型转换成数组,逐个存入数据库。dataframe类型,使用values方法,返回数组类型;然后,for循环逐行遍历数组,一行就对于mysql的一条记录,关键部分代码如下:import tushare as ts ...原创 2019-07-23 09:24:01 · 1284 阅读 · 0 评论 -
python mysql查询结果tuple类型,转换成dataframe类型
使用pymysql,从mysql查询数据,返回结果是tuple类型 def query_kdata(self,code): if self.connect is None: return None # 得到一个可以执行SQL语句的光标对象 cursor = self.connect.cursor() ...原创 2019-07-23 10:06:43 · 6094 阅读 · 0 评论 -
html简单的折叠菜单
大道至简。html+css+一个简单的JavaScript函数,实现的折叠菜单。功能:1.鼠标放置在菜单选项,具有变化;2.实现一级菜单,二级菜单;3.一级菜单收起来时,前面是“+”,展开时,前面是“-”;效果图:直接贴贴贴代码:zhedie_menu.html<html><head><meta http-equiv="C...原创 2019-08-01 10:04:27 · 11223 阅读 · 0 评论 -
量化交易系统之python+mysql(三)
经过前面三篇文章的铺垫,实现了:1.股票数据来源:tushare之“前复权”2.从tushare获取股票数据以后,如何写入mysql:python dataframe类型转换后存入mysql3.如何从mysql读取股票数据,还原成dataframe,进行后续数据处理:python mysql查询结果tuple类型,转换成dataframe类型那么,这篇文章,就是终结篇,处理来自my...原创 2019-07-23 11:43:36 · 1290 阅读 · 0 评论 -
量化交易系统用例图(一)
量化交易系统用例图原创 2019-07-27 22:21:45 · 621 阅读 · 0 评论 -
量化交易系统之双重底(W底)算法(二)
在上一篇文章中《量化交易系统之双重底(W底)算法(一)》,遗留了一个问题,即回测速度不满意。通过追踪打印,真正的耗时之王,居然是读mysql数据。在表t_kdata中(表结构见《 量化交易系统之python+mysql(二)》),一共保存了137万多条数据。mysql> select count(*) from t_kdata;+----------+| count(*) ...原创 2019-07-28 23:33:56 · 2452 阅读 · 1 评论