1700509645
既然数据统计的意义主要在于用数据为认知对象画像,那么数量统计、数值加和、数值平均、方差、同比、环比等就成了绝大多数单位在运营过程中所需的基本数据资源。在这样的情况下,我们就把这种一般性的“操作”当成“统计”来介绍,把“高级技巧”放在后面作为分析的内容来讲解。
1700509646
1700509647
据我所知,现在很多人都有这样的误解:在数据库里使用AVG、SUM、COUNT这样的语句进行统计是一件档次很低的事情,因为操作太简单,有一点SQL语言基础的人都能做到。但我并不这么看。统计通常用于把认知对象的维度从低变高,从高变低,从简易变得复合,从复合变得简易。这种认知维度升降中的变化,可以帮助认知对象在观测过程中处于复杂度适中的状态,从而为人们进行认知与归纳总结提供便利。
1700509648
1700509649
我们先说降维认知。当数据处于高维状态的时候,我们一般喜欢把它们降维到适当的状态来认知。数据挖掘领域使用的“数据立方体”(Data Cube,如图14-1所示)就是一种降维认知手段。在描述一个维度极为丰富的高维数据记录组(例如销售记录)的时候,这种记录可能会包含销售时间、销售地点、销售类目、销售金额、销售数量、折扣率、售货人员等各种维度的信息,而且会有数以百万计的数据记录量。假设有m个维度和n条销售记录,那么这些数据会形成一个m×n的巨型矩阵。但是,销售额是一个对加和值敏感的数据种类,在使用
1700509650
1700509651
1700509652
1700509653
1700509654
图14-1 数据立方体
1700509655
1700509656
SELECT SUM(XXX)GROUP BY XXX
1700509657
1700509658
之后,就会忽略一些我们不那么关心的维度数据,并将一个确定的加和值返回,从而代替数以万计的具体销售记录。这种就是典型的降维认知——只关注最为关键的数据维度,只关注一个统计值而非单个个体值。
1700509659
1700509660
除了降维认知以外,升维认知(如图14-2所示)的使用也很广泛。
1700509661
1700509662
1700509663
1700509664
1700509665
图14-2 升维认知
1700509666
1700509667
在表示股价或期货价格的K线图(如图14-3所示)中,横坐标是时间,K线图上的每一个柱形都表示4个价格信息,分别是开盘价、高价、低价、收盘价。这种数据蕴含的信息看上去很贫乏,因为只有时间和价格,对市场多空情绪的反映有些不直观。所以,股票分析家们又发明了很多技术指标,这些指标无一例外,都是用K线图上的数据进行计算所得到的升维指标数据,MA(Moving Average,移动平均线)的计算就是其中之一。
1700509668
1700509669
1700509670
1700509671
1700509672
图14-3 股票价格K线图
1700509673
1700509674
在一个MySQL数据表Price中有字段CLOSE作为收盘价的字段(如表14-1所示)。
1700509675
1700509676
表14-1 Price表信息
1700509677
1700509678
TIME CLOSE 2016/10/3 104.15 2016/10/4 102.33 2016/10/5 102.25 2016/10/6 101.54 2016/10/7 101.86 2016/10/10 102.43 2016/10/11 102.90 …… …… 计算收盘价MA,应该使用下面的步骤。
1700509679
1700509680
1700509681
1700509682
1700509683
以3天移动平均线指标为例,先建立一个以ROW_NUM为升序伪列的表。
1700509684
1700509685
SET @ROWNUM=1; CREATE TABLE TEMP ASSELECT @ROWNUM:=@ROWNUM+1 AS ROW_NUM,TIME,CLOSEFROM PRICEORDER BY TIME;
1700509686
1700509687
建立一个指标表放置MA数据。
1700509688
1700509689
CREATE TABLE EMA ASSELECT R3.ROW_NUM, R3.TIME,(R1.CLOSE+R2.CLOSE+R3.CLOSE)/3 AS MAFROM( SELECT ROW_NUM, TIME, CLOSE FROM TEMP)AS R1LEFT JOIN( SELECT ROW_NUM, TIME, CLOSE FROM TEMP)AS R2ON R1.ROW_NUM=R2.ROW_NUM-1LEFT JOIN( SELECT ROW_NUM, TIME, CLOSE FROM TEMP)AS R3ON R2.ROW_NUM=R3.ROW_NUM-1;
1700509690
1700509691
这样,MA列中就是3天移动平均线的值了。
1700509692
1700509693
同理可以计算任意多天的移动平均线的值,也可以考虑用游标等技术实现。一些技术流分析人员观察短期移动平均线上穿或下穿长期移动平均线的情况,并以此作为入场信号,因为这体现了近期变化的趋势改变,这种方式要比直接观察K线图容易很多。此外,EMA(Exponential Moving Average,指数平滑移动平均线)、MACD(Moving Average Convergence Divergence,指数平滑异同移动平均线)、RSI(Relative Strength Index,相对强弱指标)、BOLL(Bollinger Bands,布林线指标)等指标也是通过对K线图上价格数据的统计计算得到的,对分析价格数据有很大的辅助作用。这些引入的指标给人们提供了更多关于市场价格的认知维度,虽然它与原始的K线图价格维度不是正交的,但同样带来了信息。分析师们会通过这些新加入的维度,以及已有K线图上开盘价、高价、低价、收盘价的数值,进行有关是否到达支撑位置、是否形成有效突破等市场情况的判断。现在你不会觉得这些简单的SQL语句没有档次了吧?
1700509694
[
上一页 ]
[ :1.700509645e+09 ]
[
下一页 ]