使用置信度参数找到出现次数最多的元素

finding the most appeared elements with a confidence parameter

我对编程比较陌生,我正在尝试使用 python 开发算法交易系统。现在我有一个包含所有支持级别的列表。打印该列表 returns :

[417.0, 434.0, 432.9, 432.1, 428.4, 425.3, 400.2, 404.7, 400.8,
 384.7, 384.5, 393.7, 383.9, 370.9, 384.2, 383.2, 342.9, 371.3,
 372.0, 386.1, 377.3, 378.3, 411.2, 413.2, 404.1, 374.7, 380.3,
 382.8, 384.4, 387.3, 387.3, 384.9, 382.2, 378.2, 402.7, 397.6,
 373.1, 380.0, 377.4, 379.2, 373.6, 371.5, 374.7, 383.3, 379.5]

然后我使用 Plotly 在这些级别上绘制线条。我的问题是,我怎样才能得到差异最小的元素,以便我可以绘制支持集群。 This 显示了一些级别如何重叠或彼此之间的差异非常小,并创建了一个支持区域。 我做了以下事情:

def get_diff(t):
    for i in range(len(t)):
        return abs(t[i]-t[i+1])
    comb = combinations(levelssupp, 2)
    print('this', min(comb, key=lambda a: get_diff(a)))

但它 returns 只有一个元组:

(375.0, 375.0)

希望我已经正确理解您的问题。此示例将打印值在阈值范围内的最大列表(此示例中为 1%):


lst = [... your data from the question...]
threshold = 0.01  # 1.0 = 100%,  0.01 = 1%


def get_lists(data):
    for v in data:
        t = v * threshold
        yield [j for j in data if abs(v - j) <= t]


largest_list = max(get_lists(lst), key=len)
print(largest_list)

打印:

[384.7, 384.5, 383.9, 384.2, 383.2, 386.1, 380.3, 382.8, 384.4, 384.9, 382.2, 380.0, 379.2, 383.3, 379.5]