如何使用Python api vb api函数使用写股票策略

如何使用Python api 函数 - 知乎专栏
{"debug":false,"apiRoot":"","paySDK":"/api/js","wechatConfigAPI":"/api/wechat/jssdkconfig","name":"production","instance":"column","tokens":{"X-XSRF-TOKEN":null,"X-UDID":null,"Authorization":"oauth c3cef7c66aa9e6a1e3160e20"}}
{"database":{"Post":{"":{"title":"如何使用Python api 函数","author":"jing-dong-liang-hua-ping-tai","content":"阅读原文:京东金融量化交流群:写策略需要了解的语法包括两方面,一方面是语言本身的语法(包括相关库),另一方面是量化平台提供的api。量化平台提供的api帮助文件里都有了,大家可以很方便的在这个网址查看:。本文主要介绍写策略经常用到的库(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的官网(链接:)以及“利用python进行数据分析”这本书(链接: )。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格式的使用方法,可以参考:4、 利用try…except跳过出错部分代码有时候我们会遇到一些不是很重要的问题,但是由于遇到这类问题会报错,从而影响程序执行,这时我们希望的是忽略这些错误就可以了。下面举一个例子说明try…except 的用法。比如:我们用p表示一只股票某一时刻的价格,v表示这只股票的成交量,我们想计算p/v,但是有可能该股票没有成交量(停牌,或者涨跌停了)这时直接计算就会出错,程序会跳出。这是我们可以try…except做如下处理:try:d=p/vexcept:d=0意思就是如果计算p/v发生错误,那么就将d赋值为05、 利用pickle模块保存变量有时候我们需要将当前工作空间的变量保存下来,这时可以使用pickle来解决,举个例子,假如目前工作空间有a,b,c三个变量,我们可以进行如下操作:1、f=open(‘file.pkl’,’wb’) 建立一个文件链接。2、pickle.dump([a,b,c],f) 这样就可以保存了。读取时1、f=open(‘file.pkl’,’rb’) 2、z=pickle.load([a,b,c],f) 这样将读取的变量都保存到了z变量中,通过z[0],z[1],z[2]可以获取a,b,c变量。阅读原文:","updated":"T11:20:44.000Z","canComment":false,"commentPermission":"anyone","commentCount":0,"collapsedCount":0,"likeCount":0,"state":"published","isLiked":false,"slug":"","isTitleImageFullScreen":false,"rating":"none","titleImage":"","links":{"comments":"/api/posts//comments"},"reviewers":[],"topics":[{"url":"/topic/","id":"","name":"Python 框架"},{"url":"/topic/","id":"","name":"量化交易"},{"url":"/topic/","id":"","name":"宽客 (Quant)"}],"adminClosedComment":false,"titleImageSize":{"width":0,"height":0},"href":"/api/posts/","excerptTitle":"","tipjarState":"closed","annotationAction":[],"sourceUrl":"","pageCommentsCount":0,"hasPublishingDraft":false,"snapshotUrl":"","publishedTime":"T19:20:44+08:00","url":"/p/","lastestLikers":[],"summary":"阅读原文:京东金融量化交流群: 写策略需要了解的语法包括两方面,一方面是语言本身的语法(包括相关库),另一方面是量化平台提供的api。量化平台提供的api帮助文件里都有了,大家可以很方便的在这个网址查看:","reviewingCommentsCount":0,"meta":{"previous":null,"next":null},"annotationDetail":null,"commentsCount":0,"likesCount":0,"FULLINFO":true}},"User":{"jing-dong-liang-hua-ping-tai":{"isFollowed":false,"name":"JD-Quant","headline":"","avatarUrl":"/v2-5f073c2f1f866d9f01c1645761ddc5a8_s.jpg","isFollowing":false,"type":"people","slug":"jing-dong-liang-hua-ping-tai","bio":"京东量化平台,为投资者提供数据支持、策略开发到策略输出的量化生态服务。","hash":"c9ba462bd49ad53eb50066","uid":189100,"isOrg":false,"description":"","profileUrl":"/people/jing-dong-liang-hua-ping-tai","avatar":{"id":"v2-5f073c2f1f866d9f01c1645761ddc5a8","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false,"badge":{"identity":null,"bestAnswerer":null}}},"Comment":{},"favlists":{}},"me":{},"global":{},"columns":{"next":{}},"columnPosts":{},"columnSettings":{"colomnAuthor":[],"uploadAvatarDetails":"","contributeRequests":[],"contributeRequestsTotalCount":0,"inviteAuthor":""},"postComments":{},"postReviewComments":{"comments":[],"newComments":[],"hasMore":true},"favlistsByUser":{},"favlistRelations":{},"promotions":{},"switches":{"couldAddVideo":false},"draft":{"titleImage":"","titleImageSize":{},"isTitleImageFullScreen":false,"canTitleImageFullScreen":false,"title":"","titleImageUploading":false,"error":"","content":"","draftLoading":false,"globalLoading":false,"pendingVideo":{"resource":null,"error":null}},"drafts":{"draftsList":[],"next":{}},"config":{"userNotBindPhoneTipString":{}},"recommendPosts":{"articleRecommendations":[],"columnRecommendations":[]},"env":{"isAppView":false,"appViewConfig":{"content_padding_top":128,"content_padding_bottom":56,"content_padding_left":16,"content_padding_right":16,"title_font_size":22,"body_font_size":16,"is_dark_theme":false,"can_auto_load_image":true,"app_info":"OS=iOS"},"isApp":false},"sys":{}}阅读原文:
京东金融量化交流群:
写策略需要了解的语法包括两方面,一方面是语言本身的语法(包括相关库),另一方面是量化平台提供的api。量化平台提供的api帮助文件里都有了,大家可以很方便的在这个网址查看:。本文主要介绍写策略经常用到的库(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的官网(链接:)以及“利用python进行数据分析”这本书(链接:
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格式的使用方法,可以参考:
4、 利用try…except跳过出错部分代码
有时候我们会遇到一些不是很重要的问题,但是由于遇到这类问题会报错,从而影响程序执行,这时我们希望的是忽略这些错误就可以了。下面举一个例子说明try…except 的用法。
比如:我们用p表示一只股票某一时刻的价格,v表示这只股票的成交量,我们想计算p/v,但是有可能该股票没有成交量(停牌,或者涨跌停了)这时直接计算就会出错,程序会跳出。这是我们可以try…except做如下处理:
except:d=0
意思就是如果计算p/v发生错误,那么就将d赋值为0
5、 利用pickle模块保存变量
有时候我们需要将当前工作空间的变量保存下来,这时可以使用pickle来解决,举个例子,假如目前工作空间有a,b,c三个变量,我们可以进行如下操作:1、f=open(‘file.pkl’,’wb’) 建立一个文件链接。2、pickle.dump([a,b,c],f) 这样就可以保存了。读取时1、f=open(‘file.pkl’,’rb’) 2、z=pickle.load([a,b,c],f) 这样将读取的变量都保存到了z变量中,通过z[0],z[1],z[2]可以获取a,b,c变量。
阅读原文:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:43324次
排名:千里之外
原创:35篇
转载:111篇
(5)(17)(21)(21)(19)(22)(16)(12)(13)基于Python的词典api调用代码实例_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于Python的词典api调用代码实例
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢用 Python 写了个简单的股票量化交易框架
大奖章|量化投资|量化交易平台|交易接口|金融数据
用 Python 写了个简单的股票量化交易框架
73人已关注
集成了以前写的 [easytrader]() 和 [easyquotation](https://)
[Github 地址]() 欢迎 `star` 和 `fork`
因为行情的获取用到了 `async / await` 所以暂时只支持 `Python3.5`
支持 佣金宝 和 华泰 两家券商的自动登录和买卖。
使用的是新浪的免费行情,大概一秒钟推送一次 所有的 3000 多只股票的实时数据。
也可以自己引入 tushare 这个免费的财经信息获取包 或者 引入 wind
其中的事件驱动引擎 和 策略模板 是模仿的 vnpy 的框架
编写非常简单,因为功能比较有限。可以查看下面的 `策略_Demo1`
# 引入策略模板
from easyquant import StrategyTemplate
class Strategy(StrategyTemplate):
&& &# 主要实现下面这个 `strategy` 函数就可以了
& & def strategy(self, event):
& & & & &&&:param event event.data 为所有股票的信息,结构如下
& & & & {';:
& & & & {'ask1': '0.493',
& & & & &'ask1_volume': '75500',
& & & & &'ask2': '0.494',
& & & & &'ask2_volume': ';,
& & & & &'ask3': '0.495',
& & & & &'ask3_volume': ';,
& & & & &'ask4': '0.496',
& & & & &'ask4_volume': ';,
& & & & &'ask5': '0.497',
& & & & &'ask5_volume': ';,
& & & & &'bid1': '0.492',
& & & & &'bid1_volume': ';,
& & & & &'bid2': '0.491',
& & & & &'bid2_volume': ';,
& & & & &'bid3': '0.490',
& & & & &'bid3_volume': ';,
& & & & &'bid4': '0.489',
& & & & &'bid4_volume': ';,
& & & & &'bid5': '0.488',
& & & & &'bid5_volume': ';,
& & & & &'buy': '0.492',
& & & & &'close': '0.499',
& & & & &'high': '0.494',
& & & & &'low': '0.489',
& & & & &'name': '华宝油气',
& & & & &'now': '0.493',
& & & & &'open': '0.490',
& & & & &'sell': '0.493',
& & & & &'turnover': '',
& & & & &'volume': '1'}}
& & & & &&&
& & & & # 使用 self.user 来操作账户,使用 self.user.buy() / self.user.sell() 来买卖,用法同 easytrader 用法
& & & & # 使用 ('message') 来打印你所需要的 log
& & & & print('\n\n策略1触发')
& & & & print('行情数据: 万科价格: ', event.data[';])
& & & & print('检查持仓')
& & & & print(self.user.balance)
& & & & print('\n')
运行之后基本是下面这样
启动主引擎
[ 14:05:36.649599] INFO: main_engine.py: 加载策略: 策略 1_Demo
[ 14:05:36.650250] INFO: main_engine.py: 加载策略: 策略 2_Demo
[ 14:05:36.650713] INFO: main_engine.py: 加载策略完毕
触发每秒定时计时器
策略 1 触发
行情数据: 万科价格: &{'ask4': 0.0, 'ask1': 0.0, 'bid2_volume': 0, 'bid3': 0.0, 'bid5_volume': 0, 'name': '万 &科A', 'ask4_volume': 0, 'close': 24.43, 'volume': 0.0, 'ask3_volume': 0, 'bid5': 0.0, 'bid1': 0.0, 'ask2': 0.0, 'bid4_volume': 0, 'high': 0.0, 'ask5': 0.0, 'bid4': 0.0, 'ask5_volume': 0, 'turnover': 0, 'ask2_volume': 0, 'sell': 0.0, 'open': 0.0, 'bid3_volume': 0, 'bid2': 0.0, 'bid1_volume': 0, 'buy': 0.0, 'ask3': 0.0, 'low': 0.0, 'now': 0.0, 'ask1_volume': 0}
[{'asset_balance': 2758.98, 'market_value': 2740.9, 'enable_balance': 18.08, 'current_balance': 18.08, 'money_name': '人民币', 'fetch_balance': 18.08, 'money_type': '0'}]
策略 2 触发
行情数据: 华宝油气 {'ask4': 0.5, 'ask1': 0.497, 'bid2_volume': 4594100, 'bid3': 0.494, 'bid5_volume': 851300, 'name': '华宝油气', 'ask4_volume': , 'close': 0.5, 'volume': 9, 'ask3_volume': , 'bid5': 0.492, 'bid1': 0.496, 'ask2': 0.498, 'bid4_volume': 313700, 'high': 0.501, 'ask5': 0.501, 'bid4': 0.493, 'ask5_volume': , 'turnover': , 'ask2_volume': , 'sell': 0.497, 'open': 0.5, 'bid3_volume': 997500, 'bid2': 0.495, 'bid1_volume': 5507952, 'buy': 0.496, 'ask3': 0.499, 'low': 0.495, 'now': 0.497, 'ask1_volume': }
[{'asset_balance': 2758.98, 'market_value': 2740.9, 'enable_balance': 18.08, 'current_balance': 18.08, 'money_name': '人民币', 'fetch_balance': 18.08, 'money_type': '0'}]
浏览数(27230)
这个是群主@食灯鬼&发布的么,点赞一个,好东西居然没人关注,大奖章现在人气不行了

我要回帖

更多关于 api网关 分流策略 的文章

 

随机推荐