请选择 进入手机版 | 继续访问电脑版
联系我们0592-5620660
电子邮箱info@immsee.cn

通达信一些指标的Python实现

[复制链接]
admin 发表于 2021-1-15 17:06:36
124 0
对照通达信一些指标的Python实现

  1. # 威廉指标
  2. def williams(df, n, column='williams'):
  3. # 100*(10日内最高价的最高值-收盘价)/(10日内最高价的最高值-10日内最低价的最低值)
  4. for i in range(len(df)):
  5. if i < n-1: continue
  6. df.ix[i, column] = 100 * (df.high.values[i-n+1:i+1].max()-df.close.values[i])/(
  7. df.high.values[i-n+1:i+1].max()-df.low.values[i-n+1:i+1].min())
  8. return df

  9. # 布林指标
  10. def bollinger(df,n):
  11. for i in range(len(df)):
  12. if i < n-1: continue
  13. df.ix[i, 'BOLL'] = df.close.values[i-n+1:i+1].mean()
  14. df.ix[i, 'UB'] = df.ix[i, 'BOLL'] + 2 * numpy.std(df.close.values[i-n+1:i+1], ddof=1)
  15. df.ix[i, 'LB'] = df.ix[i, 'BOLL'] - 2 * numpy.std(df.close.values[i-n+1:i+1], ddof=1)
  16. return df

  17. # 轨道线
  18. def ene(df,n,m1,m2):
  19. for i in range(len(df)):
  20. if i < n-1: continue
  21. df.ix[i, 'UPPER'] = (1+m1/100)*df.close.values[i-n+1:i+1].mean()
  22. df.ix[i, 'LOWER'] = (1-m2/100)*df.close.values[i-n+1:i+1].mean()
  23. df.ix[i, 'ENE'] = (df.ix[i, 'UPPER'] + df.ix[i, 'LOWER'])/2
  24. return df

  25. def kdj(df,n,m1,m2):
  26. for i in range(len(df)):
  27. if i < n-1: continue
  28. df.ix[i, 'rsv'] = (df.close.values[i]-df.low.values[i-n+1:i+1].min()) / (df.high.values[i-n+1:i+1].max()-df.low.values[i-n+1:i+1].min())*100
  29. df = getSMA(df,m1,1,'rsv','K')
  30. df = getSMA(df,m2,1,'K','D')
  31. for i in range(len(df)):
  32. df.ix[i, 'J'] = 3*df.K.values[i] - 2*df.D.values[i]
  33. return df
复制代码


行情软件里习惯了通达信的简介,虽然很多时候还是要依赖大智慧,但平时看图形基本都是用通达信。因此在有时候做数据分析的时候,不可避免的需要再次的实现一些指标功能,所以在Python里整理了一下,写了部分的指标工具。所有数据都是Dataframe类型,以时间为Index顺序排列。关于getSMA这个函数可以在本博另一帖子《
行情软件里的平均函数以及Python的实现》中可以找到。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发表新帖

推荐学习课程

阅读排行

QQ| 

Powered by iMMSEE Inc. ( 闽ICP备09016880号 )

返回顶部 返回列表