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. 深度学习已经彻底改变了制造业的质量控制,但还不够深入
  2. 使用PHP将HTML + CSS转换为PDF? [关闭]
  3. Leaflet获取可视范围内4个顶点
  4. 关于clientWidth、offsetWidth、clientHeight、offsetHeigh
  5. oppo售后解锁工具_Realme X50/X50 Pro 5G版解锁BL获取完美ROOT权限全套详细刷机
  6. FLOAT或DOUBLE列与具有数值类型的数值进行比较 问题
  7. 中数组的合并_【美团面试题】合并两个有序数组
  8. android ffmpeg 解码,如何在Android用FFmpeg解码图像
  9. 运算符重载——递增运算符重载
  10. 22.Silverlight使用WebService调用C++,Delphi编写的DLL文件
  11. js代码错误监控代码
  12. ami编码设计流程图_AMI码型变换
  13. SCTF-RE200破解笔记
  14. 6--目标检测和边界框和锚框
  15. Selenium的显示等待和隐式等待
  16. 索尼在线商城的产品会不会更便宜?
  17. linux右键没有创建新文件夹,将新建文档添加回Ubuntu 18.04中的右键菜单
  18. Windows server 2012R2 设置文件共享目录报错:无法连接到C$管理共享已验证文件夹xxx在计算机xxx上是否存在
  19. win10 系统网络图标只剩下飞行模式,没有wifi和本地连接 解决方法
  20. Simulink仿真---自带PMSM电机模块介绍

热门文章

  1. B站视频下载器,可以下载到电脑后保存,畅享视频下载
  2. 二维码在Access中的使用
  3. mysql 联合主键 null_MySQL联合主键的索引使用
  4. 从《如何在只有一份错误的协议的情况下,做好网络编程》论人品的重要性
  5. 揭秘交通大脑——BATJ技术争夺战,滴滴与高德的AI新版图
  6. 修改bounds属性后的效果
  7. 拔河比赛matlab编程,拔河比赛.doc
  8. 如何避免PayPal、Fb、谷歌账户被封,又如何解封?
  9. C#中获取当前时间,及处理时间(对时间进行加减)
  10. 外国某高校的中国歷史科目期末考试题