gpt4 book ai didi

php - Nifty 指数价格的 20 周期移动平均线计算

转载 作者:行者123 更新时间:2023-11-29 23:01:31 30 4
gpt4 key购买 nike

  • nifty 是印度国家证券交易所的股票指数。 *

我有一个名为“livedata”的数据库,其中表名称为nifty,这是印度国家证券交易所的股票指数。我有一行名为

ID 作为主键,时间作为时间戳,cmp 表示特定的“漂亮”股票指数。白天(上午 09:15:01 到下午 03:29:59)一分钟内

(1) 我收到大约 5 个交易条目。

示例:-

ID |        time        |     cmp | 
-----------------------------------
1 |2014-10-17 10:55:05 | 7743.85 |
2 |2014-10-17 10:55:15 | 7743.55 |
3 |2014-10-17 10:55:22 | 7743.35 |
4 |2014-10-17 10:55:34 | 7744.85 |
5 |2014-10-17 10:55:45 | 7743.35 |
6 |2014-10-17 10:55:56 | 7743.25 | this should be the last / closing trade Entry.
7 |2014-10-17 10:56:17 | 7743.15 |
8 |2014-10-17 10:56:25 | 7742.85 |
9 |2014-10-17 10:56:35 | 7742.25 |
10 |2014-10-17 10:56:45 | 7743.35 |
11 |2014-10-17 10:56:55 | 7742.65 | this should be the last / closing trade Entry.
12 |2014-10-17 10:57:23 | 7743.55 |
13 |2014-10-17 10:57:37 | 7744.85 |
14 |2014-10-17 10:57:46 | 7743.55 |
15 |2014-10-17 10:57:53 | 7741.85 |
16 |2014-10-17 10:57:56 | 7742.45 | this should be the last / closing trade Entry.
17 |2014-10-17 10:58:05 | 7743.85 |
18 |2014-10-17 10:58:17 | 7743.55 |
19 |2014-10-17 10:58:29 | 7743.35 |
20 |2014-10-17 10:58:37 | 7744.85 |
21 |2014-10-17 10:58:48 | 7743.35 |
22 |2014-10-17 10:58:56 | 7743.25 | this should be the last / closing trade Entry.
23 |2014-10-17 10:59:17 | 7743.15 |
24 |2014-10-17 10:59:21 | 7742.85 |
25 |2014-10-17 10:59:33 | 7742.25 |
26 |2014-10-17 10:59:43 | 7743.35 |
27 |2014-10-17 10:59:50 | 7742.65 |
28 |2014-10-17 10:59:57 | 7743.55 | this should be the last / closing trade Entry.
29 |2014-10-17 10:60:17 | 7744.85 |
30 |2014-10-17 10:60:25 | 7743.55 |
31 |2014-10-17 10:60:36 | 7741.85 |
32 |2014-10-17 10:60:47 | 7742.45 |this should be the last / closing trade Entry.

我想根据每分钟的最后/收盘价计算移动平均线。对于一 (1) 分钟内的众多条目中的这一点,我

仅需要最后的交易条目。示例基本期望结果:-

ID |          time      |     cmp |
-----------------------------------
6 |2014-10-17 10:55:56 | 7743.25 |
11 |2014-10-17 10:56:55 | 7742.65 |
16 |2014-10-17 10:57:56 | 7742.45 |
22 |2014-10-17 10:58:56 | 7743.25 |
28 |2014-10-17 10:59:57 | 7743.55 |
32 |2014-10-17 10:60:47 | 7742.45 |

例如。 (移动平均线 = 添加 20 个周期,即过去 20 分钟内每分钟的最后交易入场点并除以 20。该值应出现在

前端可能正在使用 $result= mysql_query($query) 或 die (mysql_error());请建议..

如果我想获取每分钟的最后一个条目,我该如何编写 PHP 代码?现在我正在使用

获取条目
$query= "SELECT FROM nifty WHERE time BETWEEN '2014-10-17 10:55:05' AND '2014-10-17 10:60:47'"; 

实际结果:-

ID      Date Stamp        CMP
1 2014-10-17 10:55:05 7743.85
2 2014-10-17 10:55:14 7743.75
3 2014-10-17 10:55:18 7745.30
4 2014-10-17 10:55:21 7745.35
5 2014-10-17 10:55:32 7745.10
6 2014-10-17 10:55:36 7744.85
7 2014-10-17 10:55:46 7744.40
8 2014-10-17 10:55:50 7744.70
9 2014-10-17 10:55:59 7745.60 this should be the last / closing trade Entry.
10 2014-10-17 10:56:06 7745.80
11 2014-10-17 10:56:11 7745.40
12 2014-10-17 10:56:23 7746.50
13 2014-10-17 10:56:32 7747.30
14 2014-10-17 10:56:34 7747.35
15 2014-10-17 10:56:41 7747.65
16 2014-10-17 10:56:52 7747.80
17 2014-10-17 10:56:56 7748.20 this should be the last / closing trade Entry.
18 2014-10-17 10:57:01 7747.80
19 2014-10-17 10:57:13 7747.75
20 2014-10-17 10:57:16 7747.55
21 2014-10-17 10:57:28 7747.50
22 2014-10-17 10:57:32 7746.95
23 2014-10-17 10:57:38 7746.55
24 2014-10-17 10:57:40 7746.70
25 2014-10-17 10:57:50 7747.25
26 2014-10-17 10:57:58 7746.55 this should be the last / closing trade Entry.
27 2014-10-17 10:58:09 7746.70
28 2014-10-17 10:58:11 7746.90
29 2014-10-17 10:58:17 7747.20
30 2014-10-17 10:58:26 7746.75
31 2014-10-17 10:58:33 7746.70
32 2014-10-17 10:58:37 7746.55 this should be the last / closing trade Entry.
33 2014-10-17 11:30:28 7748.35
34 2014-10-17 11:30:32 7748.95
35 2014-10-17 11:30:40 7749.95
36 2014-10-17 11:30:45 7749.05
37 2014-10-17 11:30:58 7748.95 this should be the last / closing trade Entry.
38 2014-10-17 11:31:03 7748.80
39 2014-10-17 11:31:08 7749.90
40 2014-10-17 11:31:12 7751.80
41 2014-10-17 11:31:26 7752.70
42 2014-10-17 11:31:33 7753.80
43 2014-10-17 11:31:33 7753.60
44 2014-10-17 11:31:39 7752.55
45 2014-10-17 11:31:50 7752.65
46 2014-10-17 11:31:56 7754.60 this should be the last / closing trade Entry.
47 2014-10-17 11:32:18 7755.15
48 2014-10-17 11:32:18 7755.35
49 2014-10-17 11:32:26 7755.25
50 2014-10-17 11:32:36 7754.45
51 2014-10-17 11:32:40 7754.90
52 2014-10-17 11:32:56 7754.40 this should be the last / closing trade Entry.
53 2014-10-17 11:33:10 7754.35
54 2014-10-17 11:33:12 7753.65
55 2014-10-17 11:33:15 7753.45
56 2014-10-17 11:33:22 7753.50
57 2014-10-17 11:33:25 7753.35
58 2014-10-17 11:33:34 7753.45
59 2014-10-17 11:33:39 7754.20
60 2014-10-17 11:33:49 7756.35
61 2014-10-17 11:33:50 7755.65
62 2014-10-17 11:33:54 7757.15 this should be the last / closing trade Entry.
63 2014-10-17 11:34:01 7759.05

我们可以使用loop、while、do while来实现这个吗?请帮忙解决这个问题,非常感谢。

使用SELECT LOOP WHILE DO WHILE等预期的结果

最佳答案

MySQL 不支持分析函数,这使得此类任务比许多其他 RDBMS 引擎要困难得多。

虽然仍然可以使用纯粹的基于集合的 SQL 方法,但这比使用 user variable 的一点捷径更难理解,而且效率可能要低得多。 :

SELECT AVG(cmp) FROM (
SELECT cmp, @t:=time - INTERVAL SECOND(time) SECOND
FROM nifty, (SELECT @t:=CURRENT_TIMESTAMP) init
WHERE time < @t
ORDER BY time DESC
LIMIT 20
) x

查看 sqlfiddle .

外部查询应该是相当不言自明的:它只是从内部查询中获取 cmp 值的平均值。

由于其 ORDER BY 子句,内部查询在 nifty 表上向后移动;使用变量 @t 来跟踪我们已经计算过的最新分钟,WHERE 子句确保只考虑该分钟之前的条目 - 而第二项每当找到匹配项时,SELECT 列表中的 @t 就会更新为找到的分钟的开始时间。最后,LIMIT 子句确保一旦找到第 20 条记录,内部查询就会终止。

如果存在一个复合索引,其中 (time, cmp) 是最左边的列(按该顺序),则此查询的计算效率最高。例如:

ALTER TABLE nifty ADD INDEX (time, cmp)

关于php - Nifty 指数价格的 20 周期移动平均线计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28461747/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com