自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 网络编程入门

来自廖雪峰的网络编程。客户端需要主动发起connect,然后服务器端先设置监听的端口,然后发现connect后就新建一个线程处理。socket_server.pyimport socketimport threadingimport times = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.bind(('1

2018-02-01 15:27:02 303

原创 量化白马股轮动策略

股票数据的获取见均线策略第一篇,回测的数据分析见均线策略第三篇。不同的策略在于Strategy类中的买入卖出的判断。首先什么是白马股,白马股,是指长期绩优、回报率高并具有较高投资价值的股票。因其有关的信息已经公开,业绩较为明朗,同时又兼有业绩优良、高成长、低风险的特点,因而具备较高的投资价值,往往为投资者所看好。以上来自百度百科。关注过公众号招财大牛猫的朋友一定对白马股比较熟悉,由于i

2018-01-29 09:41:02 3394

原创 量化双均线策略:(三)统计策略结果

统计指标包括:总收益,年化收益,夏普比率,平均每日涨幅,最大回撤。基于上篇Strategy类run_simulation后将res_df存储到本地的一个csv文件中,然后读取csv后计算这些统计指标,具体实现如下。 def annual_return(df): change = df['capital_market_value'].iloc[-1]/df['capit

2018-01-28 20:48:10 5581 1

原创 量化双均线策略:(二)判断买入卖出信号

上篇已经介绍了data的获取,此篇介绍ma5与ma10的双均线策略具体实现。双均线策略是一个趋势策略,基本思路是金叉买入,死叉卖出,也就是当ma5向上穿过ma10时,则买入,向下穿过ma10时,则卖出。主要实现在Strategy类中,输入的变量格式如下:code_list = ['002415', '002416', '000333'],init_cash = 100000,starttime

2018-01-28 16:47:22 7468 2

原创 量化双均线策略:(一)通过tushare获取股票数据

之前几篇通过爬虫与mysql数据库获取到所有股票数据,存在一个比较难处理的问题,就是数据为未复权,无法策略回测。为了获取到已复权数据,也是找了很多接口,最终发现tushare是一个不错的选择,不用存储在本地,程序运行时候保证联网,直接获取数据,最重要的是可以选择前复权或者后复权。以下引用自官方网站http://tushare.org/index.html Tushare是一个免费、开源的p

2018-01-26 22:27:14 6431

原创 读取股票数据存储到本地MySQL数据库(三)

此篇是将上篇获取到的股票数据存储到本地mysql数据库。mysql是关系型数据库,为Oracle旗下产品,开源免费。首先下载mysql的安装包,安装完成后设置数据库并启动服务,然后可以通过Navicat可视化客户端查看数据库。通过pymysql模块处理sql语言的执行,基本操作就是先创建一个数据库的连接conn,然后创建cursor对象,cursor对象通过调用execute函数执行sql

2018-01-26 21:20:25 4216 1

原创 读取股票数据存储到本地MySQL数据库(二)

通过凤凰api获取到json数据。#encoding = utf-8import requestsimport jsonimport pandas as pdclass GetStockPrice(object): def get_daily_price(self, stock): DAY_PRICE_URL = 'http://api.finance.if

2018-01-26 20:57:06 2802

原创 读取股票数据存储到本地MySQL数据库(一)

主要有三个步骤:(1)从东方财富上爬虫读取到所有股票的codelist;(2)从凤凰网的api获取到某只股票历史上所有数据,开盘收盘价,成交量,成交金额,ma均线价格等数据;(3)通过pymysql将获取到的数据存储到本地。第一个步骤的实现,从EAST_MONEY_URL = 'http://quote.eastmoney.com/stocklist.html'处获取stocklist。主要使

2018-01-25 22:28:34 5413

原创 numpy简介与使用keras的KNN分类算法

Anaconda计算包集合了numpy,pandas,sklearn,scipy等模块。numpy用来处理大型矩阵,比python自带的嵌套list要高效很多。可以使用list作为numpy对象的初始化参数,一维list与嵌套list都可以,在此用*生成的嵌套list可以作为np.array()的参数,实际np.array也会按照总元素个数申请内容。a = np.array([1,2,

2018-01-25 20:52:15 3685

原创 python线程进程

多任务处理可以为多进程或者多线程,一个进程中至少有一个线程。以下代码与例子均来自廖雪峰的python教程。在windows下通过multiprocessing中的Process类生成一个进程。from multiprocessing import Processimport osdef run_func(name): print('my process name is

2018-01-23 08:01:05 863

原创 判断字符串是否为回文

普通的判断方式,i与j两个指针,从头尾移动。def is_huiwen(src): if len(src) <= 1: return True i, j = 0, len(src)-1 while i<j: if src[i] == src[j]: i += 1 j -= 1

2018-01-22 16:07:17 307

原创 python几个面试题目:单例模式,浅拷贝与深拷贝

主要参考git上一篇面试题目,链接如下https://github.com/taizilongxu/interview_python#2-python%E4%B8%AD%E7%9A%84%E5%85%83%E7%B1%BBmetaclass实现单例模式,对每种方式添加更详细的分析。class Singleton(object):    _instance = None    def

2018-01-22 15:15:13 949

转载 Python的继承以及调用父类成员:super用法

此文解答了__init__调用super方法与__new__调用super方法时候的区别,原文地址https://www.cnblogs.com/zhangxian/articles/4807894.html以下为正文。python子类调用父类成员有2种方法,分别是普通方法和super方法假设Base是基类class Base(object):

2018-01-22 10:37:43 4292

原创 python正则表达式判断邮箱域名是否合法

先整理下正则表达式的规则,以下内容大部分来自廖雪峰的python教程。\d表示一个数字,\w表示一个数字或者一个字母,.表示任意一个字符,*表示任意个字符(包括0个),+表示至少一个字符,?表示0个或者1个字符,{n}表示n个字符,{n,m}表示n至m个字符。[0-9a-zA-Z\_]匹配一个数字或者一个字母或者下划线,[0-9a-zA-Z\_]+匹配至少一个由一个数字或者一个字母或者下划

2018-01-21 19:33:02 7983

原创 python闭包与装饰器

首先闭包函数我的理解是,一个函数内可以嵌套定义一个函数,并将嵌套定义的函数返回(如果不返回运行完函数对象也就销毁了),嵌套函数可以接收外部函数的参数,不同参数就可以变更嵌套函数的功能,返回不同功能的嵌套函数对象。以下是闭包函数简单示例,如果inner函数不接收outer的参数x也就没有意义了,一定要返回内部函数。def outer(x): def inner():

2018-01-21 14:47:43 168

原创 动态规划求解01背包问题,最长递增子序列

01背包问题:给定N中物品和一个背包,物品i的重量是Wi,其价值位Vi,背包的容量为C。问应该如何选择装入背包的物品,使得转入背包的物品的总价值为最大?每件物品可以选择装或者不装。i代表前i个物品(包括i),j表示背包重量,f(i, j)表示从前i个物品中选取到总重量不超过j的最大价值。如果wi > j: f(i, j) = f(i-1, j) 否则f(i, j) = max(f(i-1,

2018-01-20 19:49:24 561

原创 动态规划求解最长公共子串与公共子序列

最长公共子序列(longest common sequence)和最长公共子串(longest common substring)是两个不同的问题。一个给定的序列的子序列,就是将给定序列中零个或多个元素去掉之后得到的结果。什么是子串呢?给定串中任意个连续的字符组成的子序列称为该串的子串。(一)最长公共子序列:求得'ABCD'与'EFGACXD'最长公共子序列,结果为3。假设动态规划中res

2018-01-20 18:24:33 208

原创 python最小生成树kruskal与prim算法

kruskal算法基本思路:先对边按权重从小到大排序,先选取权重最小的一条边,如果该边的两个节点均为不同的分量,则加入到最小生成树,否则计算下一条边,直到遍历完所有的边。prim算法基本思路:所有节点分成两个group,一个为已经选取的selected_node(为list类型),一个为candidate_node,首先任取一个节点加入到selected_node,然后遍历头节点在selected

2018-01-18 21:32:20 14093 2

原创 python实现数据结构图-广度深度遍历

此篇记录下数据结构图的实现,带权重的无向图,邻接矩阵表示边集合,为接下来的最小生成树做好准备。class Graph(object): def __init__(self, maps): self.maps = maps self.nodenum = self.get_nodenum() self.edgenum = self.get_edg

2018-01-18 14:43:06 3682

原创 python实现二叉树

二叉树主要实现分层traverse与前中后遍历。class Node(object): def __init__(self, data): self.data = data self.lchild = None self.rchild = Noneclass BinaryTree(object): def __init__(se

2018-01-17 21:44:18 294

原创 python实现栈与队列

python自带的list可以很方便的操作数据的插入与删除,实现起来还是比较简单的。不过多花费时间,接下来两篇实现二叉树与图。栈的相关操作,list自带的append与pop函数基本就解决了。class Stack(object): def __init__(self): self.item = [] def __len__(self): retu

2018-01-17 20:20:35 212

原创 python实现单链表

每个node节点包含一个val,与next指针指向下个节点。实现基本的链表操作,其中反转链表操作有个小坑,需要注意。reverse过程中设置两个滚动指针pre与cur,初始值为pre=None,cur=self.head,这样反转后能保证head.next=None。错误的方式为设置pre=self.head与cur=self.head.next,这样虽然head之后的节点(不包括head)能

2018-01-17 10:07:37 270

原创 python排序算法-冒泡排序,选择排序,直接插入排序,希尔排序,归并排序,快速排序,堆排序

学习量化也有一段时间了,借csdn博客记录下学习过程的点点滴滴。准备总结的内容:(1)CFA二级知识点;(2)期权期货相关(魏振祥《商品期权》总结);(3)统计学(可汗学院统计学课程总结);(4)数据结构与leetcode的一些实践(python实现);(5)一些简单设计模式的python实现;(6)基于tushare的一些策略实现(均线策略与择股策略等);(7)时间序列分析;接下来几

2018-01-15 21:11:19 388

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除