震荡指标(一)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指标的更多相关文章
- 以股票RSI指标为例,学习Python发送邮件功能(含RSI指标确定卖点策略)
本人之前写过若干“给程序员加财商”的系列文,目的是通过股票案例讲述Python知识点,让大家在学习Python的同时还能掌握相关的股票知识,所谓一举两得. 在之前的系列文里,大家能看到K线,均线,成交 ...
- 高频交易算法研发心得--RSI指标及应用
高频交易算法研发心得--RSI指标及应用 前面文章中我们提到了MA均线(包括EMA,SMA).MACD以及SAR指标,这三类指标存在一个共同特点,即:从固定周期的价格作为判读的指导思想,并将价格进行平 ...
- talib 中文文档(八): Momentum Indicator Functions 动量指标
Momentum Indicator Functions ADX - Average Directional Movement Index 函数名:ADX 名称:平均趋向指数 简介:使用ADX指标,指 ...
- 趋势型指标——MACD
1.简要介绍▪ 计算方法▪ DIFF▪ DEA▪ MACD▪ 构造原理▪ 缺点2.实战技巧3.运用技巧▪ 应用原理▪ 经典用法▪ 实战战法▪ 捕捉卖点▪ 买卖策略▪ 短线实战4.组合指标运用5.一般研 ...
- 牛皮市和猴市的好工具和指标:BOLL
(转贴)布林线BOLL用法 布林线是股市中经常用到的技术指标之一,它反映了股价的波动状况.山版软件指标图中的布林线由三条组成,上边的白线(up)是阻力线,下边的黄线(down)是支撑线,中间的粉红线( ...
- 高频交易算法研发心得--WAVT指标(Warensoft交易量趋势指标)算法及应用
高频交易算法研发心得--WAVT指标(Warensoft交易量趋势指标)算法及应用 注:WAVT指标由Warensoft(王宇)原创. 前面聊了一系列的常见应用指标,包括短线.长线的指标,并且也无耐的 ...
- gp指标信息
RSI: 相对强弱指数,RSI的原理简单来说是以数字计算的方法求出买卖双方的力量对比 强弱指标理论认为,任何市价的大涨或大跌,均在0-100之间变动,根据常态分配 认为RSI值多在30-70之间变动, ...
- 用Python语言绘制股市OBV指标效果
我的新书<基于股票大数据分析的Python入门实战>于近日上架,在这篇博文向大家介绍我的新书:<基于股票大数据分析的Python入门实战>里,介绍了这本书的内容.这里将摘录出部 ...
- 高频交易算法研发心得--MACD指标算法及应用
凤鸾宝帐景非常,尽是泥金巧样妆. 曲曲远山飞翠色:翩翩舞袖映霞裳. 梨花带雨争娇艳:芍药笼烟骋媚妆. 但得妖娆能举动,取回长乐侍君王. [摘自<封神演义>纣王在女娲宫上香时题的诗] 一首定 ...
- [Algorithm] 机器学习算法常用指标总结
考虑一个二分问题,即将实例分成正类(positive)或负类(negative).对一个二分问题来说,会出现四种情况.如果一个实例是正类并且也被 预测成正类,即为真正类(True positive), ...
随机推荐
- node.js中kafka的封装和高并发消费限流优雅降级以及egg-kafka的封装说明
HI!,你好,我是zane,zanePerfor是一款我开发的一个前端性能监控平台,现在支持web浏览器端和微信小程序端. 我定义为一款完整,高性能,高可用的前端性能监控系统,这是未来会达到的目的,现 ...
- tcpdump抓指定端口/ip的数据包
抓指定端口,这里以7070端口为例 tcpdump -i ens192 port 7070 -s 0 -l -A -w /chris/70.pcap ens192是网卡 抓完ctrl c停止 抓指定 ...
- 一文详解TextBrewer
本文分享自华为云社区<TextBrewer:融合并改进了NLP和CV中的多种知识蒸馏技术.提供便捷快速的知识蒸馏框架.提升模型的推理速度,减少内存占用>,作者:汀丶. TextBrewer ...
- dimp V8:[WARNING]login fail, check your username and password, and check the server status
在进行某个项目的性能测试时,我们选择了达梦8作为使用的数据库.因前期的网络安全问题和考虑到节省成本,我们首先在公司本地服务器上搭建了相应的环境,并生成了用于压力测试的业务数据. 然而,在将数据库迁移到 ...
- 针对sarasa-shuffle.woff2加密字体进行解密
本文针对的是类似于sarasa-shuffle.woff2加密字体的一个研究. 字体加密是使用Unicode编码将其映射到不同的字体显示的一种前端显示加密手段.在反爬虫中能够起到较好的效果,爬虫将只能 ...
- xshell批量新建会话
1,xshell的会话形式就是文件夹和文件,我们只需要修改文件名称即可,但是一个个弄很麻烦,可以利用这个程序来批量新建(程序很烂,但能用) 基于python编写,文件处理 --> 文件下载 提取 ...
- Kafka入门学习
什么是 Kafka Kafka 是由 Linkedin 公司开发的,它是一个分布式的,支持多分区.多副本,基于 Zookeeper 的分布式消息流平台,它同时也是一款开源的基于发布订阅模式的消息引擎系 ...
- 【matplotlib基础】--坐标轴
Matplotlib的坐标轴是用于在绘图中表示数据的位置的工具. 坐标轴是图像中的水平和垂直线,它们通常表示为 x 轴和 y 轴.坐标轴的作用是帮助观察者了解图像中数据的位置和大小,通常标有数字或标签 ...
- ThreadLocal:线程中的全局变量
最近接了一个新需求,业务场景上需要在原有基础上新增2个字段,接口新增参数意味着很多类和方法的逻辑都需要改变,需要先判断是否属于该业务场景,再做对应的逻辑.原本的打算是在入口处新增变量,在操作数据的时候 ...
- zbolg首页-文章内标签调用代码
{if count($lhantItem.Tags)>0}{foreach $lhantItem.Tags as $i => $tag} <a href='{$tag.Url}' t ...