通达信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 ts

import matplotlib.pyplot as plt

ZIG_STATE_START = 0

ZIG_STATE_RISE = 1

ZIG_STATE_FALL = 2

def 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 参数必须指定为True

df = 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.055

k = df["close"]

#d = df["trade_date"]

d = df['date']

# d = df.index

#print(k)

#print(d)

# 循环前的变量初始化

# 端点 候选点 扫描点 端点列表 拐点线列表 趋势状态

peer_i = 0

candidate_i = None

scan_i = 0

peers = [0]

z = np.zeros(len(k))

state = ZIG_STATE_START

while True:

#print(peers)

scan_i += 1

if scan_i == len(k) - 1:

# 扫描到尾部

if candidate_i is None:

peer_i = scan_i

peers.append(peer_i)

else:

if state == ZIG_STATE_RISE:

if k[scan_i] >= k[candidate_i]:

peer_i = scan_i

peers.append(peer_i)

else:

peer_i = candidate_i

peers.append(peer_i)

peer_i = scan_i

peers.append(peer_i)

elif state == ZIG_STATE_FALL:

if k[scan_i] <= k[candidate_i]:

peer_i = scan_i

peers.append(peer_i)

else:

peer_i = candidate_i

peers.append(peer_i)

peer_i = scan_i

peers.append(peer_i)

break

if state == ZIG_STATE_START:

if k[scan_i] >= k[peer_i] * (1 + x):

candidate_i = scan_i

state = ZIG_STATE_RISE

elif k[scan_i] <= k[peer_i] * (1 - x):

candidate_i = scan_i

state = ZIG_STATE_FALL

elif state == ZIG_STATE_RISE:

if k[scan_i] >= k[candidate_i]:

candidate_i = scan_i

elif k[scan_i] <= k[candidate_i]*(1-x):

peer_i = candidate_i

peers.append(peer_i)

state = ZIG_STATE_FALL

candidate_i = scan_i

elif state == ZIG_STATE_FALL:

if k[scan_i] <= k[candidate_i]:

candidate_i = scan_i

elif k[scan_i] >= k[candidate_i]*(1+x):

peer_i = candidate_i

peers.append(peer_i)

state = ZIG_STATE_RISE

candidate_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*j

print(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']

图片:

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

  1. 通达信公式大全_通达信MACD金叉的选股公式大全

    公式来源于网络,我只是用其中一个,一起复制来了,有需要的自取吧.1.0轴上方第一次金叉选股公式: DIFF:=EMA(CLOSE,12) - EMA(CLOSE,26); DEA := EMA(DIF ...

  2. 通达信 移动平均算法_通达信线性回归通道主图指标公式;通达信顶底轻松买卖副图指标公式...

    作者: 黄老师  发布时间: 06/04 2020 16:00 信线性回归通道主图指标: UR:=6;LR:=6;TC1:=IF(H=HHV(H,8*UR),H,DRAWNULL);TC2:=CONS ...

  3. 通达信 移动平均算法_通达信洗盘监庄指标副图公式

    作者: 黄老师  发布时间: 06/03 2020 08:00 VARC:=LOW;VARD:=REF(LOW,1);VARE:=SMA(ABS(VARC-VARD),3,1)/SMA(MAX(VAR ...

  4. 通达信 移动平均算法_通达信仓位管理主图指标公式

    作者: 黄老师  发布时间: 06/02 2020 15:00 MA10:MA(C,10)COLORWHITE,LINETHICK2;MA30:MA(C,30)COLOR238E23,LINETHIC ...

  5. 一信通短信接口对接_短信接口对接流程

    下面是php开发语言短信接口接入到项目中的demo示例: // ① 该代码仅供接入动力思维乐信短信接口参考使用,客户可根据实际需要自行编写: // ② 支持发送验证码短信.触发通知短信等: // ③ ...

  6. python中匹配函数_正则表达式以匹配函数名和Python中的所有参数

    假设我有一个字符串,如下所示:"func(arg1, arg2, arg3, arg4, ..., argn)" 编辑:此函数不是用某种特定语言编写的.它只有这种格式.如果这样做更 ...

  7. 一信通短信接口对接_短信接口对接

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  8. python怎么用gamma函数_不完全gamma函数 python有gamma函数吗

    matlab中gammainc(不完全伽马函数)是代表什么运算? 如题,matlab中gammainc函数是什么运算,比如A==gammainc(B/2,C/2) 麻烦问一下,图中的红框的下一步是怎么 ...

  9. java调用短信验证失败_短信验证码被刷怎么办?java 短信验证码防刷策略

    一 事件简述 这是一件发生在前段时间的事情,当时的情况是这样的:一个新的功能模块上线之后,出现短信接口被恶意访问调用的情况,请求数量很大,而且通过查看短信服务商控制台也发现,短信发送量在飙升,看着统计 ...

最新文章

  1. Linux系统管理学习路线图
  2. git revert 用法
  3. atCoder Ants on a Circle(又是蚂蚁问题。。。)
  4. python reduce函数 day16
  5. html之元素与元素的形成
  6. 七大新品集中亮相,腾讯云AI大数据全线升级!
  7. UVa 10020 (最小区间覆盖) Minimal coverage
  8. ae缺少效果opticalflares_新版镜头光晕插件来袭,Optical Flares 1.3.5 for Win/Mac,含注册机...
  9. 【BFS】LeetCode 130. Surrounded Regions
  10. CAESAR II 5.00 USB加密锁运行稳定完整功能版/
  11. Mac用Homebrew安装libimobiledevice
  12. Yii2汉字转拼音类
  13. win7计算机属性资源管理器停止工作,win7系统windows资源管理器已停止工作一直弹出来的处理方法...
  14. Cisco Packet Tracer Student的路由器接口配置
  15. Altium Designer 的PCB中添加图片或logo的方法(附PCB Logo Creator插件)
  16. android 在状态栏耳机图标显示图标显示图标显示图标,Android 通知栏图标
  17. 欲望、外界、标签、天才、时间、经历、人生目标、后悔、和现实。转自特种兵—AK47
  18. 啊哈C——学习2.6一起来找茬
  19. 怎么理解cpu load?
  20. The Pragmatic Programmer 读书笔记之一 DRY-Don’t Repeat Youself

热门文章

  1. 键盘特殊符号输入小技巧
  2. Java中基本数据类型和包装类型的区别
  3. 如何批量修改文件名、照片文件名
  4. Windows与Linux双系统设置默认引导项与删除引导项
  5. 2022高性价蓝牙耳机排名,500元内真无线蓝牙耳机品牌推荐
  6. Android 逆向基础
  7. 基于单片机的RFID考勤刷卡电路设计(#0207)
  8. 只要两步,用Python将地址标记在地图上!
  9. mysql 出现撇号 _Navicat使用教程:如何在MySQL中定位和删除有重复意义的值
  10. 【历史上的今天】3 月 7 日:首条海底光缆开通;VeriSign 收购 Network Solutions;计算机图形学先驱诞生