funcat这个包有一部分功能,但大部分通达信函数是不支持的,
甚至有一些通达信用多维向量计算的方式,funcat只做成一维数据的循环
我自己对此有需求,所以实现了一部分代码
(2022.6更新,
当前已经有最新的MYTT包,所以文章内容已经过时,
地址:https://github.com/mpquant/MyTT/blob/main/MyTT.py

def REF(tp1, n):  i = 0 ZB_l = []y = 0while i < n: y=list(tp1)[i]   ZB_l.append(y) i=i+1while i < len(tp1):  y=list(tp1)[i-n]ZB_l.append(y)  i = i + 1
#    ZB_s = pd.Series(ZB_l)  return ZB_l#[-1]sdef zig(k,x):#x = 0.055
#    k = CLOSE.tolist()#d = df["trade_date"]
#    d = df['date'].tolist()# 循环前的变量初始化# 端点 候选点 扫描点 端点列表 拐点线列表 趋势状态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*j#z是zig线return [k[i] for i in peers]#,[d[i] for i in peers]def LLV(s, n):return s.rolling(n).min()def EMA(s, n):return s.rolling(n).ema()def HHV(s, n):if type(n)==int:return s.rolling(n).max()else:#当n不是单个值而是一个序列result = [0]*len(s)n=list(n)for i in range(1,len(s)):s_temp = s[0:i]result[i] = s_temp[-int(n[i]):].max()#过去n天return resultdef CROSS(cond1, cond2):'''x1上穿x2'''return np.where(eval(cond1)>eval(cond2),1,0).tolist()def barslast(df):lst=list(df)if sum(lst)>0: first_=lst.index(1)#出现1的所有位置bar_slast=[]for i in range(first_):bar_slast.append(np.nan)for i in range(first_,len(lst)):#出现1后往后计数if lst[i]==1:count_=0bar_slast.append(0)else:count_+=1bar_slast.append(count_)return bar_slast# @nb.jit
def COUNT(cond, n):# TODO lazy computeseries = condsize = len(cond) - ntry:result = np.full(size, 0, dtype=np.int)except :passfor i in range(size - 1, 0, -1):s = series[-n:]result[i] = len(s[s == True])series = series[:-1]return result# @nb.jit
def COUNT_(cond, n):if type(n)!=int:#两列序列一一 正序对应result = [0]*len(cond)cond=list(cond)n=list(n)for i in range(1,len(cond)):cond_temp = cond[0:i]cond_n_ture=cond_temp[-n[i]:]#过去n天result[i] = cond_n_ture[cond_n_ture == True]return np.array(result)

通达信公式改写成python代码相关推荐

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

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

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

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

  3. 通达信公式改成python_python转换通达信股票数据

    在通达信的安装目录里,比如我的D:\zd_pazq\vipdoc\sh\lday,存储上海的A股的每天数据,用文本编辑器打开是这个样子. 如果想得到里面的数据,可以用程序解码转换,这里使用python ...

  4. 同花顺公式转python_请把通达信公式转换成同花顺公式,谢谢

    N:=10;M:=10;N1:=10;M1:=10;{N:1,100,10;M;1,100,10:N1:1,100,10;M1;1,100,10}散筹估算:EMA((WINNER((O+C*2+H+L ...

  5. 小散量化炒股记|手把手教你转换通达信公式,盘整后均线粘合突破

    前言 通达信的公式编写功能非常流行,很多高手都是在通达信上编写公式来分析股票的. 作为过来人,建议大家在初期的策略研究阶段,选一个通用的平台进行策略研究,因为有现成的功能模块可以调用,这样就能把精力聚 ...

  6. 自己做量化交易软件(19)通达信公式转Python代码的程序

    ** 自己做量化交易软件(19)通达信公式转Python代码 ** 小白量化平台框架是本地化量化平台,用户的策略在用户自己电脑中执行,操作习惯仿股票软件,指标算法支持类通达信指标,回测也支持通达信大智 ...

  7. 通达信 python插件选股_自己做量化交易软件(20)通达信公式选股程序的实现

    自己做量化交易软件(20)通达信公式选股程序的实现 1.用小白2很好实现.首先获取板块中股票,存放在列表中.例如获取"上证50" import HP_tdx as htdx fro ...

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

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

  9. 自己做量化交易软件(34)小白量化实战7--投资理念与通达信公式回测(2)

    自己做量化交易软件(34)小白量化实战7–投资理念与通达信公式回测(2) 投资通俗地讲就是"财富变压器".投资是使资本和财富生长的源泉.没有证券市场和期货市场时投资者当投出一元钱时 ...

  10. 自己做量化交易软件(20)通达信公式选股程序的实现

    自己做量化交易软件(20)通达信公式选股程序的实现 1.用小白2很好实现.首先获取板块中股票,存放在列表中.例如获取"上证50" import HP_tdx as htdx fro ...

最新文章

  1. mysql noinstall_Windows 下noinstall方式安装 mysql 5.7.5 m15 winx64(推荐)
  2. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1068:与指定数字相同的数的个数
  3. jquery不同版本冲突导致低版本功能不能用
  4. LeetCode 1003. 检查替换后的词是否有效(栈)
  5. 论文浅尝 | 一日看尽长安花--NLP可解释研究梳理
  6. 在scrapy中parse函数里面xpath的内容打印不出来_如何正确的使用Scrapy ?
  7. 程序员未来的职业生涯路该怎么走,如何避免35岁中年危机?
  8. SpringBoot 整合 Shiro实践
  9. jdk、jre各版本下载
  10. 计算机批注的概念,批注
  11. 今天咱们用 Python 整一个 俄罗斯方块 小游戏吧(附源代码)
  12. BeanUtils.populate()抛出异常处理
  13. 如何更新google浏览器
  14. 围观设计模式(16)--结构型之组合模式(Composite Pattern)
  15. 【OTT】OTT Media Grinder (OTT TV 质量评价设备)
  16. 当相干伊辛机遇上量子退火机,谁更胜一筹?
  17. 给自己定个小目标 --java
  18. Oriented Object Proposals
  19. python——台阶题
  20. myeclipse 注册码(8.5版本)

热门文章

  1. 又一篇好文:折磨人的商业计划书
  2. python基本语句大全_python常见语句汇总
  3. Visual Studio 2019安装MFC开发工具包
  4. NetAssist 网络助手
  5. matlab描点写函数,matlab描点并标上点的序号
  6. MATLAB 绘制点的地理空间分布,并用点的颜色或大小代表数值
  7. win10远程桌面Android软件,Android端Win10远程桌面更新:支持Windows虚拟桌面
  8. Navicat连接Mysql教程
  9. c语言编译器苹果下载,c语言编译器ios下载
  10. 数字逻辑电路课程设计之数字电子时钟