国信证券学习系列(2)

获取指数池:

def init(ContextInfo):#设置股票池stock300 =ContextInfo.get_stock_list_in_sector('沪深300')ContextInfo.stock300_weight = {}stock300_symbol = []stock300_weightlist = [] ContextInfo.index_code = ContextInfo.stockcode+"."+ContextInfo.market#重新制作股票池for key in stock300:# 保留权重大于0.35%的成份股if (ContextInfo.get_weight_in_index(ContextInfo.index_code, key) / 100) > 0.0035:stock300_symbol.append(key)ContextInfo.stock300_weight[key] = ContextInfo.get_weight_in_index(ContextInfo.index_code, key) / 100stock300_weightlist.append(ContextInfo.get_weight_in_index(ContextInfo.index_code, key) / 100)print('选择的成分股权重总和为: ', np.sum(stock300_weightlist)) ContextInfo.set_universe(stock300_symbol)#print ContextInfo.stock300_weight# 资产配置的初始权重,配比为0.6-0.8-1.0ContextInfo.ratio = 0.8#账号ContextInfo.accountid = "testS"

择时买卖:

                # 获取过去5天的价格数据,若连续上涨则为强势股,调仓到(权重+0.2)的仓位if all(diff>0) and holdings[stock] < buytarget_num:buy_num = buytarget_num - holdings[stock]order_shares(stock,buy_num*100,'fix',pre_close,ContextInfo,ContextInfo.accountid)buy_sum += 1#print "买入",stock,buy_num# 获取过去5天的价格数据,若连续下跌则为弱势股,调仓到(权重-0.2)的仓位elif all(diff<0) and holdings[stock] > selltarget_num:sell_num = holdings[stock] - selltarget_numorder_shares(stock,(-1.0)*sell_num*100,'fix',pre_close,ContextInfo,ContextInfo.accountid)sell_sum += 1#print "卖出",stock,sell_num

策略代码: 

#coding:gbk
'''
回测模型示例(非实盘交易策略)本策略以0.8为初始权重跟踪指数标的沪深300中权重大于0.35%的成份股.
个股所占的百分比为(0.8*成份股权重)*100%.然后根据个股是否:
1.连续上涨5天 2.连续下跌5天
来判定个股是否为强势股/弱势股,并对其把权重由0.8调至1.0或0.6'''
#在指数(例如HS300)日线下运行
import numpy as npdef init(ContextInfo):#设置股票池stock300 =ContextInfo.get_stock_list_in_sector('沪深300')ContextInfo.stock300_weight = {}stock300_symbol = []stock300_weightlist = [] ContextInfo.index_code = ContextInfo.stockcode+"."+ContextInfo.marketfor key in stock300:# 保留权重大于0.35%的成份股if (ContextInfo.get_weight_in_index(ContextInfo.index_code, key) / 100) > 0.0035:stock300_symbol.append(key)ContextInfo.stock300_weight[key] = ContextInfo.get_weight_in_index(ContextInfo.index_code, key) / 100stock300_weightlist.append(ContextInfo.get_weight_in_index(ContextInfo.index_code, key) / 100)print('选择的成分股权重总和为: ', np.sum(stock300_weightlist)) ContextInfo.set_universe(stock300_symbol)#print ContextInfo.stock300_weight# 资产配置的初始权重,配比为0.6-0.8-1.0ContextInfo.ratio = 0.8#账号ContextInfo.accountid = "testS"def handlebar(ContextInfo):buy_sum = 0sell_sum = 0index  = ContextInfo.barposrealtimetag = ContextInfo.get_bar_timetag(index)print(timetag_to_datetime(realtimetag, '%Y%m%d %H:%M:%S'))dict_close=ContextInfo.get_history_data(7,'1d','close',3)print('测试1',ContextInfo.get_history_data(7,'1d','close'))print('测试',ContextInfo.get_history_data(7,'1d','close',3))print('测试',ContextInfo.get_history_data(7,'1d','close',2))print('测试',ContextInfo.get_history_data(7,'1d','close',1))#持仓市值holdvalue = 0#持仓holdings=get_holdings(ContextInfo.accountid,"STOCK")#剩余资金surpluscapital=get_avaliablecost(ContextInfo.accountid,"STOCK")for stock in ContextInfo.stock300_weight:if  stock  in holdings:if len(dict_close[stock]) == 7:holdvalue += dict_close[stock][-2] * holdings[stock]for stock in ContextInfo.stock300_weight:# 若没有仓位则按照初始权重开仓if  stock not in holdings and stock in list(dict_close.keys()):if len(dict_close[stock]) == 7:pre_close = dict_close[stock][-1]buy_num = int(ContextInfo.stock300_weight[stock] * ( holdvalue + surpluscapital ) *ContextInfo.ratio / pre_close /100)order_shares(stock,buy_num*100,'fix',pre_close,ContextInfo,ContextInfo.accountid)buy_sum += 1#print "买入",stock,buy_numelif stock in list(dict_close.keys()):if len(dict_close[stock]) == 7:diff = np.array(dict_close[stock][1:6]) - np.array(dict_close[stock][:-2])pre_close = dict_close[stock][-1]buytarget_num = int(ContextInfo.stock300_weight[stock] * ( holdvalue + surpluscapital ) * (ContextInfo.ratio + 0.2)/ pre_close /100)selltarget_num = int(ContextInfo.stock300_weight[stock] * ( holdvalue + surpluscapital ) *(ContextInfo.ratio - 0.2)/ pre_close /100)# 获取过去5天的价格数据,若连续上涨则为强势股,调仓到(权重+0.2)的仓位if all(diff>0) and holdings[stock] < buytarget_num:buy_num = buytarget_num - holdings[stock]order_shares(stock,buy_num*100,'fix',pre_close,ContextInfo,ContextInfo.accountid)buy_sum += 1#print "买入",stock,buy_num# 获取过去5天的价格数据,若连续下跌则为弱势股,调仓到(权重-0.2)的仓位elif all(diff<0) and holdings[stock] > selltarget_num:sell_num = holdings[stock] - selltarget_numorder_shares(stock,(-1.0)*sell_num*100,'fix',pre_close,ContextInfo,ContextInfo.accountid)sell_sum += 1#print "卖出",stock,sell_numif not ContextInfo.do_back_test:ContextInfo.paint('buy_num', buy_sum, -1, 0)ContextInfo.paint('sell_num', sell_sum, -1, 0)def get_holdings(accountid,datatype):holdinglist={}resultlist=get_trade_detail_data(accountid,datatype,"POSITION")for obj in resultlist:holdinglist[obj.m_strInstrumentID+"."+obj.m_strExchangeID]=obj.m_nVolume/100return holdinglistdef get_avaliablecost(accountid,datatype):result=0resultlist=get_trade_detail_data(accountid,datatype,"ACCOUNT")for obj in resultlist:result=obj.m_dAvailablereturn result

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

旅游服务商Bikego完成A轮融资,共建创投、马蜂窝投资

2月26日消息&#xff0c;近日Bikego宣布完成A轮融资&#xff0c;共建创投、北京马蜂窝之旅国际旅行社投资。目前金额尚未公开。 bikego领趣旅行成立于2016年&#xff0c;是一家目的地日游服务运营商。从内容切入&#xff0c;提供国内自由行客户的白天玩法解决方案&#xff0c;…

python-flask-1

https://askubuntu.com/questions/244641/how-to-set-up-and-use-a-virtual-python-environment-in-ubuntu 1. virtualenv安装 sudo apt-get install virtualenv sudo apt install virtualenvwrapper echo "source /usr/share/virtualenvwrapper/virtualenvwrapper.sh&quo…

JSch:Java Secure Channel -- java 代码实现 ssh 远程操作

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 JSch 是SSH2的一个纯Java实现。 它允许你连接到一个 sshd 服务器&#xff0c;使用端口转发&#xff0c;X11转发&#xff0c;文件传输等…

国信证券学习系列(3)

日内回转策略&#xff1a;做T策略 择时交易&#xff1a; if date[-8:-3] ! 14:55:if macd > 0 and macd_pre < 0:# 根据MACD>0则开仓,小于0则平仓if avaliable > df.iloc[-1, 0] * ContextInfo.Lots * 100:order_shares(ContextInfo.get_universe()[0], ContextIn…

时序数据库连载系列: 时序数据库一哥InfluxDB之存储机制解析

2019独角兽企业重金招聘Python工程师标准>>> InfluxDB 的存储机制解析 本文介绍了InfluxDB对于时序数据的存储/索引的设计。由于InfluxDB的集群版已在0.12版就不再开源&#xff0c;因此如无特殊说明&#xff0c;本文的介绍对象都是指 InfluxDB 单机版 1. InfluxDB 的…

如何在Linux上提高文本的搜索效率

本文由 极客范 - minejo 翻译自 Xmodulo。欢迎加入极客翻译小组&#xff0c;同我们一道翻译与分享。转载请参见文章末尾处的要求。对于系统管理员或程序员来说&#xff0c;当需要在复杂配置的目录中或者在大型源码树中搜寻特定的文本或模式时&#xff0c;grep类型的工具大概是…

Spring Boot 10:处理Json数据中的null值

Jackson版&#xff1a; /*** Jackson 配置类 对Json数据进行特殊处理** Author YangXuyue* Date 2019/04/02 07:12*/ Configuration public class JacksonConfig {/*** 配置Jackson** param builder* return* Author YangXuyue* Date 2019/04/02 07:14*/BeanPrimaryConditional…

国信证券学习系列(4)

机器学习篇章&#xff0c;本章不过时脚本小子&#xff0c;机器学习最核心的是机器&#xff0c;是模型。 学习&#xff0c;无非就是找些有的没的因子扔进去&#xff0c;但说实话&#xff0c;机器学习&#xff0c;太过容易过拟合&#xff0c;容易无效化。回测好看的一笔&#xf…

JSch - Java Secure Channel : java 代码实现服务器远程操作

一、前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 JSch是SSH2的纯Java实现 。 JSch允许您连接到sshd服务器并使用端口转发&#xff0c;X11转发&#xff0c;文件传输等&#xff0…

前嗅ForeSpider教程:数据建表

今天&#xff0c;小编为大家带来的教程是&#xff1a;如何在前嗅ForeSpider中&#xff0c;进行数据建表操作及各注意事项。主要内容包括&#xff1a;快速建表&#xff0c;自由建表&#xff0c;字段参数&#xff0c;数据表的创建&#xff0c;关联与删除&#xff0c;以及表单变更…

世纪大争论:Linux还是GNU/Linux?

本文由 极客范 - 爱开源的贡献开源社区 翻译自 Chris Hoffman。欢迎加入极客翻译小组&#xff0c;同我们一道翻译与分享。转载请参见文章末尾处的要求。我们在网上已经习惯用“Linux”来称呼Linux操作系统了&#xff0c;然而&#xff0c;偶尔也用“GNU/Linux”来称呼和指代同…

PyTorch Softmax

PyTorch provides 2 kinds of Softmax class. The one is applying softmax along a certain dimension. The other is do softmax on a spatial matrix sized in B, C, H, W. But it seems like some problems existing in Softmax2d. : ( 转载于:https://www.cnblogs.com/hiz…

国信证券学习系列(5)

网格策略&#xff0c;号称胜率100%的策略&#xff0c;只要扛得住回撤&#xff0c;怎么说呢&#xff0c;它包含了最简单的思想&#xff0c;大道至简&#xff0c;真的是没有什么复杂的&#xff0c;原理清晰&#xff0c;思路简单。可以明确知道我挣的是那笔钱&#xff0c;为什么获…

promise

## 前言 今天来分享下promise的用法&#xff0c;es6伟大发明之一&#xff0c;当初我学习的时候也是蛮头大的&#xff0c;不知道为啥&#xff0c;整个脑子就是&#xff0c;我在哪&#xff0c;我要干啥的懵圈&#xff0c;后面认真学习之后&#xff0c;觉得真是十分好用&#xff0…

计算机集群 解说

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 计算机集群简称集群是一种计算机系统&#xff0c;它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。 在某…

同时寻找最大数和最小数的最优算法 第二大数

我们知道&#xff0c;在一个容量为n的数据集合中寻找一个最大数&#xff0c;不管用什么样的比较算法&#xff0c;至少要比较n-1次&#xff0c;就算是用竞标赛排序也得比较n-1次&#xff0c;否则你找到的就不能保证是最大的数。那么&#xff0c;在一个容量为n的数据集合中同时寻…

浅谈mpvue项目目录和文件结构

2019独角兽企业重金招聘Python工程师标准>>> 在Visual Studio Code里面打开项目文件夹&#xff0c;我们可以看到类似如下的文件结构&#xff1a; 1、package.json文件 package.json是项目的主配置文件&#xff0c;里面包含了mpvue项目的基本描述信息、项目所依赖的各…

[AHOI2009]最小割(最大流+tarjan)

继续填坑了&#xff0c;啦啦啦 这道题本来是准备枚举每个边&#xff0c;暂时去除它&#xff0c;但发现时间会爆炸的 于是决定另辟蹊径 于是这篇题解就应运而生 首先还是网络流跑一边 毕竟题目叫最小割嘛&#xff0c;给个面子 然后跑一边tarjan对满流的边处理掉&#xff0c;即不…

进程间通信---信号

什么是信号&#xff1f; 】 信号处理流程 信号类型 发送信号的函数 参数sig&#xff1a;代表 信号 接收信号的函数 参数 handle 的处理方式有几种&#xff1f; 实例代码 实例逻辑 图中的等待操作使用&#xff1a;pause&#xff08;&#xff09;函数 代码 在这里插入代码片…

大白话解说,半分钟就懂 --- 分布式与集群是什么 ? 区别是什么?

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 PS&#xff1a;这篇文章算是笔记&#xff0c;仅部分文字是原创&#xff0c;相当内容只是收集、整理、提炼、总结别人写的。 没有标为原创…