如何从 TA-lib 结果中列出一个列表?

如何解决如何从 TA-lib 结果中列出一个列表?

这是关于如何从 TA-lib 移动平均线的最后六个结果中制作一个有用的列表。

这是我的平均代码:

closes_TREND = []
MOVING_AVERAGES = []

klines_TREND = client.get_historical_klines(TRADE_SYMBOL,Client.KLINE_INTERVAL_1HOUR,"20 hours ago UTC")

for data in klines_TREND:
        closes = data[4]
        closes_TREND.append(float(closes))
       
        np_closes_TREND = np.array(closes_TREND)
        moving_average = talib.MA(np_closes_TREND,SMA_PERIOD)

给出这个结果:

[nan]
[nan nan]
[nan nan nan]
[nan nan nan nan]
[nan nan nan nan nan]
[nan nan nan nan nan nan]
[           nan            nan            nan            nan 
            nan            nan 49083.85571429]
[           nan            nan            nan            nan 
            nan            nan 49083.85571429 49056.04857143]
[           nan            nan            nan            nan 
            nan            nan 49083.85571429 49056.04857143 
 49062.34142857]
[           nan            nan            nan            nan 
            nan            nan 49083.85571429 49056.04857143 
 49062.34142857 49103.36142857]
[           nan            nan            nan            nan
            nan            nan 49083.85571429 49056.04857143
 49062.34142857 49103.36142857 49182.70857143]
[           nan            nan            nan            nan
            nan            nan 49083.85571429 49056.04857143
 49062.34142857 49103.36142857 49182.70857143 49406.18142857]
[           nan            nan            nan            nan
            nan            nan 49083.85571429 49056.04857143
 49062.34142857 49103.36142857 49182.70857143 49406.18142857
 49649.40285714]
[           nan            nan            nan            nan
            nan            nan 49083.85571429 49056.04857143
 49062.34142857 49103.36142857 49182.70857143 49406.18142857
 49649.40285714 49842.8       ]
[           nan            nan            nan            nan
            nan            nan 49083.85571429 49056.04857143
 49062.34142857 49103.36142857 49182.70857143 49406.18142857
 49649.40285714 49842.8        50040.02142857]
[           nan            nan            nan            nan
            nan            nan 49083.85571429 49056.04857143
 49062.34142857 49103.36142857 49182.70857143 49406.18142857
 49649.40285714 49842.8        50040.02142857 50210.48285714]
[           nan            nan            nan            nan
            nan            nan 49083.85571429 49056.04857143
 49062.34142857 49103.36142857 49182.70857143 49406.18142857
 49649.40285714 49842.8        50040.02142857 50210.48285714
 50386.27285714]
[           nan            nan            nan            nan
            nan            nan 49083.85571429 49056.04857143
 49062.34142857 49103.36142857 49182.70857143 49406.18142857
 49649.40285714 49842.8        50040.02142857 50210.48285714
 50386.27285714 50509.12285714]
[           nan            nan            nan            nan
            nan            nan 49083.85571429 49056.04857143
 49062.34142857 49103.36142857 49182.70857143 49406.18142857
 49649.40285714 49842.8        50040.02142857 50210.48285714
 50386.27285714 50509.12285714 50483.18714286]
[           nan            nan            nan            nan
            nan            nan 49083.85571429 49056.04857143
 49062.34142857 49103.36142857 49182.70857143 49406.18142857
 49649.40285714 49842.8        50040.02142857 50210.48285714
 50386.27285714 50509.12285714 50483.18714286 50467.02571429]

我需要的是像这样的列表中的最后六个值:

[50040.02,50210.48,50386.27,50509.12,50483.18,50467.02]

我尝试了很多,这是最接近的:

test = [round(num,2) for num in moving_average]
       y  = test[14:]

它给了我这个:

[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[50040.02]
[50040.02,50210.48]
[50040.02,50386.27]
[50040.02,50509.12]
[50040.02,50483.19]
[50040.02,50483.19,50467.02]

我需要多项式拟合的列表,现在我遇到了 x 和 y 长度相同的问题,可能是因为列表 y 的构建方式。

在多项式拟合中,x = [1.0,2.0,3.0,4.0,5.0,6.0] 尝试得到 y = [50040.02,50467.02]

有什么建议吗?

附注 编辑了我的问题以回答评论。

12-4-21 秒编辑:

y = test[-6:],给我这个: 它即将接近,但仍然不适合多项式拟合。

[nan]
[nan,nan]
[nan,nan,50058.15]
[nan,50058.15,50115.52]
[nan,50115.52,50134.18]
[nan,50134.18,50205.48]
[nan,50205.48,50262.16]
[50058.15,50262.16,50257.04]
[50115.52,50257.04,50262.79]
[50134.18,50262.79,50258.97]
[50205.48,50258.97,50317.7]
[50262.16,50317.7,50361.69]
[50257.04,50361.69,50371.85]
[50262.79,50371.85,50463.78]
[50258.97,50463.78,50585.92]
[50317.7,50585.92,50704.61]

print(type(y[0]))

给我这个:

<class 'numpy.float64'>
<class 'numpy.float64'>
<class 'numpy.float64'>
<class 'numpy.float64'>
<class 'numpy.float64'>
<class 'numpy.float64'>
<class 'numpy.float64'>
<class 'numpy.float64'>
<class 'numpy.float64'>
<class 'numpy.float64'>
<class 'numpy.float64'>
<class 'numpy.float64'>
<class 'numpy.float64'>
<class 'numpy.float64'>
<class 'numpy.float64'>
<class 'numpy.float64'>
<class 'numpy.float64'>
<class 'numpy.float64'>
<class 'numpy.float64'>
<class 'numpy.float64'>

编辑 23-4

这是它为 x、y 和 polyn 打印的内容。适合,我只需要最后一个

x = :
[0.0,1.0,5.0]
y = :
[41676.59,41223.05,40937.1,40708.92,40627.29,40770.61]
polyn. fit = :
[ -187.01028571 41458.11904762]
x = :
[0.0,5.0]
y = :
[41223.05,40770.61,40747.72]
polyn. fit = :
[  -84.50714286 41047.04952381]
x = :
[0.0,5.0]
y = :
[40937.1,40747.72,40770.06]
polyn. fit = :
[-1.64422857e+01  4.08013890e+04]
x = :
[0.0,5.0]
y = :
[40708.92,40770.06,41008.3]
polyn. fit = :
[   54.352 40636.27 ]
x = :
[0.0,5.0]
y = :
[40627.29,41008.3,41136.19]
polyn. fit = :
[   93.71171429 40609.08238095]
x = :
[0.0,5.0]
y = :
[40770.61,41136.19,41329.56]
polyn. fit = :
[  119.95428571 40660.52095238]
x = :
[0.0,5.0]
y = :
[40747.72,41329.56,41339.63]
polyn. fit = :
[  136.16971429 40714.81904762]
x = :
[0.0,5.0]
y = :
[40770.06,41339.63,41358.35]
polyn. fit = :
[  117.966 40862.1  ]
x = :
[0.0,5.0]
y = :
[41008.3,41358.35,41526.3]
polyn. fit = :
[   93.33 41049.73] #>> this is the correct value!

每次执行时,我都会一遍又一遍地得到这些值...

解决方法

抱歉回复延迟。我认为由于 moving_average 并不总是返回长度为 6 的 numpy 数组,因此在继续之前,您需要有一个 if 语句来检查 y 的长度何时等于 6。您还应该考虑添加行 moving_average = moving_average[~np.isnan(moving_average)] 以删除 nan 中的 moving_average 值,以便 y 在其列表中没有任何 nan 值。

closes_TREND = []
MOVING_AVERAGES = []

klines_TREND = client.get_historical_klines("BTCUSDT",Client.KLINE_INTERVAL_1HOUR,"20 hours ago UTC")

for data in klines_TREND:
    closes = data[4]
    closes_TREND.append(float(closes))

    np_closes_TREND = np.array(closes_TREND)
    SMA_PERIOD = 3
    moving_average = talib.MA(np_closes_TREND,SMA_PERIOD)
    # Filter out nan values in bumpy array
    moving_average = moving_average[~np.isnan(moving_average)]
    test = [round(num,2) for num in moving_average]
    y = test[-6:]
    if len(y) == 6:
        print(y)
        # Perform de polynomial fit here

编辑:如果您只需要获取最后一个列表,您可以将 if 语句移到 for 循环之外,这样它只会对最后一个 {{1} 执行一次多项式拟合} 列表

y

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res