阅读原文:http://club.jr.jd.com/quant/topic/981170

京东金融量化交流群: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 函数写股票策略相关推荐

  1. python读取txt文件写入失败-Python write 函数写文件失败

    工作中涉及到了内容抓取的需求,用 Python 根据Url抓取对应的Html页面,并存储到本地文件,然后程序内继续将本地文件的路径作为参数,调用Node进行杂质过滤和内容提取.但怪的是在Python执 ...

  2. c语言api函数写病毒,C语言病毒代码,及写病毒简单介绍

    编制病毒的语言 最常见的编制病毒的语言有汇编语言.VB.C 语言等,我们可以来看一看一个有名的病毒论坛上认为学写病 毒要掌握的基础: 1).Win32编程,进程,线程,内存,等等. 2).32位汇编, ...

  3. python股票策略_用Python编写简单股票策略

    尝试用Ruby写股票策略了一段时间,虽然能捉到实时和历史的股票数据,发现根本找不到复杂的函数库可以用,导致无法进行深入的分析.倒是Python有非常丰富的第三方库,由于二者都是面向对象的语言,差别不大 ...

  4. Lumerical Python API学习(七)——可视化几何

    Optimizable Geometry - Python API 来自 https://support.lumerical.com/hc/en-us/articles/360052044913-Op ...

  5. python金字塔函数_Pyramid Python量化学习笔记:API的基本方法,金字塔

    一.init(必须实现) init(context) context对象是全文对象,我也不懂是啥意思,以前学掘金量化也有这个,大概是连接上下文通用的意思吧. 用法是context.xx,整个函数都可以 ...

  6. python绘制函数图像opengl3d_写给 python 程序员的 OpenGL 教程

    原标题:写给 python 程序员的 OpenGL 教程 作者:牧马人 (本文来自作者投稿) 1预备知识 OpenGL 是 Open Graphics Library 的简写,意为"开放式图 ...

  7. python 函数前有一个下划线_【Python】怎么写好一个 Python 函数?

    1. 命名 符合 PEP-8 函数命名书写规范的是小写+下划线或者比较常用的驼峰命名法.内容方面是动宾结合. 举个例子: def setUserName(String userName):pass 推 ...

  8. python测试函数怎么写_Python - 函数

    函数,function,是一段代码的集合体.是Python为了代码最大程度的重用.减小代码冗余而提供的最基本的程序结构. Python是一门面向对象的编程语言,对函数进行分类和封装,由对象实现对方法的 ...

  9. 《看聊天记录都学不会Python到游戏实战?太菜了吧》(7)我用函数写了个特洛伊木马

    本系列文章将会以通俗易懂的对话方式进行教学,对话中将涵盖了新手在学习中的一般问题.此系列将会持续更新,包括别的语言以及实战都将使用对话的方式进行教学,基础编程语言教学适用于零基础小白,之后实战课程也将 ...

最新文章

  1. 【2021年度训练联盟热身训练赛第二场】Soccer Standings(python)
  2. 关节点(atriculation point)算法
  3. 以正确的方式下载和配置 ASP.NET Core 官方源码
  4. linux中vi过滤,vim高级编辑(一)
  5. 微信开发原理 公众平台开发模式的数据交互方式
  6. java读取合并单元格_Java POI常用方法,读取单元格的值,设置单元格格式,合并单元格,获取已合并的单元格,导出至本地等...
  7. python函数类_python函数、类
  8. HTML学习---HTML状态码
  9. MFC文件的读写操作,类的序列化与反序列化,CFile,CFileDialog,CArchive,CStdioFile
  10. 一本关于 Total Commander 的书
  11. 类EMD的“信号分解方法”及MATLAB实现(第一篇)——EEMD
  12. 证件照排版软件_不会用PS做证件照?Word也能排版打印1寸照,一键轻松搞定
  13. html表头纵向,网页表格之---多个表格纵向排列
  14. 【C++学习笔记】迭代器和数组
  15. 未来汽车是什么样?取消后视镜的车型将于2019年面世 | 行业
  16. MATLAB小技巧整理-那些你必须得知道的matlab技巧
  17. 大数据晋级之路(4)Hadoop生态系统体系架构及基本概念
  18. postgres 通过zhparser实现全文搜索功能
  19. ObjectUtils.isEmpty() 和 null 区别
  20. 抽丝剥茧Reactor模式

热门文章

  1. PS 照片,都是精华
  2. OpenFoam | 全面解析sprayFoam | 一、对象parcels属于哪个类
  3. 计算机学风建设新闻稿,第十一届学风建设月动员大会新闻稿_
  4. npm安装出现npm err FetchError Invalid response body while trying to fetch httpsregistry.npmjs.orgvu
  5. Vue 项目如何进行 SEO 优化
  6. Nuxt.js 如何做SEO
  7. 阿里IOT云飞燕平台的使用和感悟。
  8. 将linux的系统时间EDT改为CST
  9. 运行 dist 打包文件:简单得很!!!
  10. 用mac原生的日历和automator,实现定时发微信