金之塔用 Python 获取日内分时均价,每分钟日成交量和每时刻结算价,及交叉作用曲线延伸
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 获取日内分时均价,每分钟日成交量和每时刻结算价,及交叉作用曲线延伸相关推荐
- [转载] 用python 获取当前时间(年-月-日 时:分:秒),并且返回当前时间的下一秒
参考链接: Python获取当前时间 获取当前时间,并且返回当前时间的下一秒 因为存在年-月-日 时:分:秒 考虑到用split的方法做的话非常麻烦 所以引入time和datetime模块 当然 也可 ...
- Python 获取当前时间 年-月-日-时-分-秒
Python Version (使用版本): Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (I ...
- 用python 获取当前时间(年-月-日 时:分:秒),并且返回当前时间的下一秒
获取当前时间,并且返回当前时间的下一秒 因为存在年-月-日 时:分:秒 考虑到用split的方法做的话非常麻烦 所以引入time和datetime模块 当然 也可以改写成输入一个时间 代码实现 imp ...
- python汉诺塔_汉诺塔递归算法/搬金盘的婆罗门 - Python实现
汉诺塔递归算法/搬金盘的婆罗门 - Python实现 版权声明 本文节选自作者本人的图书<Python编程基础及应用>,高等教育出版社.本文可以在互联网上自由转载,但必须:注明出处(作者: ...
- 汉诺塔递归算法/搬金盘的婆罗门 - Python实现
汉诺塔递归算法/搬金盘的婆罗门 - Python实现 本文引用自作者编写的下述图书; 本文允许以个人学习.教学等目的引用.讲授或转载,但需要注明原作者"海洋饼干叔 叔":本文不允许 ...
- python获取期权行情包括k线,tick,greeks分时等数据
先上代码:https://github.com/knotgd/option_data 可以获取期权tick数据.greeks数据.分时数据.k线数据.可以查询指定月份和时间的可交易看涨和看跌期权, 可 ...
- Python获取所有股票代码以及股票历史成交数据分析(二)
接上一篇获取完股票代码信息后,我们打开东方财富网,一通瞎点,进到某股票的K线板块 打开调试界面,XHR中并没有我们想要的数据,从网页数据加载来看应该不是实时资源的肯定有个传输的地方,我们先清空完所有N ...
- Python获取所有股票代码以及股票历史成交数据分析
一 .股票代码获取 最近入坑股市,摸爬滚打,只觉得自己长高了一茬,依旧是韭菜被无情收割呜呜呜呜,因此想了想弄个,所有股票的数据来看下资金动向,类似于龙虎板但是跨度大些. 从网上看了些资源发现并没有自己 ...
- 用python画股票分时图 github_用python的matplotlib和numpy库绘制股票K线均线和成交量的整合效果(含量化验证交易策略代码)...
在用python的matplotlib和numpy库绘制股票K线均线的整合效果(含从网络接口爬取数据和验证交易策略代码)一文里,我讲述了通过爬虫接口得到股票数据并绘制出K线均线图形的方式,在本文里,将 ...
- python获取两个日期间的工作日
python获取两个日期间的工作日 import datetime # 计算两个日期之间的工作日数,非天数. class workDays():def __init__(self, start_dat ...
最新文章
- 深度学习已经彻底改变了制造业的质量控制,但还不够深入
- 使用PHP将HTML + CSS转换为PDF? [关闭]
- Leaflet获取可视范围内4个顶点
- 关于clientWidth、offsetWidth、clientHeight、offsetHeigh
- oppo售后解锁工具_Realme X50/X50 Pro 5G版解锁BL获取完美ROOT权限全套详细刷机
- FLOAT或DOUBLE列与具有数值类型的数值进行比较 问题
- 中数组的合并_【美团面试题】合并两个有序数组
- android ffmpeg 解码,如何在Android用FFmpeg解码图像
- 运算符重载——递增运算符重载
- 22.Silverlight使用WebService调用C++,Delphi编写的DLL文件
- js代码错误监控代码
- ami编码设计流程图_AMI码型变换
- SCTF-RE200破解笔记
- 6--目标检测和边界框和锚框
- Selenium的显示等待和隐式等待
- 索尼在线商城的产品会不会更便宜?
- linux右键没有创建新文件夹,将新建文档添加回Ubuntu 18.04中的右键菜单
- Windows server 2012R2 设置文件共享目录报错:无法连接到C$管理共享已验证文件夹xxx在计算机xxx上是否存在
- win10 系统网络图标只剩下飞行模式,没有wifi和本地连接 解决方法
- Simulink仿真---自带PMSM电机模块介绍