全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 877|回复: 15

[翻译] 求python大佬翻一个tradingview指标到python

[复制链接]
发表于 2023-12-8 15:33:16 | 显示全部楼层 |阅读模式
本帖最后由 一只小怪兽 于 2023-12-8 15:36 编辑

尝试翻译了不到100行菜鸡真的翻译不出来啊

这是指标地址 https://cn.tradingview.com/script/aRxQ1g82-QQE-Weighted-Oscillator-LuxAlgo/

只要能计算出  rsi 和ts 两个数值就好  代码在最底下







  1. // This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
  2. // © LuxAlgo

  3. //@version=5
  4. indicator("QQE Weighted Oscillator [LuxAlgo]", "LuxAlgo - QQE Weighted Oscillator")
  5. //------------------------------------------------------------------------------
  6. //Settings
  7. //-----------------------------------------------------------------------------{
  8. length = input.int(14, minval = 1)
  9. factor = input.float(4.236, minval = 0)
  10. smooth = input.int(5, minval = 1)
  11. weight = input.float(2)

  12. src    = input(close)

  13. //Style
  14. rsiCss = input(#3179f5, 'RSI', group = 'Style')

  15. tsBearCss = input(color.red, 'Trailing Stop', group = 'Style', inline = 'inline1')
  16. tsBullCss = input(color.teal, '', group = 'Style', inline = 'inline1')

  17. //-----------------------------------------------------------------------------}
  18. //Weighted QQE
  19. //-----------------------------------------------------------------------------{
  20. var ts = 0.
  21. var rsi = 0.

  22. delta = src - src[1]
  23. w = nz(delta * (rsi - ts) > 0 ? weight : 1, 1)

  24. //Rsi
  25. num = ta.rma(delta * w, length)
  26. den = ta.rma(math.abs(delta * w), length)
  27. rsi := 50 * ta.ema(num / den, smooth) + 50

  28. //Trailing stop
  29. diff = ta.rma(math.abs(rsi - rsi[1]), length)

  30. crossover = ta.crossover(rsi, ts)
  31. crossunder = ta.crossunder(rsi, ts)

  32. ts := nz(crossover ? rsi - diff * factor
  33.   : crossunder ? rsi + diff * factor
  34.   : rsi > ts ? math.max(rsi - diff * factor, ts)
  35.   : math.min(rsi + diff * factor, ts), rsi)

  36. //-----------------------------------------------------------------------------}
  37. //Plots
  38. //-----------------------------------------------------------------------------{
  39. css = rsi > ts ? tsBullCss : tsBearCss

  40. plot_rsi = plot(rsi, 'RSI', rsiCss)
  41. plot_ts  = plot(ts, 'Traling Stop', css)

  42. fill(plot_rsi, plot_ts, rsi, ts, color.new(rsiCss, 50), color.new(css, 50))

  43. hline(70)
  44. hline(30)

  45. //-----------------------------------------------------------------------------}
复制代码




我自己想办法翻译 的 不行啊  
  1. def crossover(a, b):
  2.         """
  3.         检查两个指标是否在给定时间点交叉。
  4.         Args:
  5.             a: 第一个指标值。
  6.             b: 第二个指标值。

  7.         Returns:
  8.             如果两个指标在给定时间点交叉,则返回 True,否则返回 False。
  9.         """
  10.         if a[-1] < b[-1] and a[-2] >= b[-2]:
  11.             return True
  12.         elif a[-1] >= b[-1] and a[-2] < b[-2]:
  13.             return True
  14.         else:
  15.             return False
复制代码


  1.         # Settings
  2.         length = 14  # RSI 计算长度
  3.         factor = 4.236  # 追踪止损因子
  4.         smooth = 5  # RSI 平滑周期
  5.         weight = 2  # 基于追踪止损对 RSI 应用的权重
  6.         src =  dataframe['close'] # 输入数据(通常是收盘价)

  7.         # 加权 QQE
  8.         ts = 0.0  # 追踪止损值
  9.         rsi = 0.0  # 相对强弱指数值

  10.         # 计算差额
  11.         delta = src - src[1]

  12.         # 计算权重
  13.         w = 1.0 if delta * (rsi - ts) <= 0 else weight

  14.         # 计算 RSI
  15.         num = pta.rma(delta * w, length)  # 分子
  16.         den = pta.rma(abs(delta * w), length)  # 分母
  17.         rsi = 50 * pta.ema(num / den, smooth) + 50

  18.         

  19.         # 计算追踪止损
  20.         diff = pta.rma(abs(rsi - rsi[1]), length)  # 绝对差额

  21.         crossover = crossover(rsi, ts)  # RSI 穿越追踪止损上方
  22.         crossunder = crossover(rsi, ts)  # RSI 穿越追踪止损下方

  23.         if crossover:
  24.             ts = rsi - diff * factor
  25.         elif crossunder:
  26.             ts = rsi + diff * factor
  27.         else:
  28.             ts = max(rsi - diff * factor, ts) if rsi > ts else min(rsi + diff * factor, ts)
复制代码


发表于 2023-12-8 15:39:09 来自手机 | 显示全部楼层
呦呵,还是个金融大佬
 楼主| 发表于 2023-12-8 15:39:45 | 显示全部楼层
qingchunfeiyang 发表于 2023-12-8 15:39
呦呵,还是个金融大佬

你在说什么
发表于 2023-12-8 15:42:55 来自手机 | 显示全部楼层
查文档吧,记得他家文档好像挺细的
 楼主| 发表于 2023-12-8 15:44:37 | 显示全部楼层
qingchunfeiyang 发表于 2023-12-8 15:42
查文档吧,记得他家文档好像挺细的

我想翻译成python   能看懂指标  不会翻译啊
发表于 2023-12-8 16:26:56 | 显示全部楼层
试试吧,https://dropover.cloud/a4b6c6
发表于 2023-12-8 16:28:37 | 显示全部楼层
这些指标,我都能自己写出来
不过
最后发现
没什么用啊
指标只能衡量过去
拿来预测未来根本不行

点评

是的我也干过这事。最后发现A股是不可预测的。最好别碰。 美股拉下最近三个月平均值,只要不是下降趋势,逢低买入就是了。  发表于 2023-12-8 16:31
发表于 2023-12-8 16:30:26 来自手机 | 显示全部楼层
謝謝指標都是扯淡
 楼主| 发表于 2023-12-8 16:37:49 | 显示全部楼层
redneck 发表于 2023-12-8 16:28
这些指标,我都能自己写出来
不过
最后发现

总得有个表示把  有人用趋势线  有人看裸K  这个看个人习惯
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-4-30 15:27 , Processed in 0.062381 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表