• 小小薯片
    了解作者
  • Python
    开发工具
  • 1KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 2
    下载次数
  • 2019-06-11 07:56
    上传日期
通过设定股票池,本文是设定为沪深300与中证500,根据策略挑选股票,按一定比例买入,本文设置是全股票池的top 1%。 根据设定迭代周期,本文设定的是20个交易日,然后重复上述操作
选股策略.zip
  • 选股策略.txt
    3KB
内容介绍
import numpy as np import pandas as pd start = '2009-01-01' end = '2018-12-31' # 回测结束时间 universe = DynamicUniverse('HS300') + DynamicUniverse('ZZ500') benchmark = 'HS300' # 策略参考标准 freq = 'd' # 策略类型,'d'表示日间策略使用日线回测,'m'表示日内策略使用分钟线回测 refresh_rate = 20 # 调仓频率 accounts = { 'fantasy_account': AccountConfig(account_type='security', capital_base=10000000) } def initialize(context): # 初始化虚拟账户状态 context.signal_generator = SignalGenerator(Signal('ROE'), Signal('PE'), Signal('OperatingRevenueGrowRate'), Signal('PB'),Signal('NPParentCompanyGrowRate'),Signal('CurrentRatio'), Signal('CTOP'),Signal('REVS60'),Signal('REVS20')) def handle_data(context): # 每个交易日的买入卖出指令 account = context.get_account('fantasy_account') current_universe = context.get_universe(exclude_halt=True) yesterday = context.previous_date.strftime('%Y-%m-%d') signals = context.history(current_universe, ['PE', 'ROE', 'OperatingRevenueGrowRate', 'PB', 'NPParentCompanyGrowRate', 'CurrentRatio', 'CTOP', 'REVS60', 'REVS20'], 1, freq='1d', rtype='frame',style='tas')[yesterday] signal1 = standardize((1.0 / winsorize(signals['PE'])).replace([np.inf, -np.inf], 0.0)) signal2 = standardize(winsorize(signals['ROE'].dropna())) signal3 = standardize(winsorize(signals['OperatingRevenueGrowRate'])) signal4 = standardize((1.0 / winsorize(signals['PB'])).replace([np.inf, -np.inf], 0.0)) signal5 = standardize(winsorize(signals['NPParentCompanyGrowRate'])) signal6 = standardize(winsorize(signals['CurrentRatio'].dropna())) signal7 = standardize(winsorize(signals['CTOP'].dropna())) signal8 = -standardize(winsorize(signals['REVS60'])) signal9 = -standardize(winsorize(signals['REVS20'])) signal = (0.2178*signal1).add(0.2149*signal2, fill_value=0.0).add(0.1273*signal3, fill_value=0.0).add(0.1535*signal4, fill_value=0.0).add(0.0328*signal5, fill_value=0.0).add(0.0753*signal6, fill_value=0.0).add(0.1328*signal7, fill_value=0.0).add(0.0218*signal8, fill_value=0.0).add(0.0239*signal9, fill_value=0.0) wts = long_only(signal.to_dict(), select_type=1, top_ratio=0.02, weight_type=1, target_date=yesterday) # 交易部分 positions = account.get_positions() sell_list = [stk for stk in positions if stk not in wts] for stk in sell_list: account.order_to(stk,0) c = account.portfolio_value change = {} for stock, w in wts.iteritems(): p = context.current_price(stock) if not np.isnan(p) and p > 0: if stock in positions: change[stock] = int(c * w / p) - positions[stock].amount else: change[stock] = int(c * w / p) - 0 for stock in sorted(change, key=change.get): account.order(stock, change[stock])
评论
    相关推荐
    • 财务指标选股.rar
      根据财务指标选取股票 1、从tushare获取所有上市公司股票代码 2、获取每一支上市公司股票的财务数据 3、计算各类财务指标 4、对指标进行判断 5、选取股票
    • 股票公式合集.zip
      股票,软件 公式和指标,再用来选股,辅助逃顶止损,适合新手上路
    • TRIX长短期股票选股MATLAB代码.zip
      TRIX投资策略长短期股票选股MATLAB函数代码
    • .Net 股票系统
      .Net 股票系统
    • SmartStock:智能选股
      因为我遇到喜欢的事物我就想着能不能在这方面写个app来方便下自己使用,于是就出现了这个选股app了,这里面的数据全是来自网上,可以参考。 #app概述这个app主要是利用爬虫技术把网上已有的数据进行集合,说智能其实...
    • 股票自动化交易
      股票数量为100的倍数, 如果输入150将作为100。默认为0,也就说,股票数量由交易软件自动填写,当然需提前在交易软件里设定好,在系统设置-仓位策略里选择固定数量, 见图5 时间为24小时制,形式为 时:分:秒...
    • StockQuant:股票量化
      StockQuant Gary-Hertel 请勿提交issue!可以加入交流群与其他朋友一起自学交流,加微信mzjimmy 一、配置文件的设置 启动框架需要先导入必要的模块,并且载入一次配置文件! 配置文件是一个json格式的文件config....
    • 智能股票算法分析
      该资源提供股票诊断算法, 股票数据处理分析,对股票曲线走势进行分析判断,能够识别出股票中极值点
    • 通达信选股插件源码及DLL
      选出的股票将同时记录在D:\选股.txt文件中,通过这个接口,就可以实现和第三方的自动交易软件(如小闪客)交互,实现无人值守全自动交易。 本示例包含C++源码完整文件,代码中提供了丰富的注释,便于学习掌握通达信...
    • 人事管理系统(VFP版).rar
      给别人做过的一个毕业设计。用VFP做的。