国信证券学习系列(1)

        软件不错,满足了我对股票,期货,期权的全部要求。而且数据可以提供下载,简直没话说了。

        数据清洗问题,我其实很早以前就在思考这个问题,回测,到底在测什么?什么样的数据可以用来回测?什么样的回测才是好的回测,才是可以拿来实盘的?说什么tick回测更精准,我到哪去找?我交易也没指望那么高频率,误差出现,我能hold住就行。

不管了,就这样,默认他的数据有用,直接上来干吧!

        先做多因子选股策略:

        择时函数:

def signal(ContextInfo):buy = {i:0 for i in ContextInfo.s}sell = {i:0 for i in ContextInfo.s}data_high = ContextInfo.get_history_data(22,'1d','high',3)data_high_pre = ContextInfo.get_history_data(2,'1d','high',3)data_close60 = ContextInfo.get_history_data(62,'1d','close',3)#print data_high#print data_close#print data_close60
#选择买入点for k in ContextInfo.s:if k in data_close60:if len(data_high_pre[k]) == 2 and len(data_high[k]) == 22 and len(data_close60[k]) == 62:if data_high_pre[k][-2] > max(data_high[k][:-2]):buy[k] = 1           #超过20日最高价,加入买入备选elif data_high_pre[k][-2] < np.mean(data_close60[k][:-2]):sell[k] = 1           #低于60日均线,加入卖出备选#print buy#print sellreturn buy,sell           #买入卖出备选

获取数据排序 

for k in list(buys.keys()):if buys[k] == 1:
#找因子rank1[k] = ext_data_rank('atr',k[-2:]+k[0:6],0,ContextInfo)rank2[k] = ext_data_rank('adtm',k[-2:]+k[0:6],0,ContextInfo)#print rank1[k], rank2[k]rank_total[k] = 0.5 * rank1[k]- 0.5 * rank2[k]    #因子的权重需要人为设置,此处取了0.5print (1111111, rank1[k])

策略代码

#coding:gbk
"""
回测模型示例(非实盘交易策略)
#HS300日线下运行,20个交易日进行 一次调仓,每次买入在买入备选中因子评分前10的股票,每支股票各分配当前可用资金的10%(权重可调整)
#扩展数据需要在补完HS300成分股数据之后生成,本模型中扩展数据暂时使用VBA指标ATR和ADTM生成,命名为atr和adtm
"""
import pandas as pd
import numpy as np
import time
import datetime
#对所有股票进行择时交易
def signal(ContextInfo):buy = {i:0 for i in ContextInfo.s}sell = {i:0 for i in ContextInfo.s}data_high = ContextInfo.get_history_data(22,'1d','high',3)data_high_pre = ContextInfo.get_history_data(2,'1d','high',3)data_close60 = ContextInfo.get_history_data(62,'1d','close',3)#print data_high#print data_close#print data_close60for k in ContextInfo.s:if k in data_close60:if len(data_high_pre[k]) == 2 and len(data_high[k]) == 22 and len(data_close60[k]) == 62:if data_high_pre[k][-2] > max(data_high[k][:-2]):buy[k] = 1           #超过20日最高价,加入买入备选elif data_high_pre[k][-2] < np.mean(data_close60[k][:-2]):sell[k] = 1           #低于60日均线,加入卖出备选#print buy#print sellreturn buy,sell           #买入卖出备选def init(ContextInfo):ContextInfo.s = ContextInfo.get_sector('000300.SH')ContextInfo.set_universe(ContextInfo.s)ContextInfo.day = 0ContextInfo.holdings = {i:0 for i in ContextInfo.s}ContextInfo.weight = [0.1]*10         #设置资金分配权重ContextInfo.buypoint = {}ContextInfo.money = ContextInfo.capitalContextInfo.profit = 0ContextInfo.accountID='testS'
#获取发出买入信号的股票,进行因子评级
def handlebar(ContextInfo):rank1 = {}rank2 = {}rank_total = {}tmp_stock = {}d = ContextInfo.barposprice = ContextInfo.get_history_data(1,'1d','open',3)if d > 60 and d % 20 == 0:               #每月一调仓nowDate = timetag_to_datetime(ContextInfo.get_bar_timetag(d),'%Y%m%d')print(nowDate)buys, sells = signal(ContextInfo)order = {}for k in list(buys.keys()):if buys[k] == 1:rank1[k] = ext_data_rank('atr',k[-2:]+k[0:6],0,ContextInfo)rank2[k] = ext_data_rank('adtm',k[-2:]+k[0:6],0,ContextInfo)#print rank1[k], rank2[k]rank_total[k] = 0.5 * rank1[k]- 0.5 * rank2[k]           #因子的权重需要人为设置,此处取了0.5和-0.5print (1111111, rank1[k])tmp = sorted(list(rank_total.items()), key = lambda item:item[1])#print tmpif len(tmp) >= 10:tmp_stock = {i[0] for i in tmp[:10]}else:tmp_stock = {i[0] for i in tmp}                              #买入备选中若超过10只股票则选10支,不足10支则全选for k in list(buys.keys()):if k not in tmp_stock:buys[k] = 0if tmp_stock:print('stock pool:',tmp_stock)for k in ContextInfo.s:if ContextInfo.holdings[k] > 0 and sells[k] == 1:print('ready to sell')order_shares(k,-ContextInfo.holdings[k]*100,'fix',price[k][-1],ContextInfo,ContextInfo.accountID)ContextInfo.money += price[k][-1] * ContextInfo.holdings[k] * 100 - 0.0003*ContextInfo.holdings[k]*100*price[k][-1]                  #手续费按万三设定ContextInfo.profit += (price[k][-1]-ContextInfo.buypoint[k]) * ContextInfo.holdings[k] * 100 - 0.0003*ContextInfo.holdings[k]*100*price[k][-1]#print price[k][-1]print(k)#print ContextInfo.moneyContextInfo.holdings[k] = 0ContextInfo.money_distribution = {k:i*ContextInfo.money for (k,i) in zip(tmp_stock,ContextInfo.weight)}for k in tmp_stock:if ContextInfo.holdings[k] == 0 and buys[k] == 1:print('ready to buy')order[k] = int(ContextInfo.money_distribution[k]/(price[k][-1]))/100order_shares(k,order[k]*100,'fix',price[k][-1],ContextInfo,ContextInfo.accountID)ContextInfo.buypoint[k] = price[k][-1]ContextInfo.money -= price[k][-1] * order[k] * 100 - 0.0003*order[k]*100*price[k][-1]ContextInfo.profit -= 0.0003*order[k]*100*price[k][-1]print(k)ContextInfo.holdings[k] = order[k]print(ContextInfo.money,ContextInfo.profit,ContextInfo.capital)profit = ContextInfo.profit/ContextInfo.capitalif not ContextInfo.do_back_test:ContextInfo.paint('profit_ratio', profit, -1, 0)

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

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

相关文章

JNA—JNI终结者

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1.介绍 给大家介绍一个最新的访问本机代码的Java框架—JNA。 JNA(Java Native Access)框架是一个开源的Java框架&#xff0c;是SUN公司…

FIFO存储器

FIFO( First Input First Output)简单说就是指先进先出。由于微电子技术的飞速发展&#xff0c;新一代FIFO芯片容量越来越大&#xff0c;体积越来越小&#xff0c;价格越来越便宜。作为一种新型大规模集成电路&#xff0c;FIFO芯片以其灵活、方便、高效的特性&#xff0c;逐渐在…

通过8个技巧让你成为一个超强的Linux终端用户

本文由 极客范 - minejo 翻译自 Chris Hoffman。欢迎加入极客翻译小组&#xff0c;同我们一道翻译与分享。转载请参见文章末尾处的要求。使用Linux终端不仅仅是只输入命令。学习这些基本的技巧&#xff0c;你就会逐渐掌握Bash shell&#xff0c;这个在大多数Linux发行版上默认…

国信证券学习系列(2)

获取指数池&#xff1a; def init(ContextInfo):#设置股票池stock300 ContextInfo.get_stock_list_in_sector(沪深300)ContextInfo.stock300_weight {}stock300_symbol []stock300_weightlist [] ContextInfo.index_code ContextInfo.stockcode"."ContextInfo.m…

旅游服务商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的数据集合中同时寻…