股票指标-强弱指标(Relative Strength Index)

股票指标的强弱指标Relative Strength Index-RSI,相对强弱指数的理论认为,在一个正常的股市中,只有多空双方的力量取得均衡,股价才能稳定。

计算方法:

RSI = 100 - 100 /(1+RS)(1)
RS = N日内收市价上涨幅度总和 / N日内收市价下跌幅度总和(2)
公式中的RS又称为相对强弱值,公式(1)把强弱的变化幅度限定 在0~100之间。

缺省时,系统在副图上绘制三条线,分别为6日线RSI1,12日线RSI2,24日线RSI3。RSI反应了股价变动的四个因素:上涨的天数、下跌的天数、上涨的幅度、下跌的幅度。它对股价的四个构成要素都加以考虑, 所以在股价预测方面其准确度较为可信。
根据正态分布理论, 随机变数在靠近中心数值附近区域出现的机会最多, 离中心数值越远, 出现的机会就越小。
在股市的长期发展过程中,绝大多数时间里相对强弱指数
的变化范围介于30和70之间,其中又以40和60之间的机会最多,超过80或者低于20的机会较少。而出现机会最少的是高于90及低于10。

计算案例1:

相对强弱指标RSI的计算公式有两种
  其一:
  假设A为N日内收盘价的正数之和,B为N日内收盘价的负数之和乘以(—1)
  这样,A和B均为正,将A、B代入RSI计算公式,则
  RSI(N)=A÷(A+B)×100
  其二:
  RS(相对强度)=N日内收盘价涨数和之均值÷N日内收盘价跌数和之均值
  RSI(相对强弱指标)=100-100÷(1+RS)
  这两个公式虽然有些不同,但计算的结果一样。
  以14日RSI指标为例,从当起算,倒推包括当日在内的15个收盘价,以每一日的收盘价减去上一日的收盘价,得到14个数值,这些数值有正有负。这样,RSI指标的计算公式具体如下:
  A=14个数字中正数之和
  B=14个数字中负数之和乘以(—1)
  RSI(14)=A÷(A+B)×100
  式中:A为14日中股价向上波动的大小
  B为14日中股价向下波动的大小
  A+B为股价总的波动大小
  RSI的计算公式实际上就是反映了某一阶段价格上涨所产生的波动占总的波动的百分比率,百分比越大,强势越明显;百分比越小,弱势越明显。RSI的取值介于0—100之间。在计算出某一日的RSI值以后,可采用平滑运算法计算以后的RSI值,根据RSI值在坐标图上连成的曲线,即为RSI线。
  以日为计算周期为例,计算RSI值一般是以5日、10日、14日为一周期。另外也有以6日、12日、24日为计算周期。一般而言,若采用的周期的日数短,RSI指标反应可能比较敏感;日数较长,可能反应迟钝。

计算案例2:

强弱指标的计算公式如下:
RSI=100-[100/(1+RS)]
其中 RS=14天内收市价上涨数之和的平均值/14天内收市价下跌数之和的平均值
举例说明:
如果最近14天涨跌情形是:
第一天升2元,第二天跌2元,第三至第五天各升3元;第六天跌4元 第七天升2元,第八天跌5元;第九天跌6元,第十至十二天各升1元;第十三至十四天各跌3元。
那么,计算RSI的步骤如下:
(一)将14天上升的数目相加,除以14,上例中总共上升16元除以14得1.143(精确到小数点后三位);
(二)将14天下跌的数目相加,除以14,上例中总共下跌23元除以14得1.643(精确到小数点后三位);
(三)求出相对强度RS,即RS=1.143/1.643=0.696%(精确到小数点后三位);
(四)1+RS=1+0.696=1.696;
(五)以100除以1+RS,即100/1.696=58.962;
(六)100-58.962=41.038。
结果14天的强弱指标RS1为41.038。
不同日期的14天RSI值当然是不同的,连接不同的点,即成RSI的轨迹。

应用法则:

1、6日RSI值高于85, 市场处于超买状态;6日RSI低于15,市场处于超卖状态。在85附近出现M头可以卖出,15附近出现W底可以买进。
2、RSI在50以下为弱势市场,50以上为强势市场。
3、RSI在50以上的准确性较高。
4、盘整时, RSI一底比一底高,表示多头强势,后市可能再涨一段,反之一底比一底低是卖出信号。
5、若股价尚在盘整阶段,而 RSI已整理完成,则价位将随之突破整理区。
6、当 RSI 与股价出现背离时,一般为转势的信号。代表着大势反转,此时应选择正确的买卖时机。结合快速与慢速两条RSI线来确定买卖时机:把6天和12天RSI结合起来使用,当图形上6日RSI线向上突破12日RSI时,即为买进的信号。当6日RSI线向下跌破12日RSI,即为卖出信号。尤其当RSI处于低位30以下发出的买入信号与高位70以上发出的卖出信号极为可靠。
7、RSI图形之反压线(下降趋势线)呈现15度至30度时,最具反压意义,如果反压线的角度太陡,很快地会被突破,失去反压之意义。相反,RSI图形之支撑线(上升趋势线)呈现负15度至负30度时,最具支撑意义,如果支撑线的角度太陡,将会很容易地被突破,失去支撑之意义

oozie常用脚本,取消任务,死锁等

1.常用脚本

#校验配置文件
oozie validate -oozie http://path/to/oozie:11000/oozie /export/servers/oozie/test/coordinator.xml
#运行job
oozie job -oozie http://path/to/oozie:11000/oozie -config /export/servers/oozie/test/coordinator.properties -run
#查看信息
oozie job -oozie http://path/to/oozie:11000/oozie -info 00000**-**-oozie-demo-C
#查看日志
oozie job -oozie http://path/to/oozie:11000/oozie -log 00000**-**--oozie-demo-C
#Kill任务
oozie job -oozie http://path/to/oozie:11000/oozie -kill 00000**-**--oozie-demo-C
#查看所有普通任务
oozie  jobs
oozie jobs -oozie http://path/to/oozie:11000/oozie
#查看定时任务
oozie jobs -jobtype coordinator -oozie http:/path/to/oozie:11000/oozie
oozie jobs -oozie http://path/to/oozie:11000/oozie -jobtype coordinator

2.启停oozie任务

启动任务 java代码
oozie job http://path/to/oozie:11000/oozie -config job.properties -run
停止任务
oozie job http://path/to/oozie:11000/oozie -kill jobid
注意在停止任务的时候可能会出现权限问题,需要修改oozie-site.xml文件
hadoop.proxyuser.oozie.groups *
hadoop.proxyuser.oozie.hosts *
oozie.server.ProxyUserSever.proxyuser.hadoop.hosts *
oozie.server.ProxyUserSever.proxyuser.hadoop.groups *

3.Oozie任务死锁解决方案

产生死锁的必要条件就是任务会产生子任务,而Ooize的机制恰好是这样的:Oozie拉起一个YARN应用的机制是先拉起一个MapReduce任务(称为oozie launcher任务),然后该MR任务拉起真正的任务(文章刚开始提到的那些任务)。举个死锁的例子:某一时刻我们通过Oozie提交了n个Spark任务(通过Oozie的Spark Action或Shell Action),这样Oozie会向YARN提交n个MapReduce任务(oozie launcher),假设m(m≤n)个MR任务获得了资源并且创建了spark任务,但此时队列内的资源都被这m个MR任务占用了,所以spark任务一直在等待资源,而那m个MR任务却在等待spark任务完成返回,这样便产生了死锁。

4.借助hue,启停oozie

实景案例:在实际应用中,尤其是自建大数据集群的情况下,一般情况下会结合hue + oozie来实现集群的任务日常调取;但是hue上面的schedule中没有正在运行的任务,而每个周期结点workflow中一直有任务在运行,我们想要停止某个任务怎么办?

hue+oozie 日常任务调度界面

解决方案:点击workflows, 找到某个固定周期运行的任务,点击任务的,进入到任务的详情页面,点击详情页面的上一级任务id,如下图

oozie workflows

进入到调度任务的详情页面后,会直接调转到schedules页面,如下图;kill掉任务即可停止固定周期的任务

Hive之列转行,行转列

hive sql 处理数据的时候经常会有行转列,列转行的需求。废话不多说,上代码。

hive> select * from test limit 10;
OK
test.user_id    test.order_id
104399    1715131
104399    2105395
104399    1758844
104399    981085
104399    2444143
104399    1458638
104399    968412
104400    1609001
104400    2986088
104400    1795054

列传行–> 把相同user_id的order_id按照逗号转为一行

select user_id,
concat_ws(',',collect_list(order_id)) as order_value 
from test
group by user_id
limit 10;

//结果(简写)
user_id    order_value
104399    1715131,2105395,1758844,981085,2444143

说明:

使用函数:concat_ws(‘,’,collect_set(column))  ;collect_list 不去重,collect_set 去重。 column的数据类型要求是string

行转列 –> 把一行的数据按某个分隔符分割后形成多行

测试数据如下:

hive> select * from test;
OK
test.user_id    test.order_value
104408    2909888,2662805,2922438,674972,2877863,190237
104407    2982655,814964,1484250,2323912,2689723,2034331,1692373,677498,156562,2862492,338128
104406    1463273,2351480,1958037,2606570,3226561,3239512,990271,1436056,2262338,2858678
104405    153023,2076625,1734614,2796812,1633995,2298856,2833641,3286778,2402946,2944051,181577,464232
104404    1815641,108556,3110738,2536910,1977293,424564
104403    253936,2917434,2345879,235401,2268252,2149562,2910478,375109,932923,1989353
104402    3373196,1908678,291757,1603657,1807247,573497,1050134,3402420
104401    814760,213922,2008045,3305934,2130994,1602245,419609,2502539,3040058,2828163,3063469
104400    1609001,2986088,1795054,429550,1812893
104399    1715131,2105395,1758844,981085,2444143,1458638,968412
Time taken: 0.065 seconds, Fetched: 10 row(s)

将order_value的每条记录切割为单元素

select user_id,order_value,order_id
from test
lateral view explode(split(order_value,',')) num as order_id
limit 10;

//结果
user_id    order_value    order_id
104408    2909888,2662805,2922438,674972,2877863,190237    2909888
104408    2909888,2662805,2922438,674972,2877863,190237    2662805
104408    2909888,2662805,2922438,674972,2877863,190237    2922438
104408    2909888,2662805,2922438,674972,2877863,190237    674972
104408    2909888,2662805,2922438,674972,2877863,190237    2877863
104408    2909888,2662805,2922438,674972,2877863,190237    190237
104407    2982655,814964,1484250,2323912,2689723,2034331,1692373,677498,156562,2862492,338128    2982655
104407    2982655,814964,1484250,2323912,2689723,2034331,1692373,677498,156562,2862492,338128    814964
104407    2982655,814964,1484250,2323912,2689723,2034331,1692373,677498,156562,2862492,338128    1484250
104407    2982655,814964,1484250,2323912,2689723,2034331,1692373,677498,156562,2862492,338128    2323912
Time taken: 0.096 seconds, Fetched: 10 row(s)