如何使用Python api 函数写股票策略
京东金融量化交流群:417082141
写策略需要了解的语法包括两方面,一方面是语言本身的语法(包括相关库),另一方面是量化平台提供的api。量化平台提供的api帮助文件里都有了,大家可以很方便的在这个网址查看:京东量化平台(quant.jd.com)-全方位量化策略开发平台。量化交易、量化投资、云端在线编程、策略历史回测、实盘模拟、量化社区。本文主要介绍写策略经常用到的库(datetime、numpy、pandas)中的一些函数。
1、 利用datetime库做日期、时间操作
利用context.now可以获得当前策略运行的时间,返回的是datetime.datetime格式。datetime.datetime格式可以很方便的进行日期、时间操作。比如timedelta可以很方便的在日期上做日、小时、分钟、秒的运算。例如,需要策略运行时间1天前的时间,可以这样写:context.now+datetime.timedelta(days=-1),返回的便是一天前的时间。
2、 利用pandas做数据变频。
量化平台一般只提供分钟或者日频的数据,如果我们需要周、月的数据怎么办呢?pandas的resample函数可以很好的解决这个问题。举个例子,假如我们需要沪深300每月最后一个交易日的收盘价,我们可以这样写:
d= get_history(100,'1d','close')[‘000300.SH’].resample(‘m’,how=’last’)
更多的关于pandas的内容,可以参考pandas的官网(链接:pandas: powerful Python data analysis toolkit)以及“利用python进行数据分析”这本书(链接: 《利用Python进行数据分析》(Wes McKinney)【摘要 书评 试读】- 京东图书
)。
3、利用set格式选取交集
有的时候我们利用不同标准会得到不同的股票池,如果想得到不同股票池的共同股票,那么可以使用set格式。Set格式可以很方便的进行交集、并集等集合运算。这里举一个例子,比如我们通过设置一定的财务数据条件会得到一个dataframe,记作df。df的列为股票代码,但可能并不都是我们所需的,比如我们只想得到沪深300的成份股,那么可以这样操作:1、s=get_index_constituents(‘000300.SH’) 得到沪深300的成份股。2、z=set(s) & set(df.columns) 得到交集z。3、得到的z是set格式,需要转换为list格式,可以这样操作 zl=list(z)。4、利用pandas 函数 筛选出我们需要的个股 d=df.loc[:zl] d即位我们所需要的数据。
更多的关于set格式的使用方法,可以参考:Python 集合set()添加删除、交集、并集、集合操作详解
4、 利用try…except跳过出错部分代码
有时候我们会遇到一些不是很重要的问题,但是由于遇到这类问题会报错,从而影响程序执行,这时我们希望的是忽略这些错误就可以了。下面举一个例子说明try…except 的用法。
比如:我们用p表示一只股票某一时刻的价格,v表示这只股票的成交量,我们想计算p/v,但是有可能该股票没有成交量(停牌,或者涨跌停了)这时直接计算就会出错,程序会跳出。这是我们可以try…except做如下处理:
try:d=p/v
except:d=0
意思就是如果计算p/v发生错误,那么就将d赋值为0
5、 利用pickle模块保存变量
有时候我们需要将当前工作空间的变量保存下来,这时可以使用pickle来解决,举个例子,假如目前工作空间有a,b,c三个变量,我们可以进行如下操作:1、f=open(‘file.pkl’,’wb’) 建立一个文件链接。2、import pickle;pickle.dump([a,b,c],f) 这样就可以保存了。读取时1、f=open(‘file.pkl’,’rb’) 2、import pickle;z=pickle.load([a,b,c],f) 这样将读取的变量都保存到了z变量中,通过z[0],z[1],z[2]可以获取a,b,c变量。
阅读原文:http://club.jr.jd.com/quant/topic/981170
如何使用Python api 函数写股票策略相关推荐
- python读取txt文件写入失败-Python write 函数写文件失败
工作中涉及到了内容抓取的需求,用 Python 根据Url抓取对应的Html页面,并存储到本地文件,然后程序内继续将本地文件的路径作为参数,调用Node进行杂质过滤和内容提取.但怪的是在Python执 ...
- c语言api函数写病毒,C语言病毒代码,及写病毒简单介绍
编制病毒的语言 最常见的编制病毒的语言有汇编语言.VB.C 语言等,我们可以来看一看一个有名的病毒论坛上认为学写病 毒要掌握的基础: 1).Win32编程,进程,线程,内存,等等. 2).32位汇编, ...
- python股票策略_用Python编写简单股票策略
尝试用Ruby写股票策略了一段时间,虽然能捉到实时和历史的股票数据,发现根本找不到复杂的函数库可以用,导致无法进行深入的分析.倒是Python有非常丰富的第三方库,由于二者都是面向对象的语言,差别不大 ...
- Lumerical Python API学习(七)——可视化几何
Optimizable Geometry - Python API 来自 https://support.lumerical.com/hc/en-us/articles/360052044913-Op ...
- python金字塔函数_Pyramid Python量化学习笔记:API的基本方法,金字塔
一.init(必须实现) init(context) context对象是全文对象,我也不懂是啥意思,以前学掘金量化也有这个,大概是连接上下文通用的意思吧. 用法是context.xx,整个函数都可以 ...
- python绘制函数图像opengl3d_写给 python 程序员的 OpenGL 教程
原标题:写给 python 程序员的 OpenGL 教程 作者:牧马人 (本文来自作者投稿) 1预备知识 OpenGL 是 Open Graphics Library 的简写,意为"开放式图 ...
- python 函数前有一个下划线_【Python】怎么写好一个 Python 函数?
1. 命名 符合 PEP-8 函数命名书写规范的是小写+下划线或者比较常用的驼峰命名法.内容方面是动宾结合. 举个例子: def setUserName(String userName):pass 推 ...
- python测试函数怎么写_Python - 函数
函数,function,是一段代码的集合体.是Python为了代码最大程度的重用.减小代码冗余而提供的最基本的程序结构. Python是一门面向对象的编程语言,对函数进行分类和封装,由对象实现对方法的 ...
- 《看聊天记录都学不会Python到游戏实战?太菜了吧》(7)我用函数写了个特洛伊木马
本系列文章将会以通俗易懂的对话方式进行教学,对话中将涵盖了新手在学习中的一般问题.此系列将会持续更新,包括别的语言以及实战都将使用对话的方式进行教学,基础编程语言教学适用于零基础小白,之后实战课程也将 ...
最新文章
- 【2021年度训练联盟热身训练赛第二场】Soccer Standings(python)
- 关节点(atriculation point)算法
- 以正确的方式下载和配置 ASP.NET Core 官方源码
- linux中vi过滤,vim高级编辑(一)
- 微信开发原理 公众平台开发模式的数据交互方式
- java读取合并单元格_Java POI常用方法,读取单元格的值,设置单元格格式,合并单元格,获取已合并的单元格,导出至本地等...
- python函数类_python函数、类
- HTML学习---HTML状态码
- MFC文件的读写操作,类的序列化与反序列化,CFile,CFileDialog,CArchive,CStdioFile
- 一本关于 Total Commander 的书
- 类EMD的“信号分解方法”及MATLAB实现(第一篇)——EEMD
- 证件照排版软件_不会用PS做证件照?Word也能排版打印1寸照,一键轻松搞定
- html表头纵向,网页表格之---多个表格纵向排列
- 【C++学习笔记】迭代器和数组
- 未来汽车是什么样?取消后视镜的车型将于2019年面世 | 行业
- MATLAB小技巧整理-那些你必须得知道的matlab技巧
- 大数据晋级之路(4)Hadoop生态系统体系架构及基本概念
- postgres 通过zhparser实现全文搜索功能
- ObjectUtils.isEmpty() 和 null 区别
- 抽丝剥茧Reactor模式
热门文章
- PS 照片,都是精华
- OpenFoam | 全面解析sprayFoam | 一、对象parcels属于哪个类
- 计算机学风建设新闻稿,第十一届学风建设月动员大会新闻稿_
- npm安装出现npm err FetchError Invalid response body while trying to fetch httpsregistry.npmjs.orgvu
- Vue 项目如何进行 SEO 优化
- Nuxt.js 如何做SEO
- 阿里IOT云飞燕平台的使用和感悟。
- 将linux的系统时间EDT改为CST
- 运行 dist 打包文件:简单得很!!!
- 用mac原生的日历和automator,实现定时发微信