相对强弱指数RSI是根据一定时期内上涨点数和涨跌点数之和的比率制作出的一种技术曲线。能够反映出市场在一定时期内的景气程度。由威尔斯.威尔德(Welles Wilder)最早应用于期货买卖,后来人们发现在众多的图表技术分析中,强弱指标的理论和实践极其适合于股票市场的短线投资,于是被用于股票升跌的测量和分析中。该分析指标的设计是以三条线来反映价格走势的强弱,这种图形可以为投资者提供操作依据,非常适合做短线差价操作。
RSI的原理简单来说是以数字计算的方法求出买卖双方的力量对比,譬如有100个人面对一件商品,如果50个人以上要买,竞相抬价,商品价格必涨。相反,如果50个人以上争着卖出,价格自然下跌。
强弱指标理论认为,任何市价的大涨或大跌,均在0-100之间变动,根据常态分配,认为RSI值多在30-70之间变动,通常80甚至90时被认为市场已到达超买状态,至此市场价格自然会回落调整。当价格低跌至30以下即被认为是超卖状态,市价将出现反弹回升。
公式代码
RSI:= SMA(MAX(Close-LastClose,0),N,1)/SMA(ABS(Close-LastClose),N,1)*100
五种用途
1) 顶点及底点 70 及30 通常为超买及超卖讯号。
2) 分歧(或背离), 当市况创下新高 ( 低 ) 但RSI 并不处于新高(低),这通常表明市场将出现反转。
3) 支撑及阻力 ,RSI 能显示支撑及阻力位,有时比价格图更能清晰反应支支撑及阻力。
4) RSI指标 价格趋势形态 与价格图相比,价格趋势形态如双顶及头肩在 RSI 上表现更清晰
5) 峰回路转 当 RSI 突破 ( 超过前高或低点 ) 时,这可能表示价格将有突变与其它指标相同, RSI 需与其它指标配合使用,不能单独产生讯号,价格的确认是决定入市价位的关键
 
缺点
1.当发生单边行情时,rsi指标在高档或低档时会有钝化的现象,因此会发生过早卖出或买进。
2.RSI没有明显规则性的买进或卖出信号,当指针在高位时,仅能说明情行反转的可能性增高,但并没有办法进一步明确地指出时点。
3.一般而言,RSI的背离信号通常是事后验证,事前很难看出,RSI指标与股价的"背离"走势常常会发生滞后现象;
一方面,市场行情已经出现反转,但是该指标的"背离"信号却可能滞后出现;另一方面,在各种随机因素的影响下,有时"背离"现象出现数次后行情才真正开始反转,同时在研判指标"背离"现象时,真正反转所对应的"背离"出现次数并无定论,一次、两次或三次背离都有出现趋势变化的可能,在实际操作中较难确认。
4.由于RSI是一种比率的指标,因此在趋势分析的能力上会较弱。
5.应该看到RSI指标的时间参数不同,其给出的结果就会不同;
不同的投资者对时间周期的设定有不同的个人偏好,从理论上讲,较短周期的RSI指标虽然比较敏感,但快速震荡的次数较多,可靠性较差;较长周期的RSI指标尽管信号可靠,但指标的敏感性不够,反应迟缓,因而经常出现错过买卖良机的现象。
此外,由于RSI是通过收盘价计算的,如果当天行情的波幅很大,上下影线较长时,RSI就不可能较为准确反映此时行情的变化。
6.超买、超卖出现后导致的指标钝化现象容易发出错误的操作信号;
在"牛市"和"熊市"的中间阶段,RSI值升至90以上或降到10以下的情况时有发生,此时指标钝化后会出现模糊的误导信息,若依照该指标操作可能会出现失误,错过盈利机会或较早进入市场而被套牢。
7.当RSI值在50附近波动时该指标往往失去参考价值。
一般而言,RSI值在40到60之间研判的作用并不大。按照RSI的应用原则,当RSI从50以下向上突破50分界线时代表股价已转强;RSI从50以上向下跌破50分界线则代表股价已转弱。但实际情况经常是让投资者一头雾水,股价由强转弱后却不跌,由弱转强后却不涨的现象相当普遍。这是因为在常态下,RSI会在大盘或个股方向不明朗而盘整时,率先整理完毕并出现走强或走弱的现象。
 
 
# Ricequant量化交易平台
# 日期:2013-01-01到 2016-10-04,日回测
# 可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。
import numpy as np
import pandas as pd
from pandas import DataFrame,Series # 在这部分编写技术分析模块
def RSI(N1=6, N2=12, N3=24):
"""
RSI 相对强弱指标
"""
LC = REF(CLOSE, 1)
RSI1 = SMA(MAX(CLOSE - LC, 0), N1, 1) / SMA(ABS(CLOSE - LC), N1, 1) * 100
RSI2 = SMA(MAX(CLOSE - LC, 0), N2, 1) / SMA(ABS(CLOSE - LC), N2, 1) * 100
RSI3 = SMA(MAX(CLOSE - LC, 0), N3, 1) / SMA(ABS(CLOSE - LC), N3, 1) * 100 return RSI1, RSI2, RSI3 # 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。
def init(context):
reg_indicator('RSI', RSI, '1d', win_size=40)
context.buy = []
context.sell = []
context.hold = []
context.s_sell = [] # before_trading此函数会在每天策略交易开始前被调用,当天只会被调用一次
def before_trading(context):
context.buy = []
context.sell = []
context.hold = []
stocks,_ = get_all_stocks(context) for stock in context.portfolio.positions.keys():
RSI1,RSI2,RSI3 = get_indicator(stock, 'RSI')
if RSI1>80 and REF(RSI1,1) > REF(RSI2,1) and RSI1 < RSI2:
context.sell.append(stock)
else:
context.hold.append(stock) for stock in context.s_sell:
if stock not in context.portfolio.positions.keys():
context.s_sell.remove(stock) if len(context.hold) >= 10:
return None for stock in stocks:
RSI1,RSI2,RSI3 = get_indicator(stock, 'RSI')
if RSI1<20 and REF(RSI1,1) < REF(RSI2,1) and RSI1 > RSI2:
context.buy.append(stock)
if stock in context.sell:
context.sell.remove(stock) # 你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新
def handle_bar(context, bar_dict):
for stock in context.sell:
order = order_target_percent(stock,0)
if order.unfilled_quantity != 0:
context.s_sell.append(stock)
for stock in context.s_sell:
order_target_value(stock,0) if len(context.hold)+len(context.buy) == 0:
return None
weight = 1/(len(context.hold)+len(context.buy)) for stock in context.hold:
order_target_percent(stock,weight)
for stock in context.buy:
order_target_percent(stock,weight) # after_trading函数会在每天交易结束后被调用,当天只会被调用一次
def after_trading(context):
pass def get_all_stocks(context):
all_stocks = all_instruments("CS").order_book_id
will_end = []
trade = []
for stock in all_stocks:
ins = instruments(stock)
if ins is None:
pass
else:
start = ins.listed_date
end = ins.de_listed_date
if (start-context.now).days < 0:
if 0< (end - context.now).days <30:
will_end.append(stock)
elif 30 < (end - context.now).days and is_suspended(stock) == False:
trade.append(stock)
#print(len(trade),len(will_end))
return trade,will_end

  

 

震荡指标(一)RSI指标的更多相关文章

  1. 以股票RSI指标为例,学习Python发送邮件功能(含RSI指标确定卖点策略)

    本人之前写过若干“给程序员加财商”的系列文,目的是通过股票案例讲述Python知识点,让大家在学习Python的同时还能掌握相关的股票知识,所谓一举两得. 在之前的系列文里,大家能看到K线,均线,成交 ...

  2. 高频交易算法研发心得--RSI指标及应用

    高频交易算法研发心得--RSI指标及应用 前面文章中我们提到了MA均线(包括EMA,SMA).MACD以及SAR指标,这三类指标存在一个共同特点,即:从固定周期的价格作为判读的指导思想,并将价格进行平 ...

  3. talib 中文文档(八): Momentum Indicator Functions 动量指标

    Momentum Indicator Functions ADX - Average Directional Movement Index 函数名:ADX 名称:平均趋向指数 简介:使用ADX指标,指 ...

  4. 趋势型指标——MACD

    1.简要介绍▪ 计算方法▪ DIFF▪ DEA▪ MACD▪ 构造原理▪ 缺点2.实战技巧3.运用技巧▪ 应用原理▪ 经典用法▪ 实战战法▪ 捕捉卖点▪ 买卖策略▪ 短线实战4.组合指标运用5.一般研 ...

  5. 牛皮市和猴市的好工具和指标:BOLL

    (转贴)布林线BOLL用法 布林线是股市中经常用到的技术指标之一,它反映了股价的波动状况.山版软件指标图中的布林线由三条组成,上边的白线(up)是阻力线,下边的黄线(down)是支撑线,中间的粉红线( ...

  6. 高频交易算法研发心得--WAVT指标(Warensoft交易量趋势指标)算法及应用

    高频交易算法研发心得--WAVT指标(Warensoft交易量趋势指标)算法及应用 注:WAVT指标由Warensoft(王宇)原创. 前面聊了一系列的常见应用指标,包括短线.长线的指标,并且也无耐的 ...

  7. gp指标信息

    RSI: 相对强弱指数,RSI的原理简单来说是以数字计算的方法求出买卖双方的力量对比 强弱指标理论认为,任何市价的大涨或大跌,均在0-100之间变动,根据常态分配 认为RSI值多在30-70之间变动, ...

  8. 用Python语言绘制股市OBV指标效果

    我的新书<基于股票大数据分析的Python入门实战>于近日上架,在这篇博文向大家介绍我的新书:<基于股票大数据分析的Python入门实战>里,介绍了这本书的内容.这里将摘录出部 ...

  9. 高频交易算法研发心得--MACD指标算法及应用

    凤鸾宝帐景非常,尽是泥金巧样妆. 曲曲远山飞翠色:翩翩舞袖映霞裳. 梨花带雨争娇艳:芍药笼烟骋媚妆. 但得妖娆能举动,取回长乐侍君王. [摘自<封神演义>纣王在女娲宫上香时题的诗] 一首定 ...

  10. [Algorithm] 机器学习算法常用指标总结

    考虑一个二分问题,即将实例分成正类(positive)或负类(negative).对一个二分问题来说,会出现四种情况.如果一个实例是正类并且也被 预测成正类,即为真正类(True positive), ...

随机推荐

  1. Linux下apt与dpkg的详解

    apt是一个包管理工具,用于管理Debian和Ubuntu等基于Debian的Linux发行版中的软件包.它是"Advanced Packaging Tool"的缩写,允许用户在系 ...

  2. [clickhouse]同步MySQL

    前言 clickhouse的查询速度非常快,而且兼容大部分MySQL的sql语法,因此一般将clickhouse作为MySQL的读库. 本文提供两种clickhouse同步MySQL的方式 click ...

  3. Linux:通过命令查找日志文件中的某字段

    工作中有用到,做个记录. 1. 查询某字段,显示行号: cat -n file_name|grep '查找字段' [root@ZWZF-CWY-LZY-12 CWY]# cat -n nohup.ou ...

  4. 1Nginx基础及编译安装

    1Nginx基础 1.Nginx概述 Nginx 功能介绍 Nginx(发音为"engine-x")是一个开源的高性能 HTTP和反向代理服务器.它具有以下功能: 1.静态文件服务 ...

  5. Codeforces 1462F The Treasure of The Segments

    题意 给\(n(1\leq n\leq 2*10^5)\)个线段$[l_i,r_i] (1≤l_i≤r_i≤10^9) $,问最少删除几个线段,使得剩下线段中,有至少一个线段与所有线段相交. 分析 对 ...

  6. firefox对webview性能数据监控的模拟

    现在为了降低手机端的开发成本,越来越多的手机应用采用html5在进行开发,这样可以保证一处开发,到处嵌入. 但是这样的手机性能经常会是个瓶颈,因为当体验要求变高时,大多依赖html渲染引擎来对dom数 ...

  7. SQL注入——搜索型

    SQL注入-搜索型 搜索型注入-原理介绍 一些网站为了方便用户查找网站的资源,都对用户提供了搜索的功能,因为是搜索功能,往往是程序员在编写代码时都忽略了对其变量(参数)的过滤,而且这样的漏洞在国内的系 ...

  8. SpringBoot打成jar运行后无法读取resources里的文件

    开发一个word替换功能时,因替换其中的内容功能需要 word 模版,就把 word_replace_tpl.docx 模版文件放到 resources 下 在开发环境中通过下面方法能读取word_r ...

  9. Solution -「NOI 2007」货币兑换

    Description Link. 一共 \(n\) 天,每天可以卖出或者买入两种股票 \(A\) 和 \(B\).这两种股票在第 \(i\) 天的价值为 \(A_i\) 和 \(B_i\). 每天可 ...

  10. Dubbo源码浅析(一)—RPC框架与Dubbo

    一.什么是RPC 1.1 RPC概念 RPC,Remote Procedure Call 即远程过程调用,与之相对的是本地服务调用,即LPC(Local Procedure Call).本地服务调用比 ...