我正在为外汇市场设计一个自动交易软件。 在MYSQL数据库中,我每隔五分钟就会有多年的市场数据。除了价格和时间外,我还有5种不同的数据指标。
[Time|Price|M1|M2|M3|M4|M5]
x ~400,0000
Time
是主键,M1
到M5
是不同的指标(例如标准偏差或移动平均线的斜率)。
根据M1
,M2
,M3
,M4
和M5的输入,我如何有效地找到最近的5,000个邻居?请注意,每个度量标准都是浮点数,并且具有不同的分布/范围。
答案 0 :(得分: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)