我觉得,可以有一个相似度判定指标
一段时期内,庄家风格是相似的,如果他操作多支票,那手法就会很想,但是会有时间差,这样能不能成为下一步的指导?[*]欧几里得距离是一种常用的衡量空间中两点之间距离的方法。对于两条日 K 曲线,我们可以将其视为多维空间中的两个向量,每个维度对应一个特征(如开盘价、收盘价、最高价、最低价、成交量等)。假设两条曲线分别为A=(a1,a2,⋯,an)和B=(b1,b2,⋯,bn),则它们之间的欧几里得距离d(A,B)为:
d(A,B)=∑i=1n(ai−bi)2
[*]import pandas as pd
import pandas_datareader.data as web
import datetime
from scipy.stats import pearsonr
def get_stock_data(ticker, start_date, end_date):
try:
data = web.DataReader(ticker, 'yahoo', start_date, end_date)
return data['Close']
except Exception as e:
print(f"获取 {ticker} 数据时出错: {e}")
return None
def calculate_similarity(stock1, stock2):
if stock1 is None or stock2 is None:
return None
# 合并两个股票的收盘价数据
combined = pd.concat(, axis=1)
combined.columns = ['Stock1', 'Stock2']
# 去除缺失值
combined = combined.dropna()
if len(combined) < 2:
return None
# 计算皮尔逊相关系数和 p 值
corr, p_value = pearsonr(combined['Stock1'], combined['Stock2'])
return corr
if __name__ == "__main__":
# 设置日期范围
start_date = datetime.datetime(2024, 1, 1)
end_date = datetime.datetime(2024, 12, 31)
# 股票代码,这里以苹果和微软为例
ticker1 = 'AAPL'
ticker2 = 'MSFT'
# 获取股票数据
stock1_data = get_stock_data(ticker1, start_date, end_date)
stock2_data = get_stock_data(ticker2, start_date, end_date)
# 计算相似度
similarity = calculate_similarity(stock1_data, stock2_data)
if similarity is not None:
print(f"{ticker1} 和 {ticker2} 的相似度(皮尔逊相关系数): {similarity}")
else:
print("无法计算相似度,请检查数据获取情况。")
距离越近,说明两条曲线越相似。欧几里得距离简单直观,但对异常值较为敏感。
谢谢分享收盘价、最高价 这个很好的 这是个很好的想法 这个看着很好 很好的源码 哪有制做教程? 挺好的理解 真的可以吗? 有点意思
页:
[1]