import numpy as np
import pandas as pd
import datetime
首先补全数据,数据获取不全会有麻烦,得出不是正确的价格

获取当日时间:
dt=history_bars(symbolcode,2,‘1d’,‘datetime’,True,frequency==‘1d’)[-1]
day_time=datetime.datetime.strptime(str(int(dt)), “%Y%m%d%H%M%S”)
获取当前时间:
if context.run_info.run_type==“paper_trading”:
currect_time=datetime.datetime.strptime(str(int(dt+get_dynainf (symbolcode,207))), “%Y%m%d%H%M%S”)
else:
currect_time=context.now#history_bars(symbolcode,2, ‘self’, ‘datetime’)[-1]//‘tick’

获取价格及成交量:
#tcv=history_bars_date(symbolcode,begincount,finishtime,frequency,[‘datetime’,‘close’,‘volume’])
tcv=history_bars_date(symbolcode,day_time,currect_time,‘1m’,[‘datetime’,‘close’,‘volume’])

#-----------------------------------
1.获取当前即时日成交量与日内均价:
v_sum=np.array(tcv[:,2]).sum()
if v_sum>0:
v_price=np.dot(tcv[:,1],tcv[:,2])/v_sum

这个方法也可用来快速获取前一日结算价,只要时间改一下就行

if context.run_info.run_type==“paper_trading”:
day_volume=history_bars(symbolcode,1,‘1d’,‘volume’,True,True)[-1]
print(“day volume:%d”%day_volume+“dy volume:%d”%get_dynainf (symbolcode,8)+“v sum:%d”%v_sum)#三个成交量验证一下
print(len(tcv)) #大概算一下当日行情多少分钟

2.用numpy方法获取当日成交量与结算均价的数组:
v_s=np.cumsum(tcv[:,2])#np.sum()
p_s=np.cumsum(tcv[:,1]*tcv[:,2])/v_s
时间格式可以用DatetimeIndex转换:
t_s=pd.to_datetime([str(int(t)) for t in (tcv[:,0])])#.tolist()

print(pd.DataFrame(data=np.stack([v_s,p_s], axis=1),index=t_s,columns=[‘v_s’,‘p_s’]))

3.用循环方法获取当日成交量与结算均价的数组:
temp=0
time_list=[]
volume_sum=[]
volume_price=[]

for tcv_i in tcv:
time_list.append(datetime.datetime.strptime(str(int(tcv_i[0])), “%Y%m%d%H%M%S”))
temp+=tcv_i[2]*tcv_i[1]
if len(volume_sum):
volume_sum.append(tcv_i[2]+volume_sum[-1])
volume_price.append(temp/volume_sum[-1])
else:
volume_sum.append(tcv_i[2])
volume_price.append(tcv_i[1])

print(pd.DataFrame(data=np.stack([volume_sum,volume_price], axis=1),index=pd.to_datetime(time_list),columns=[‘volume_sum’,‘settle_price’]) )

2,3效率比较的话总体感觉3要快2倍以上

最后:假设两个连续的时间序列相交后每个时刻作用都为weight=1,用上面类似的方法:
价格与日内均价每次交叉后,突破后的作用曲线

arr=tcv[:,1]
compare = volume_price#np.zeros(arr.shape)
weight = np.ones(arr.shape)
或者也可以把arr=close-price,compare=np.zeros(arr.shape),类似零轴摆动

keep_count = np.zeros(arr.shape)
per_cv = np.zeros(arr.shape)
temp=0
per_cv[0]= arr[0]*weight[0]

for i in range(1, len(arr)):
if arr[i]==compare[i]:
keep_count[i]=0
elif arr[i]>compare[i]:
keep_count[i]=keep_count[i-1]+1 if keep_count[i-1]>=0 else 0
else:
keep_count[i]=keep_count[i-1]-1 if keep_count[i-1]<=0 else 0
if keep_count[i]==0:
temp=0
per_cv[i]= arr[i]*weight[i]
else:
temp+=arr[i]*weight[i]
per_cv[i]=temp/keep_count[i]

print(keep_count)
print(per_cv)
plot一下

也可以求出价格与ma cross后的的作用曲线,只要compare=ma就行

金之塔用 Python 获取日内分时均价,每分钟日成交量和每时刻结算价,及交叉作用曲线延伸相关推荐

  1. [转载] 用python 获取当前时间(年-月-日 时:分:秒),并且返回当前时间的下一秒

    参考链接: Python获取当前时间 获取当前时间,并且返回当前时间的下一秒 因为存在年-月-日 时:分:秒 考虑到用split的方法做的话非常麻烦 所以引入time和datetime模块 当然 也可 ...

  2. Python 获取当前时间 年-月-日-时-分-秒

    Python Version (使用版本): Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (I ...

  3. 用python 获取当前时间(年-月-日 时:分:秒),并且返回当前时间的下一秒

    获取当前时间,并且返回当前时间的下一秒 因为存在年-月-日 时:分:秒 考虑到用split的方法做的话非常麻烦 所以引入time和datetime模块 当然 也可以改写成输入一个时间 代码实现 imp ...

  4. python汉诺塔_汉诺塔递归算法/搬金盘的婆罗门 - Python实现

    汉诺塔递归算法/搬金盘的婆罗门 - Python实现 版权声明 本文节选自作者本人的图书<Python编程基础及应用>,高等教育出版社.本文可以在互联网上自由转载,但必须:注明出处(作者: ...

  5. 汉诺塔递归算法/搬金盘的婆罗门 - Python实现

    汉诺塔递归算法/搬金盘的婆罗门 - Python实现 本文引用自作者编写的下述图书; 本文允许以个人学习.教学等目的引用.讲授或转载,但需要注明原作者"海洋饼干叔 叔":本文不允许 ...

  6. python获取期权行情包括k线,tick,greeks分时等数据

    先上代码:https://github.com/knotgd/option_data 可以获取期权tick数据.greeks数据.分时数据.k线数据.可以查询指定月份和时间的可交易看涨和看跌期权, 可 ...

  7. Python获取所有股票代码以及股票历史成交数据分析(二)

    接上一篇获取完股票代码信息后,我们打开东方财富网,一通瞎点,进到某股票的K线板块 打开调试界面,XHR中并没有我们想要的数据,从网页数据加载来看应该不是实时资源的肯定有个传输的地方,我们先清空完所有N ...

  8. Python获取所有股票代码以及股票历史成交数据分析

    一 .股票代码获取 最近入坑股市,摸爬滚打,只觉得自己长高了一茬,依旧是韭菜被无情收割呜呜呜呜,因此想了想弄个,所有股票的数据来看下资金动向,类似于龙虎板但是跨度大些. 从网上看了些资源发现并没有自己 ...

  9. 用python画股票分时图 github_用python的matplotlib和numpy库绘制股票K线均线和成交量的整合效果(含量化验证交易策略代码)...

    在用python的matplotlib和numpy库绘制股票K线均线的整合效果(含从网络接口爬取数据和验证交易策略代码)一文里,我讲述了通过爬虫接口得到股票数据并绘制出K线均线图形的方式,在本文里,将 ...

  10. python获取两个日期间的工作日

    python获取两个日期间的工作日 import datetime # 计算两个日期之间的工作日数,非天数. class workDays():def __init__(self, start_dat ...

最新文章

  1. 【转载】java中泛型使用详解
  2. Flume-NG源码阅读之AvroSink
  3. c# 调用c库dll ,char*转string的解决办法
  4. ASP.NET Core分布式项目实战(Consent Controller Get请求逻辑实现)--学习笔记
  5. 腾讯云cloudlite认证_【腾讯云】考个证...大数据开发工程师认证
  6. modprobe: FATAL: Module xxx.ko not found in directory /lib/modules/$(uname -r)
  7. mysql函数未定义_未定义的函数,MYSQL错误
  8. 绝地求生2月19服务器维护,绝地求生2月19日停机维护几点结束_2020绝地求生2月19日开服时间介绍_求知软件网...
  9. 教大家一个免费复制粘贴百度文库文字的方法
  10. 矩阵如何运算?——线性代数
  11. 一篇博文搞定英文常见单词后缀(完全版)
  12. 2021年深圳市坪山区贴息贴保资助申请条件及材料,补贴100万元
  13. C#高级编程面试考题
  14. JVM核心内容详细讲解
  15. 安卓设置keychain_简单实现KeyChain实例
  16. Apache Calcite 实现方言转换
  17. 玩转小程序下篇--履带式行走
  18. 个人对String,StringBuffer,StringBuilder的一些理解
  19. 菜鸟教程之工具使用——IDEA 查看子类(实现类)类图
  20. mosquitto支持ssl/tls双向认证

热门文章

  1. PS教程:如何拼图调色出高大上的作品
  2. windows安装时提醒“缺少所需要的CD/DVD驱动器设备驱动程序”的解决办法
  3. 4、内网端口转发及穿透(合集)
  4. 【笔记整理】网络攻防技术
  5. H3BPM实例分享——金额规则大写
  6. POJ - Art Gallery(半平面交)
  7. Linux下载HTTP文件
  8. 尚学堂视频笔记二:面向对象深入
  9. 转本计算机知识普及软件,江苏专转本新政策的解读
  10. A. Vasya the Hipster