用聚类算法计算股票的支撑位和阻力位

本文介绍了如何运用Python连接MongoDB获取股票数据,并通过Pandas和Numpy进行预处理。接着,利用KMeans和层次聚类算法寻找股票的支撑位和阻力位。通过调整K值和滚动窗口大小,分析了不同聚类数量对结果的影响,并对Google公司的股票数据进行了实例演示。
摘要由CSDN通过智能技术生成

本文将向您展示如何使用不同的聚类算法计算股票支撑位和阻力位。

股票数据 - 我在 mongoDB 数据库中有股票数据。您还可以免费从雅虎财经获取这些数据。

Python 连接 MongoDB 设置

In [1]:
import pymongo
from pymongo import MongoClient
client_remote = MongoClient('mongodb://localhost:27017')
db_remote = client_remote['stocktdb']
collection_remote = db_remote.stock_data

从 MongoDB 获取股票数据

我将使用过去 60 天的 Google 公司股票 数据进行分析。

In [2]:
mobj = collection_remote.find({'ticker':'GOOGL'}).sort([('_id',pymongo.DESCENDING)]).limit(60)

为数据分析准备数据

我将使用 Pandas 和 Numpy 进行数据操作。让我们首先从 Mongo Cursor 对象获取数据到 Python 列表。

In [3]:
prices = []
for doc in mobj:
    prices.append(doc['high'])

K-means聚类计算股票支撑位和阻力位

In [4]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import AgglomerativeClustering

对于 K-means聚类,我们需要将数据转换为 Numpy 数组格式。

In [5]:
X = np.array(prices)

对于K-means聚类来说,K-means聚类的数量非常重要。我们可以使用膝图找到最佳 K值,如下所示。

In [6]:
from sklearn.cluster import KMeans
import numpy as np
from kneed import KneeLocator

sum_of_sq_distances = []
K = range(1,10)
for k in K:
    km = KMeans(n_clusters=k)
    km = km.fit(X.reshape(-1,1))
    sum_of_sq_distances.append(km.inertia_)
kn = KneeLocator(K, sum_of_sq_distances,S=1.0, curve="convex"
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值