1

我正在为外汇市场设计一个自动交易软件。在 MYSQL 数据库中,我每隔五分钟就有多年的市场数据。除了价格和时间,我有 5 个不同的数据指标。

[Time|Price|M1|M2|M3|M4|M5] 
x ~400,0000

Time是主键,M1通过M5是不同的指标(例如标准差或移动平均线的斜率)。

M1给定, M2, M3, , 和 M5的输入,M4我如何有效地定位最近的 5,000 个邻居?请注意,每个指标都是浮点数并且具有不同的分布/范围。

4

1 回答 1

1

我不知道您将如何确定最近的邻居。似乎您可以在每个指标之间做一个绝对值差异并将它们总结起来。(如果没有绝对值,您可能有两个指标相差甚远,但会相互抵消。)

因此,最近的邻居将被定义为具有此任务的最低值:

ABS(M1 - @M1) + ABS(M2 - @M2) + ABS(M3 - @M3) + ABS(M4 - @M4) + ABS(M5 - @M5)

如果这有效,那么查询将是:

SELECT TOP 5000 *
FROM YourTable
ORDER BY ABS(M1 - @M1) + ABS(M2 - @M2) + ABS(M3 - @M3) + ABS(M4 - @M4) + ABS(M5 - @M5)

如果您愿意,您也可以对每个指标进行不同的加权:

SELECT TOP 5000 *
FROM YourTable
ORDER BY 2 * ABS(M1 - @M1) + 5 * ABS(M2 - @M2) + ABS(M3 - @M3) + 3 * ABS(M4 - @M4) + ABS(M5 - @M5)
于 2011-08-09T14:08:21.967 回答