ricequant beta python日分钟交易历史数据_第1页
ricequant beta python日分钟交易历史数据_第2页
ricequant beta python日分钟交易历史数据_第3页
ricequant beta python日分钟交易历史数据_第4页
ricequant beta python日分钟交易历史数据_第5页
已阅读5页,还剩105页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

RicequantBeta|PythonAPI文档|PDF版本-byRicequant量化平日、分钟历史数ETF日、分钟历史数据

股息&费PythonSDK

Python策略oOrder

更改context更改scheduler

industry行业分类sector-板块分类concept概念分类ponents-构成指数的列Bar

get_csv-拿到自己的数据is_st_stock判断是否“ST”股fenji-分级数据API、ETF、LOF和分级基的Bar目前支持的PythonPythonGoldenCross算法示例海海 我们为您提供非常便利基于浏览器的量化和分析工具,我们的平台非常认真对待确保、数据以及运算透明的态度发展,希望与对量化有的您一同改善、进步。提供的功能改善编辑体验如自动代码、代码补全来更加享受编写您的算法。我们的各种建议,不要犹豫,请们:publicatricequant。每日数据了在一天内的信息,如开盘价或量等。目前使用的基准-沪深300(csi300)您也可以选择的自己想要参照的基准,只需要 函数 您 ETF,又称“型开放式指数投资基金”(ExchangeTradedFund的缩写),简称“型开放式指数金”,又称“所基金”。ETF是一种“标的指数”变化、且在所上市的基金。ETF最大的可以通过ctrl+iwindows用户,或command+imac的所包括:大连商品所-'DCE',所-‘SHFE’,中国金融所-‘CFFEX’,郑州商品所-‘CZCE’。我们目前开放了790多个每日和每分钟历史指数数据,在代码中的使用方法和相同(也可以通过ctrl+i-windows用户,或command+i-mac用户进行代码搜索)。上证沪深上证中证Ricequant从一流数据提供商处并且整理了财务三大表,市场衍生数据和财务指标衍生数据共计400涵盖了两市几乎所有自上市以来的所有基本面数据。我们同时还整理了一份基本面指标的详细字典大家可以查询财务数据字典。财务数据/基本面数据可以用来选股,所以主要的应用是

的update_universe来加入筛选出来的结果进入池或者是使用查询出来的财务指标数据Ricequant

对你的算法提供数据( 有三个函数和财务数据有关 , 只会在每天开盘前被触发一次。它可以用来传入一 来创建一个池

在下面的例子中,算法策略拿到了每只

函数会自动把每个

)包含进来。返回的数据接着会被

##definit(context):context.fundamental_df=get_fundamentals())我们接着看一段进阶的查询范例,查询pe值在25和30之间并且收益排前10的defcontext.fundamental_df=fundamentals.eod_derivative_indicator.pe_ratio>fundamentals.eod_derivative_indicator.pe_ratio<))注意:我们建议您不要使 查询太多的,那么会很容易导致程序的运行很慢,因为询的过大而10年+的财务数据数据库是十分庞大的。您可以在

调 函数将会返回一

,每一行对应数据库返回的每一行(个表的联合查询结果的一行

context.fundamental_dfcontext.fundamental_df=把查询出来 池传获得 中的这的

函数,那么就可以自己手动将这些感的加入整个即可以拿到查询财务数据返回 的列即所有的如果您想打印出来查询完的结 \000028.XSHE在rquant(anoncmetate)11月10为10月5号,也就是早于发布日期,那么返回的只是第二季度的财报数据。这样做最大程度地模拟了真实日量 (2014年6月9号)进行了一次拆分。我们首先 以前的股价进行:7整,即调整后收盘价=收盘价/7。之后我们再对量进行7:1调整,即调整后量=量x7。在调整 在风险计算中我们使用中国的银行间固定利率国债收益率曲线作为的零风险利率,来源于国债我们的平台每天会市场收市2个小时以后自动处理和更新当日的历史数据在Ricequant,我们通过一系列的措施来保护您的策略安全https通信加密:您的浏览器与Ricequant平台之间的通信都经过https加密,这代表着您的策略代码以及入该独立的环境,所以也不能候窥探您的任何信息。在技术上我们通过Javasecurity,separeteclassloader,linuxnamespace,linuxcgroup,linux p,selinux等来构建这个环境。如果您-起始:回测的起始-您将使用去投资策编译策略-点击“编译策略”将会使我们的实时编译您的算法策略来查询您的策略是否有编译错误并且点击“运行回测”将会带您进入完整的回测结果页面。如果您的策略有编译/运行错误,您回测设置和状态:为您展示回测是否结束,起始日期和终结日期,投入的起始每日盈亏图:柱子的高度展示了每日的盈亏情况。iWindows用户:输 iiMac用户:输 iiLinux用户:输 i数字代码-自动补全为数字代码,比如中文全称-自动补全为中文全称,比如“招商地产测的历史日打印的。所选不存在解决办法您当前可以使用一些其他的资讯来查询代号,我们非常抱歉还没有推出您们,帮助我们解决您的问题。您没有选择任何的,请查看API文档至少添加一支您使用的没有在初始化时加入列表解决办法:遇到该错误时候,您需要查看API文档,在初始化策略的时候,将加入列表所选在所选时间段内无法描述:ricequant运行您的策略的时候需要使用到硬件资源有限,为了保证服务质量,我们对同 描述:为了防止的策略常驻在我们的平台上耗费计算资源,我们限制了一个回测最长的生 解决办法:欢迎们,第一时间协助您解决这类问题股息&会在RicequantSDK中提供拆分,从而您的算法也可以试用它来作为一个数据信号。股息到帐日:现金股息划拨到投资者账户的日期当您的投资略在股权记日时仍有分股的,那您的投资略将有资参与此股息分红。除除息日结束的时候您投资组合中的DvidendRcivable会增加对应持有的股息分红数目。然后在股息到帐日那天DvidendRecivablevaabash-您最终拿到了应收股息分红的金额,并且可以用这笔钱进行再投资了。内部已经默认使用了所的这篇中研究的滑点值-0.246%只需要在初始化的地方##definit(context):context.slippage=0.246费只需要在初始化的地方就可以修改手续费的数额##def#0.01此处代表0.01%即万分之mission=如果买入1000股10块钱每股的,那么不需要缴纳印花税如果卖出1000股10块钱每股的,那么需要缴纳印花税 .001=10 中落单,价格为当 落单量【单内量】不应该超过当日量【当日总量】的25%,无法完成落单AnnualizedReturns:策略率。表示投资期限为一年的预期收益率。具体计算方式为回测期间策略每日收益率总和/回测日数量×252。BenarkReturns:参考标准率。具体计算方式为回测期间参考标准每日收益率总和/回测日数量×252。VolatilityVolatility n−

∑i=1(rp−rp=策略每日收益率TrackingError n−

∑i=1(rp−rp=策略每日收益率rb=参考标准每日收益率:DownsideRisk n−

∑i=1(rp−rp=策略每日收益率rt=无风险利率/目标收益率f(t)=1ifrp<rtf(t)=0ifrp≥SharpeRatio:夏普比率。表示每承受一单位总风险,会产生多少的超额回。具体计算方法为(策略年化收益率-回测起始日的无风险利率)/策略收益波动率。SharpeRatio=Rp−Rp=策略年化收益率Rf=无风险利率/目标收益率σp=策略收益年化波动率

SortinoRatio索提诺比率。表示每承担一单位的下行风险,将会获得多少超额回报(excessreturn具体计算方法为(策略率-回测起始日的无风险利率)/策略收益下行波动率。SortinoRatio=Rp−Rp=策略年化收益率Rf=无风险利率/目标收益率σd=策略收益下行年化波动率InformationRatio(参考标准每日收益)的年化均值/年化标准差。InformationRatio=Rp−Rp=策略年化收益率Rb=参考标准收益率σt=跟踪误差年化波动率SortinoRatio和SharpeRatio这两个指数最大的区别在于波动率的选择.SharpeRatio使用标准计入风险波动率中,因此收益的上涨波动不会导致指数数值的下降,和SharpeRatio比较起来,SortinoAlpha:。具体计算方式为(策略-无风险收益)-beta×(参考标准-无风险收益),这α=rp−[rf+βp(rm−rp=策略年化收益率rm=参考标准年化收益率rf=中国固定利率国债年化到期收益βp=策略的贝塔值Alphaα<投资相对于它的风险获得了太少的收益(对于收益来险太大α=α>比如一个投资获取了20%的收益,看上去非常可观,但是它仍可能有负的α值因为它的风险Beta:。表示投资的系统风险系数。Beta数值越高代表系统风险越高。具体计算方法为策略每日收益与参考标准每日收益的协方差(covariance)/参考标准每日收益的方差(variance)。Cov(Rp,β VRp=策略每日收益率Rm=参考标准每日收益率Betaβ<0β=00β<β=1β>1MaxDrawdown:max(1当日之前虚拟账户最高价值)。和SortinoRatio一样适合对资产下跌敏感的投资者。PythonSDKPython策略o以下的策略是最简单的一个买入并持有平安银行(buyandhold)的展示,您也可以点击右上角的clone按钮复##可以自己import#defcontext.s1"000001.XSHE"#order是否被发送出去context.fired=False#defhandle_bar(context,#bar_dict[order_book_id]可以拿到某 context.portfolio使用order_shares(id_or_insamount)TODOifnotorder_percent并且传入1代表买入该order_percent(context.s1,1)context.fired=True你的算法策略目前必须实现至少两个方法 , 初始化方法-在回测和实时模拟只会在启动的时候触发一次。你的算使用这个方法来设置你需要的各 范例defdefcash_limit的属性是根据用户需求自己定义的,你可以定义无限多种自己随后需要的属性,ricequant的系统默context.cash_limit=handle_barhandle_bar(context,测则会是每分钟的切片数据会调用,那么在实时模拟中则是实时每分钟会调用一次。对于切片数据对象你bardictionary-了关注的的bar的一defdefhandle_bar(context,#putallyouralgorithmmainlogichere.#...order_shares('000001.XSHE',500)#... before_tradingbefore_trading(context, defdefbefore_trading(context,#拿取财务数据的逻辑,自己构建SQLAlchemyqueryfundamental_dfget_fundamentals(your_own_query)把查询到的财务数据保存到conextcontext.fundamental_df=池Order你可以在策略中使用下面的几种丰富的落单方法,他们不同的用法可以让你落单的操作十分便捷。我们在那么默认是市价单(marketorder)。order_shares(order_shares(id_or_ins,amount,order_book_id或symbol或instrumentint,唯一的orderBuy2000股的平安银行,并以市价单发order_sharesorder_shares('000001.XSHE',卖出2000股的平安银行,并以市价单发送order_sharesorder_shares('000001.XSHE',-1000股的平安银行,并以限价单发送,价格为order_sharesorder_shares('000001.XSHG',1000,(marketorder)order_lotsorder_lots(id_or_ins,amount,str或instrument对象-order_book_id或symbol或instrumentint,唯一的order买入20手的平安银行,并且发送市价单order_lotsorder_lots('000001.XSHE',买入10手平安银行,并且发送限价单,价格为order_lotsorder_lots('000001.XSHE',10,使用想要花费的金钱买入/卖出,而不是入/卖出想要的股数,正数代表买入,负数代卖出。的股数总是会被调整成对应的100的倍数(在A中国市场1手是100股)。当您提交一个卖单,该方法代的义是您希望通过卖出该的金额。如果金额超出了您所持有的价值,那么您将卖出所有。order_valueorder_value(id_or_ins,cash_amount,order_book_id或symbol或instrumentint,唯一的orderorder_valueorder_value('000001.XSHE',卖出价值¥10000的现在持order_valueorder_value('000001.XSHE',-卖。的股数总是会被调整成对应的一手的数的倍数(1手是100股)。百分比是一个小数,并且小于或order_percentorder_percent(id_or_ins,percent,order_book_id或symbol或 int,唯一的orderorder_percentorder_percent('000001.XSHG',值的。如果已经有了该的仓位,则会买入/卖出调整该的现在仓位和目标仓位的价值差值的数目◦order_target_valueorder_target_value(id_or_ins,cash_amount,str或instrument对象-order_book_id或symbol或instrument对象int,唯一的order 的平安银行的仓位并且设置其目标价值为¥ order_target_valueorder_target_value('000001.XSHE',终调整该的仓位占据投资组合的比例至目标百分比。(position_to_adjustposition_to_adjust=target_position-投资组合价值等于所有已有仓位的价值和剩余现金的总和。买/卖单会被下舍入一手股数(是100的倍数的倍数。目标百分比应该是一个小数,并且最大值应该<=1,比如0.5表示50%如 order_target_percentorder_target_percent(id_or_ins,percent,str或instrument对象-order_book_id或symbol或instrument对象int,唯一的orderorder_target_percentorder_target_percent('平安银行'取消由order_id代表的限价单通过唯一的order_id拿到对应的订单信息,不过这个订单信息会

int-order<<Order:ty=100.0instrument=<Instrument:symbol='平安银行abbrev_symbol='PAYH'round_lot=100.0sector_code='Financials'sector_name='获取一个由order_id到order对象映射的dict,凡在此dict中的order都未被完全或取消更改context中的预设可以 defdef ark=上面的代码片段的策略的对比参考基准从默认 defdefinit(context):context.short_selling_allowed=True可以 defdefinit(context):context.slippage=0.5更改可以 defdefmission=schedulerscheduler.run_weekly(function,weekday=x,tradingday=t)scheduler.run_monthly(function,tradingday=t)scheduler.run_weekly(function,weekday=x,tradingday=t)scheduler.run_monthly(function,tradingday=t)

,注意 使传入 1,schedule一定在其对应时间点的handle_bar之后执行。以下的范例代码片段是一个非常简单的例子,在每天后查询现

defdeflog_cash(context,("Remaningcash:%r"%definit(context):scheduler.run_weekly(scheduler.run_weekly(function,weekday=x,使传入 每日开始前运int1:周一,2:周二5:int-not范围为[-5,1],[1,5]例:1(-1):每周(倒数)第一个日,n(-n):每 表示日。如某周只有四个日,则此周

以下的代码片段非常简单,在每周二固定运行打印一下现在 defdeflog_cash(context,("Remaningcash:%r"%def:scheduler.run_weekly(log_cash,:#scheduler.run_weekly(log_cash,在每月的某个日运行一次传入 使传入 int范围为[-23,1],[1,23],如:1(-1):每月(倒数)第一个日,2(-每月(倒数)第二个日,...,28(-28):每月(倒数)第28个 表示日,如某月只有三个日,则此月的tradingday=3与tradingday=-1表示同一defquery_fundamental(context,#查询revenue前十名的公司的 fundamental_df=get_fundamentals(query(fundamentals.eod_derivative_indicator.pe_ratio>fundamentals.eod_derivative_indicator.pe_ratio<))#context.fundamental_df=#def#每月的第一 可以达到各种自己想要达到的定时运行的目的。注意:使 定时运行只会在分钟级别回测和实时模拟中有定义的效果,在日回测中只会默认,, 来一起使用

进行组合

来进行定日期运行已经在上面解释的很清楚了,这里我们主要介绍如何使 -闭市前多久运行。如果不设置 /market_close参数int-具体在market_open/market_close后/前第多少小时执行,的时间为[9:30-11:30],[13:01-15:00]共240分钟,所以hour的范围为[0,4]int-间240分钟,所以minute的范围为[0,240],中午休市的时间区间会被忽略。返回:scheduler.run_daily(scheduler.run_daily(function,time_rule=market_open(hour=x,scheduler.run_weekly(function,scheduler.run_weekly(function,weekday=w,tradingday=t,time_rule=market_close(hour=x,每月的第t个日开市后某个时间点运行scheduler.run_monthly(scheduler.run_monthly(function,traingday=t,time_rule=market_open(hour=x,与 ,则默认在开盘后一分钟运行,即09:31分与

的3,目前暂不支持开盘 (即09:30分 ),所以的

将不会触发4market_open(minute=120)将在11:30market_open(minute=121)在13:01执行,中午休市的区间会scheduler.run_daily(scheduler.run_daily(function,scheduler.run_weekly(scheduler.run_weekly(function,weekday=1,每月第一个日收盘前一小时scheduler.run_monthly(functionscheduler.run_monthly(function,

作为参数,用以更新现在关注的的集合(e.g池)。PS:会在下一个bar触发时候产生(新的关注的池更新)效果。并且update_universe会是覆(overwrite)的操作而不是在已有的池的基础上进行增量添加。比如已有的池 之后,池就会变成 str或ibleof单个或一个id_or_symbol(s)列表下面的代码是将池变更为只有2 update_universe([update_universe(['000001.XSHE',get_fundamentalsget_fundamentals(query,通过使 输入一年月日的str类型,例如'2014-02-03'一

,每一行对应数据库返回的每一行(可能是几个表的联合查询结果的一行 你查询的所有字段。可以用来到范例

来手动更新拿取财务数据中的pe_ration和revenue并且通过filter过滤掉得到符合一定范围的pe_ration最后只拿到按照降序排序之后的前10fundamental_dfget_fundamentals(fundamentals.eod_derivative_indicator.pe_ratio>fundamentals.eod_derivative_indicator.pe_ratio<))context.stocks=fundamental_df.columns.values范例defdefcontext.stocks=("industrystocks:"+的revenue和pe_ratiocontext.fundamental_dfget_fundamentals(fundamentals.eod_derivative_indicator.pe_ratio>fundamentals.eod_derivative_indicator.pe_ratiofundamentals.eod_derivative_indicator.pe_ratio<))转换单个string或一个string列表的order_book_id到instrument对ofstrings单个或一个列表的instrument用id_or_symbol请求的。<Instrument:industry_name='货币金融服务',listed_date=datetime.datetime(1991,4,3,0,0),round_lot=100.0,listing=False,abbrev_symbol='PAYH',symbol='平安银行',industry_code='J66',type='CS',sector_code='Financials',sector_name='金融',得到一个列表的instrument对象-中国[[In]instruments(['平安银行'000024.XSHE'])[[<Instrument:industry_name='货币金融服务',listed_date=datetime.datetime(1991,4,3,0,0),round_lot=100.0,listing=False,abbrev_symbol='PAYH',symbol='平安银行',industry_code='J66',type='CS',sector_code='Financials',sector_name='金融',<Instrumentindustry_name='房地产业listed_date=datetime.datetime(19936700),round_lot=100.0,listing=False,abbrev_symbol='ZSDC',symbol='招商地产',industry_code='K70',type='CS',sector_code='Financials',sector_name='金融',historyhistory(bar_count,frequency,函数返回所有已关注的历史行情,同时支持日以及分钟历史数据。以pandas的DataFrame对象注意:在我们加入的可以动态处理调整池的功能以后,您并不只能使用 券池的历史数据,您可以拿到所有想要拿的任意的的历史数据了。表示回溯时以什么样的频率进行。例如"1d"或"1m"分别表示每日和每分制定返回的DataFrame中以哪个指标作为数据值,取“open”,“close”,“high”,“low”,“volume”,“lasttotal_turnover总额以及基金特有的"acc_net_value"-累积净值,"unit_net_value"-单位净值,"discount_rate"-折价率与特有的"settlement"-今日结算价,"prev_settlement"-昨日结算价,"open_interest"-持仓量,"basis_spread"-期1.printprint(history(4,'1d',当前日期:2013-01-2013-01-2013-01-2013-01-2013-01-1.printprint(history(4,'1m',当前时间:2014-01-062014-01-062014-01-062014-01-062014-01-06industry函数可以将需要的某行业分类的列单返回str-返回defdefstock_list= 列表:"+INITINFOINITINFO列表:['600354.XSHG''601118.XSHG''002772.XSHE''600313.XSHG','600672.XSHG','600359.XSHG','300143.XSHE','002041.XSHE','600540.XSHG','300189.XSHE','600108.XSHG','300087.XSHE','600598.XSHG','000998.XSHE',用行业的列表:农副铁路道路水上航空管道装卸搬运和软件和服务业业sectorstr-板块名称(中英可以)或板块代返回defids1=defids1=sector("consumerINITINIT[['002045.XSHE','603099.XSHG','002486.XSHE','002536.XSHE','300100.XSHE','600633.XSHG','002291.XSHE',...,'600233.XSHG']我们目前支持的板块分类如下,它的取值参考的是MSCIconsumerconsumerhealthinformationmunicationconceptconceptconcept(concept_name1,concept_name2,概念名称,e.g绿色照明',可以从下面的概念列表中选择一个或返回anarrayof代得到一个概念的列表得到某几个概念的列表[[In]concept('民营医院 黄粤念业央企戏氢念念ponents-构成指数的列ponentsponents(index_name,某个指数的代码,e.g000001.XSHG'上证指数,可以在指数数据表查str-目前仅支持'cn',默认为anarrayof代码,代表某个指数的构成[Out]['600000.XSHG','600004.XSHG',plotplot(series_name,str-float-##defhandle_bar(context,TODOplot('close',bar_dict['000001.XSHE'].close)plot('high',bar_dict['000001.XSHE'].high)plot('low',bar_dict['000001.XSHE'].low)plot('open',get_csv

中拿到当前的bar的时间,比如daybar 随后我们可以在编写策略的时候使 defdefcontext.csv_df=get_csv("revenue.csv")我们把renuve.csv中的数据出来以后是一个

01234str-返 -里面保存着csv文件中的数据内is_st_stock判断是否“ST”些风险大的。另外,我们目前的策略比赛也了使用"ST"股。的改进:已经加入了ST的历史数据,因此可以在回测时候知道当时是不是ST股,而不仅仅是当前今天。"ST"股包括如下:SST-公司经营连续三年亏损,退市+还没有完成股改;ST-公司经营连续三年亏损,退市;ST-公司经营连续二年亏损,特str-True表示是"ST"False表示不是“ST”fenji分级数据通过传入当前的本期利率拿到对应的分级A的order_book_idfenji.get_fenji.get_a_by_yield(current_yield,float-bool-默认为True,该分级基金是否在所可-符合当前本期利率的分级A的order_book_id的列拿到当前收益率为4的A基的[[In]fenji.get_a_by_yield(4))通过传入当前的利率规则拿到对应的分级A的order_book_idstr-利率规则,例如:"+3.547*1.4+0.55利差etc您也可bool-默认为True,该分级基金是否在所可-符合利率规则的分级A的order_book_id的列拿到符合利率规则“+3%”的A[[In]fenji.get_a_by_interest_rule("+3%")['502011.XSHG','150215.XSHE','150181.XSHE','150269.XSHE','150173.XSHE','150217.XSHE','502027.XSHG','150255.XSHE','150257.XSHE','150237.XSHE','150100.XSHE','150177.XSHE','502017.XSHG','150279.XSHE','150271.XSHE','150051.XSHE','150245.XSHE','150233.XSHE','502004.XSHG','150200.XSHE','150205.XSHE','150184.XSHE','502049.XSHG','150207.XSHE','150313.XSHE','150243.XSHE','150239.XSHE','150273.XSHE','150227.XSHE','150076.XSHE','150203.XSHE','150209.XSHE','150259.XSHE','150315.XSHE','150283.XSHE','150241.XSHE','150229.XSHE','150307.XSHE','150186.XSHE','150231.XSHE','502024.XSHG','502007.XSHG','150305.XSHE','150018.XSHE','150309.XSHE','150311.XSHE','150235.XSHE','150143.XSHE','150249.XSHE','150329.XSHE','150251.XSHE','150169.XSHE','150357.XSHE','150194.XSHE','150179.XSHE','150164.XSHE','150192.XSHE','150171.XSHE','150022.XSHE','150275.XSHE','150092.XSHE','150277.XSHE']arrayofstr-默认为所有的-column是分级基金的各项数据,包括如下的字段到期日,可能为NaN[In][In] 0益 永益永11 55 股 股拿到只有2个字段的0152xueqiu.top_stocks(field,xueqiu.top_stocks(field,date,freq,count, 注意:我们最早支持的雪球数据只 年 日,之后的数据我们都会保持更新str-目前支持的雪球数据统计指标有:昨日新增评论 ,总评论,昨日新增关注者 ,总关注者数目,卖出行为 ,买入行为date-不输入的话默认就是当天之前一天的统计数据,e.g.'2015-12-11',注意:我 年月 日,之后的数据我们都会保持更新。str- -每周和 -每月的统integer指定返回多少个结果,默认是10"str"-'cn'or默认市场,目前仅支持一 对象,index是,第一个列是order_book_id即代码,第二列是对应的指标名拿到当天前一天的新增留言前a=a=("获取按(a) a=xueqiu.top_stocks(a=xueqiu.top_stocks('total_followers')("total_followers 拿到当天前一周的新增关注前aa=xueqiu.top_stocks('new_followers',freq='week')("newfollowersweek 拿到当天前一周的新增关注前aa=xueqiu.top_stocks('new_followers',freq='week',count=100)("newfollowersweek Bar基金和。它会发送 、ETF、LOF和分级基金的Bar的唯一的易读的代码,比如:“平安银行 总额该;◦的Bar对()的唯一的标识符,比如:‘沪深()的唯一的易读的代码,比如:‘沪深 总额期现差-该是否可以中。 可以; 同时 mavgmavg(intervals,可以用来计算某个的某段时间的移动平均价格,默认单位是‘天间隔的频率,默认是“天vwap(intervals,可以用来计算某个的某段时间的平均价格,默认单位是“天间隔的频率,默认是“天Order该订单已经的股Portfolio对

回测或实盘给算法策略设置的初始组合价值/投资组合的初始。投资组合价值包含剩余现金和其投资组合当前的市场价值(未实现/平仓的价值投资组合的 Position对对象代表一个的仓位信息。可以通过positions字典拿到,例如:如果你的投资组合有平安银(000001.XSHE)的仓位,你可以通过以下代码拿到它的仓位并 交,那么平安银行这个的仓位就是票200股并且卖出过100股,那么这个属性会返回100.该的总买入的价值,等于每一个该的买入的价格*买入股数的该的总卖出价值,等于每一个该的卖出的价格*卖出股数的总该仓位的总的次数该仓位可卖出股数。T+1的市场中sellable所有持仓-获得该持仓的实时市场价值在总投资组合价值中所占比例,取值范围[0,1]Instrument代表所有的金融,例如:可以是,ETF,指数和合同,ETF,指数Instrument平安银行的名缩写。一手是多少股,中国一手是100股该是否还在所型:'CSINDXLOFETFFenjiMuFenjiAFenjiB'MainBoard主板,'GEMInstrument

()的独特的标识符,比如()的易读的名字,比如:‘沪深该是否还在所该()的上市日期合约乘数。合约价值=今日结算价*合约乘最后我们目前支持的类型:'CS','INDX','LOF','ETF','FenjiMu','FenjiA','FenjiB',产品类型,股指-'Index',商品-'Commodity',国-'ernment'哪个所:大连商品所-'DCE',交易所-‘SHFE’,中国金融所-‘CFFEX’,郑州商品所-‘CZCE’,<<Instrument:type='Future',underlying_symbol='IF',contract_multiplier=300.0,symbol='沪深1005'underlying_order_book_id='CSI300.INDX'listed_date=datetime.datetime(2010416,0,0),maturity_date=datetime.datetime(2010,5,21,0,0),exchange='CFFEX',round_lot=1.0,abbrev_symbol='HS1005',product='Index',settlement_method='CashSettlementRequired',order_book_id='IF1005'>CommonCommonListedOpen-EndedExchangeTradedFenjiMu

融资融券(深市

即时基础利率LPRimportimportpandasasdf=打打文档(你需要在新的页 TA-Lib是一个被员/程序员常用的过150+Statsmodels是一个Python的模块可以(Linearregressionmodels)种类选择-dict,list,set和tupleMarkovModels)模块,类似scikit-超级简单的卡尔曼滤波Filter),KalmanSmoother和EMarch提供了Univariatevolatility模comparisonprocedures TensorflowisanopensourcesoftwarelibraryformachinePython算法第一个策略-买入&持万事开头难,这是一个最简单的策略:在回测开始的第一天买入量的100%的平安银行并且一直持有。可以通过右上角的clone按钮很方便的把范例算法到自己的算法列表中,您可以更改一下代码以及回测#可以自己#可以自己import#defcontext.s1"000001.XSHE"#是否已发送了ordercontext.fired=False#defhandle_bar(context,#bar_dict[order_book_id]可以拿到某 context.portfolio使用order_shares(id_or_insamount)TODOifnotorder_percent并且传入1代表买入该order_percent(context.s1,1)context.fired=GoldenCross以下是一个我们使用TALib在我们的平台上编写的goldencross算法的示例,使用了simplemovingaverage方#可以自己import我们平台支持的 importtalibimportnumpyasnpimportmathimport#defcontext.s1=设置这个策略当中会用到的参数,在策略中可以随时调用,这个策略使用长短均线,我们在这里设定长线和短线的context.SHORTPERIOD=context.LONGPERIOD=#你选择 defhandle_bar(contextbar_dict):#开始编写你的主要的算法逻辑#bar_dict[order_book_id]可以拿到某个的bar#context.portfolio可以拿到现在的投资组合状态信息使用order_shares(id_or_ins,amount)方法进行落单#TODO:开始编写你的算法吧!因为策略需要用到均线,所以需要历史数据prices=#使用talib计算长短两根均线,均线以array的格式表达short_avgtalib.SMA(prices,context.SHORTPERIOD)long_avg=talib.SMA(prices,context.LONGPERIOD)plot("shortavg",short_avg[-1])plot("longavg",long_avg[-1])#计算现在portfolio curPosition=context.portfolio.positions[context.s1]. #计算现在portfolio中的现金可以 shares=如果短均线从上往下跌破长均线,也就是在目前的bar短线平均值低于长线平均值,而上一个bar的短线平均值高ifshort_avg[-1]-long_avg[-1]<0andshort_avg[-2]-long_avg[-2]>0andcurPosition>0:ifshort_avg[-1]-long_avg[-1]>0andshort_avg[-2]-long_avg[-2]<0:单MACD算法示以下是一个我们使用TALib在我们的平台上编写的单MACD算法示例,使用了TALib的MACD方法##可以自己importimporttalibimportnumpyasnpimportmathimport#defcontext.s1=使用MACD需要设置长短均线和macdcontext.SHORTPERIOD=context.LONGPERIOD=context.SMOOTHPERIOD=context.OBSERVATION=#defhandle_bar(context,#bar_dict[order_book_id]可以拿到某 #context.portfolio使用order_shares(id_or_ins,amount)方法进行落单#TODO:开始编写你的算法吧! prices=用Talib计算MACD取值,得到三个时间序列数组,分别为macd,signal和histmacd,signal,hist=plot("macdsignal",signal[-1])macd是长短均线的差值,signal是macd的均线,使用macd策略有几种不同的方法,我们这里采用macd线突如果macd从上往下跌破ifmacd[-1]-signal[-1]<0andmacd[-2]-signal[-2]>0:#计算现在portfolio中 curPosition= ifcurPosition>0:ifmacd[-1]-signal[-1]>0andmacd[-2]-signal[-2]<0:order_target_percent(context.s1,多RSI算法示以下是一个我们使用TALib在我们的平台上编写的多RSI算法示例,使用了TALib的RSI方法##可以自己importimporttalibimportnumpyasnpimportmathimport#def的context.s1=context.s2="601988.XSHG"context.s3=context.stocks=context.TIME_PERIOD=context.HIGH_RSI=context.LOW_RSI=context.ORDER_PERCENT=#你选择 defhandle_bar(contextbar_dict):#开始编写你的主要的算法逻辑#bar_dict[order_book_id]可以拿到某个的bar#context.portfolio可以拿到现在的投资组合状态信息使用order_shares(id_or_ins,amount)方法进行落单#TODO:开始编写你的算法吧!#对我们选中 forstockincontext.stocks: prices=#用Talib计算RSIrsi_data=talib.RSI(prices,timeperiod=context.TIME_PERIOD)[-curPosition=context.portfolio.positions[stock]. target_available_cash=context.portfolio.cash*ifrsi_data>context.HIGH_RSIandcurPosition>0:

ifrsi_data<("targetavailablecashcaled:"+#如果剩余的现金不够一手100shares,那么会被ricequant的ordermanagementsystemorder_value(stock,target_available_cash)财务数据策略在回测开始前,通过查询回测开始当天的财务数据,获得市盈率大于55且小于60,营业总收入前10的然后将所有平摊到这10个Buy&Hold的策略。您可以clone之后自行修改,通过查询回测开始当天的金量不足以满足买入如此多组成的一篮子投资组合)#可以自己import我们平台支持的 #def#查询revenue前十名的公司的 fundamental_df=get_fundamentals(query(fundamentals.eod_derivative_indicator.pe_ratio>fundamentals.eod_derivative_indicator.pe_ratio<))#context.fundamental_df=#对于每一 context.stocks=context.fundamental_df.columns.valuesstocksNumber=len(context.stocks)context.average_percent=0.99/stocksN("Calculatedaveragepercentforeachstockis:%f"%context.average_percent)context.fired=False#你选择 defhandle_bar(contextbar_dict):#开始编写你的主要的算法逻辑#bar_dict[order_book_id]可以拿到某 context.portfolio使用order_shares(id_or_insamount)TODOifnotforstockincontext.stocks:("Bought:"+str(context.average_percent)+"%forstock:"context.fired=比例分配买入一个10个的投资组合:##可以自己importdefquery_fundamental(context,#查询revenue前十名的公司的 fundamental_df=get_fundamentals(query(fundamentals.eod_derivative_indicator.pe_ratio>fundamentals.eod_derivative_indicator.pe_ratio<))-#context.fundamental_df=#context.stocks=stocksNumber=len(context.stocks)context.average_percent=0.99/stocksN("Calculatedaveragepercentforeachstockis:%f"%#先查一下选出来 ##("Clearingallthecurrentforholding_stockinifcontext.portfolio.positions[holding_stock]. ty!=0:order_target_percent(holding_stock,0)("Buildingnewpositionsforforstockincontext.stocks:order_target_percent(stock,("Buying:"+str(context.average_percent)+"%forstock:"+#definit(context):scheduler.run_monthly(query_fundamental,monthday=1)#你选择 defhandle_bar(contextbar_dict):#开始编写你的主要的算法逻辑#bar_dict[order_book_id]可以拿到某 context.portfolio使用order_shares(id_or_insamount)方法进行落单#TODO:开始编写你的算法吧!importimportnumpyasimporttalibimportmathdefgetExtremem(arrayHighPriceResult,np_arrayHighPriceResult=np.array(arrayHighPriceResult[:-1])np_arrayLowPriceResult=np.array(arrayLowPriceResult[:-1])maxResult=np_arrayHighPriceResult.max()minResult=return[maxResult,defgetAtrAndUnit(atrArrayResult,atrLengthResult,portfolioValueResult):atr=atrArrayResult[atrLengthResult-1]unit=math.floor(portfolioValueResult*.01/return[atr,defgetStopPrice(firstOpenPriceResult,units_hold_result,stopPrice=firstOpenPriceResult-2*atrResult+(units_hold_result-returndefcontext.trade

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论