通达信zig函数的python实现

代码


# coding: utf-8
"""
Created on Sat Jan 05 18:53:39 2019
http://www.pianshen.com/article/363258879/
@author: duanqs
"""import numpy as np
import tushare as tsimport matplotlib.pyplot as pltZIG_STATE_START = 0
ZIG_STATE_RISE = 1
ZIG_STATE_FALL = 2def zig(x=0.055):#ts.set_token("此处放入tushare的token!!!")#pro = ts.pro_api()#df = pro.daily(ts_code="603297.SH")# print(list(df["close"]))# df = ts.get_hist_data('000069')# df = df[::-1]# 获取股票交易数据的Tushare的使用方法 - 蜗牛爬行ing - 博客园  # https://www.cnblogs.com/DreamRJF/p/8660630.html# posted on 2018-03-28 15:18 蜗牛爬行ing #df = ts.get_k_data('000069')# df = ts.get_k_data('600535')# df = ts.get_k_data('512040')  # 富国国信价值 etf 基金# df = ts.get_h_data('000051', index=True)   # 上证180等权指数 index 参数必须指定为Truedf = ts.get_k_data('000051', index=True, start='2011-01-01')   # 上证180等权指数 index 参数必须指定为True#df = ts.get_h_data('399106', index=True)   # index 参数必须指定为True#df = ts.get_h_data('399106', index=True) #深圳综合指数#df = ts.get_k_data('399106', index=True) #深圳综合指数# df = ts.get_k_data('931052', index=True) # 中证国信价值指数, 不支持的指数# df = ts.get_k_data('hs300')   # 支持主要的几个股票指数的历史行情# 股票代码,即6位数字代码,或者指数代码# (sh=上证指数 sz=深圳成指 hs300=沪深300指数 # sz50=上证50 zxb=中小板 cyb=创业板)#df = df.reset_index(drop=True)# df = df.iloc[-100:]#x = 0.055k = df["close"]#d = df["trade_date"]d = df['date']# d = df.index#print(k)#print(d)# 循环前的变量初始化# 端点 候选点 扫描点 端点列表 拐点线列表 趋势状态peer_i = 0candidate_i = Nonescan_i = 0peers = [0]z = np.zeros(len(k))state = ZIG_STATE_STARTwhile True:#print(peers)scan_i += 1if scan_i == len(k) - 1:# 扫描到尾部if candidate_i is None:peer_i = scan_ipeers.append(peer_i)else:if state == ZIG_STATE_RISE:if k[scan_i] >= k[candidate_i]:peer_i = scan_ipeers.append(peer_i)else:peer_i = candidate_ipeers.append(peer_i)peer_i = scan_ipeers.append(peer_i)elif state == ZIG_STATE_FALL:if k[scan_i] <= k[candidate_i]:peer_i = scan_ipeers.append(peer_i)else:peer_i = candidate_ipeers.append(peer_i)peer_i = scan_ipeers.append(peer_i)breakif state == ZIG_STATE_START:if k[scan_i] >= k[peer_i] * (1 + x):candidate_i = scan_istate = ZIG_STATE_RISEelif k[scan_i] <= k[peer_i] * (1 - x):candidate_i = scan_istate = ZIG_STATE_FALLelif state == ZIG_STATE_RISE:if k[scan_i] >= k[candidate_i]:candidate_i = scan_ielif k[scan_i] <= k[candidate_i]*(1-x):peer_i = candidate_ipeers.append(peer_i)state = ZIG_STATE_FALLcandidate_i = scan_ielif state == ZIG_STATE_FALL:if k[scan_i] <= k[candidate_i]:candidate_i = scan_ielif k[scan_i] >= k[candidate_i]*(1+x):peer_i = candidate_ipeers.append(peer_i)state = ZIG_STATE_RISEcandidate_i = scan_i#线性插值, 计算出zig的值            for i in range(len(peers) - 1):peer_start_i = peers[i]peer_end_i = peers[i+1]start_value = k[peer_start_i]end_value = k[peer_end_i]a = (end_value - start_value)/(peer_end_i - peer_start_i)# 斜率for j in range(peer_end_i - peer_start_i +1):z[j + peer_start_i] = start_value + a*jprint(u'...转向点的阀值、个数、位置和日期...')        print(x, len(peers))print(peers)dates = [d[i] for i in peers]print(dates)#print([k[i] for i in peers])#print(list(k))#print(list(z))plt.plot(z)zig(x=0.055)

结果

...转向点的阀值、个数、位置和日期...
(0.055, 71)
[0, 18, 38, 101, 111, 153, 196, 208, 230, 313, 321, 331, 344, 374, 420, 459, 488, 513, 576, 598, 613, 645, 660, 675, 697, 744, 887, 888, 893, 902, 952, 959, 973, 974, 985, 995, 996, 1002, 1005, 1007, 1013, 1016, 1030, 1037, 1045, 1049, 1085, 1097, 1114, 1140, 1154, 1157, 1189, 1220, 1342, 1364, 1429, 1449, 1575, 1607, 1628, 1638, 1654, 1732, 1745, 1784, 1792, 1801, 1823, 1853, 1855]
[u'2011-05-24', u'2011-06-20', u'2011-07-18', u'2011-10-21', u'2011-11-04', u'2012-01-05', u'2012-03-13', u'2012-03-29', u'2012-05-07', u'2012-08-31', u'2012-09-12', u'2012-09-26', u'2012-10-22', u'2012-12-03', u'2013-02-08', u'2013-04-15', u'2013-05-29', u'2013-07-08', u'2013-10-14', u'2013-11-13', u'2013-12-04', u'2014-01-20', u'2014-02-17', u'2014-03-10', u'2014-04-10', u'2014-06-19', u'2015-01-16', u'2015-01-19', u'2015-01-26', u'2015-02-06', u'2015-04-27', u'2015-05-07', u'2015-05-27', u'2015-05-28', u'2015-06-12', u'2015-06-29', u'2015-06-30', u'2015-07-08', u'2015-07-13', u'2015-07-15', u'2015-07-23', u'2015-07-28', u'2015-08-17', u'2015-08-26', u'2015-09-09', u'2015-09-15', u'2015-11-11', u'2015-11-27', u'2015-12-22', u'2016-01-28', u'2016-02-24', u'2016-02-29', u'2016-04-14', u'2016-05-30', u'2016-11-29', u'2016-12-29', u'2017-04-11', u'2017-05-10', u'2017-11-13', u'2017-12-27', u'2018-01-26', u'2018-02-09', u'2018-03-12', u'2018-07-05', u'2018-07-24', u'2018-09-17', u'2018-09-28', u'2018-10-18', u'2018-11-19', u'2019-01-02', u'2019-01-04']

图片:

转载于:https://www.cnblogs.com/duan-qs/p/10226649.html

通达信zig函数的python实现相关推荐

  1. python 通达信公式函数_通达信zig函数的python实现

    通达信zig函数的python实现 代码 # coding: utf-8 """ Created on Sat Jan 05 18:53:39 2019 http://w ...

  2. python调用通达信函数大全_通达信zig函数的python实现

    通达信zig函数的python实现 代码 # coding: utf-8 """ Created on Sat Jan 05 18:53:39 2019 http://w ...

  3. 什么是通达信接口函数

    什么是通达信接口函数,主要是用于通过策略接口模块提供一组在本地运行用户编写策略的能力,基于策略接口模块实现量化功能.UI组件模块,通过UI组件模块能够直接使用UI组件中的界面.

  4. c语言cross函数什么意思,通达信cross函数用法,通达信 filter函数 返回什么值

    Q1:通达信 filter函数 返回什么值 结果:返回一个逻辑真值,当逻辑条件为真时,如果在N周期内已真过,将当前真值置为0,即过滤. 下面网页上有详细讲解. http://www.chcj.net/ ...

  5. 通达信财务函数与股票公式进阶篇[转]

    通达信财务函数与股票公式进阶篇[转] http://blog.sina.com.cn/s/blog_676348b301018f6v.html 通达信财务函数与股票公式进阶篇[转] FINANCE(1 ...

  6. 大智慧、通达信winner函数python代码实现

    大智慧.通达信软件,公式中有一个winner函数,函数的作用是计算收盘获利比率.即计算按照目前收盘价,计算有多少比例持仓是盈利的.要计算获利比率,首先得计算筹码分布,就是持仓价格分布.由于无法知道真实 ...

  7. python 通达信公式函数,481009_易基策略二号

    481009_易基策略二号 所以我们在分时图走势变化的情况下,当个股经常性的出现尾盘的拉升的情况,特别是尾盘拉升后,下一个交易日还出现盘中拉升后股价继续下跌的情况,基本上可以断定是庄家出货造成的,而在 ...

  8. python调用通达信公式_对照通达信一些指标的Python实现

    行情软件里习惯了通达信的简介,虽然很多时候还是要依赖大智慧,但平时看图形基本都是用通达信.因此在有时候做数据分析的时候,不可避免的需要再次的实现一些指标功能,所以在Python里整理了一下,写了部分的 ...

  9. 通达信公式改写成python代码的最简实现方式

    MyTT MyTT是您量化工具箱里的瑞士军刀,精炼而高效,它将通达信,同花顺,文华麦语言等指标公式indicators,最简移植到Python中,核心库单个文件,仅百行代码,实现和转换同花顺通达信所有 ...

  10. 如何把通达信公式变成python_通达信公式-主力雷达Python化

    1.通达信代码: ```python LC赋值:1日前的收盘价 df['lc']=df['close'].shift(1) RSI1赋值:收盘价-LC和0的较大值的6日[1日权重]移动平均/收盘价-L ...

最新文章

  1. 中国SaaS死或生之二:ERP两大邪术,尽出歪门邪路
  2. 深圳内推 | 粤港澳大湾区数字经济研究院招聘NLP算法研究员(可实习)
  3. 菜鸟学SSH(八)——Hibernate对象的三种状态
  4. mysql 多行唯一_mysql – 具有唯一约束的原子多行更新
  5. 手机内存8+128与6+256价格相同,你会选哪个?
  6. 青蛙学Linux—CentOS 6.10的安装
  7. 不能使用泛型的形参创建对象_泛型就这么简单
  8. visio破解版安装2013
  9. 这种文件别打开, 大小不足1KB, 却可以让你电脑瘫痪
  10. bmfont使用心得
  11. vue 导出excel
  12. 多路测温系统C51语言,51单片机多路DS18B20温度测量程序
  13. 微信 qq浏览器服务器,QQ浏览器与微信团队合作推出“微信电脑版”
  14. 勾股定理计算机语言,勾股定理公式计算器
  15. 爬虫项目十五:你了解你的QQ好友吗?教你用Python采集QQ好友数据
  16. java中小数后加f_在 Java 中,小数默认为 ,如果要指定 类型请在小数后加 F/f 。_学小易找答案...
  17. qt 判断ctrl键被按下_直播 | 当世界被按下暂停键,幸有阅读可慰藉
  18. 像素颜色和颜色向量相加相乘的理解
  19. C++ 文件的读写(fin fout)
  20. 硬盘分区按照1G=1024M换算分区后不是整数(想分10G,分区时填入大小102400M.但是分区完毕显示却是99.9G或近似值9.XXG,而不是10G整)。本篇为这个问题的原理分析和解决办法

热门文章

  1. 网络工程师Day9--GRE配置
  2. H3C IS-IS实验
  3. MPLS virtual private network OptionA实验(华为设备)
  4. ACL技术原理和实验(华为设备)
  5. OSPF高级特性(华为设备)
  6. 开发Shell脚本解决DOS安全Linux服务器生产案例
  7. Java HashSet和LinkedHashSet的用法
  8. [GDAL]3.影像金字塔构建
  9. fopen()函数的文件模式
  10. 转载:cisco voip转码设置