相对强弱指数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. 小白终于解决了在学习Go中不知道Makefile是什么的难题

    如何在Go中使用Makefile 1.Makefile是什么 Makefile是一种构建工具,用于在项目中定义和执行一系列命令.它通常包含了一些规则和目标,用于编译.测试.运行和清理项目. 2.Mak ...

  2. zabbix触发器标签提取监控项子字符串功能实现对应告警恢复

    0 实验环境 zabbix 6.0 1 监控项 1.1 监控项设置 通过zabbix agent自定义监控项,读取某文件内容模拟日志/trap告警,测试获取触发器标签中提取子字符串功能,以及相同标签的 ...

  3. 用户空间协议栈设计和netmap综合指南

    本文分享自华为云社区<用户空间协议栈设计和netmap综合指南,将网络效率提升到新高度>,作者:Lion Long . 协议概念 1.1.七层网络模型和五层网络模型 应用层: 最接近用户的 ...

  4. 6、Spring之基于xml的自动装配

    6.1.场景模拟 6.1.1.创建UserDao接口及实现类 package org.rain.spring.dao; /** * @author liaojy * @date 2023/8/5 - ...

  5. 设置服务账号Service Accounts(sa)的token不挂载到pod

    目录 一.系统环境 二.前言 三.Service Accounts(sa)简介 四.在pod里设置sa的token不挂载到pod 五.在sa里设置sa对应的token不挂载到pod上 六.总结 一.系 ...

  6. Jmeter MD5加密及其运用

    常用的几种加密方式 内置函数__MD5加密 参数说明: String to calculate MD5 hash(必填):要加密的字符串 Name of variable in which to st ...

  7. 《SQL与数据库基础》10. 存储引擎

    目录 存储引擎 MySQL体系结构 存储引擎简介 三种经典存储引擎 InnoDB 逻辑存储结构 MyISAM Memory 区别及特点 存储引擎选择 本文以 MySQL 为例 存储引擎 MySQL体系 ...

  8. RocketMQ 系列(五)高可用与负载均衡

    RocketMQ 系列(五)高可用与负载均衡 RocketMQ 前面系列文章如下: RocketMQ系列(一) 基本介绍 RocketMQ 系列(二) 环境搭建 RocketMQ 系列(三) 集成 S ...

  9. JavaAgent寄生在目标进程中引起的ClassNotFoundException

    今天有解决方案部的小伙伴反映,我公司XWind产品在分析客户应用程序的潜在性能问题时,总是显现诊断任务异常,为了定位问题的根因,我们马上要求解决方案部的小伙伴提供XWind相关的日志,从日志中找到了如 ...

  10. Python并发编程——paramiko远程控制的模块、病毒攻击原理、dll注入、

    文章目录 paramiko模块 作业 攻击原理解析 一.什么是dll 二.为何要有dll 什么是dll注入: 什么时候需要dll注入 dll注入的方法 使用SetWindowsHookEx函数对应用程 ...