股票量化交易初探一
时间:2023-04-27 20:37:01
最近学习了自动化,平衡了后台发布商品的功能回归测试,基本达到了目的。本计划深入完成高频回归测试case是的,但由于它们都是元素获取和过程,因此无法改进技术和放弃。转移注意力到股票交易。首先,我一直有一个幻想(如果我能实现,那就是一个梦想),我可以使用程序来提高交易的成功率。其次,通过实现过程,挖坑爬坑,技术将得到改进。
本研究的主要目标:python跑通的主要流程(环境建设、股票数据获取与组织管理、数据分析)。
这里人肉爬网,http://blog.csdn.net/linluyisb/article/category/5915873
受上述启发,发现
http://tushare.org/donate.html
https://www.joinquant.com/api#python库 在线提供丰富的分析服务api还有丰富的回测功能和数据优势。如果不是为了边学边玩,那真的是天堂。
环境搭建
操作系统:ubuntu 16.04 LTS_X64
数据采集:tushare,安装参考,http://tushare.org/index.html#id4
数据存储:mysql5.6,安装略。
数据分析可参考joinquant专业引用的库
其他:ANACONDA
获取交易数据
利用tushare简明扼要的api获取数据:
import tusharefrom pandas import DataFrame# print(tushare.__version__)df = DataFrame()df = tushare.get_hist_data('002405',start='2017-03-01')print(df)
结果:
open high close low volume price_change p_change \date 2017-03-14 20.90 21.40 20.08 20.07 394190.38 0.08 0.40 2017-03-13 19.52 20.15 20.00 19.25 233964.88 0.55 2.83 2017-03-10 19.94 20.06 19.45 19.41 153553.66 -0.33 -1.67 2017-03-09 19.72 19.99 19.78 19.63 163415.09 0.00 0.00 2017-03-08 20.10 20.22 19.78 19.69 242510.16 -0.37 -1.84 2017-03-07 19.38 20.34 20.15 19.19 425716.16 0.77 3.97 2017-03-06 18.83 19.45 19.38 18.75 274078.38 0.57 3.03 2017-03-03 18.46 18.88 18.81 18.22 144946.69 0.31 1.68 2017-03-02 18.73 18.80 18.50 18.50 80458.09 -0.22 -1.18 2017-03-01 18.75 18.92 18.72 18.70 100596.63 0.00 0.00 ma5 ma10 ma20 v_ma5 v_ma10 v_ma20 turnover date 2017-03-14 19.818 19.465 18.963 237526.83 221343.01 164560.93 3.91 2017-03-13 19.832 19.329 18.894 243831.99 189132.66 149890.31 2.32 2017-03-10 19.708 19.196 18.829 251854.69 176085.70 142303.71 1.52 2017-03-09 19.580 19.141 18.790 250133.30 177123.86 139030.05 1.62 2017-03-08 19.324 19.023 18.746 233541.90 170703.27 135646.79 2.40 2017-03-07 19.112 18.898 18.693 205159.19 155881.86 127002.56 4.22 2017-03-06 18.826 18.730 18.616 134433.32 124987.00 109150.55 2.72 2017-03-03 18.684 18.605 18.590 100316.72 107435.64 99639.67 1.44 2017-03-02 18.702 18.532 18.589 104114.43 102430.75 96675.98 0.80 2017-03-01 18.722 18.509 18.564 107864.64 103520.65 92654.13 1.00
其api中非常详细的说明了每一列的具体含义。如下所示:
def get_hist_data(code=None, start=None, end=None, ktype='D', retry_count=3, pause=0.001): """ 获取个股历史交易记录 Parameters ------ code:string 股票代码 e.g. 600848 start:string 开始日期 format:YYYY-MM-DD 为空时取到API所提供的最早日期数据 end:string 结束日期 format:YYYY-MM-DD 为空时取到最近一个交易日数据 ktype:string 数据类型,D=日k线 W=周 M=月 5=5分钟 15=15分钟 30=30分钟 60=60分钟,默认为D retry_count : int, 默认 3 如遇网络等问题重复执行的次数 pause : int, 默认 0 重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题 return ------- DataFrame 属性:日期 ,开盘价, 最高价, 收盘价, 最低价, 成交量, 价格变动 ,涨跌幅,5日均价,10日均价,20日均价,5日均量,10日均量,20日均量,换手率 """
获取的数据结构是DateFrame。
那么我选择k线的api作为本次实验的数据对象。通过本人整理,到目前2017年3月为止所有的股票代码,当然还包含写入数据库的代码:
shares=['浦发银行(600000)','邯郸钢铁(600001)','齐鲁石化(600002)','ST东北高(600003)','白云机场(600004)','武钢股份(600005)','东风汽车(600006)','中国国贸(600007)','首创股份(600008)','上海机场(600009)','包钢股份(600010)','华能国际(600011)','皖通高速(600012)','华夏银行(600015)','民生银行(600016)','日照港(600017)','上港集团(600018)','宝钢股份(600019)','中原高速(600020)','上海电力(600021)','山东钢铁(600022)','浙能电力(600023)','中远海能(600026)','华电国际(600027)','中国石化(600028)','南方航空(600029)','中信证券(600030)','三一重工(600031)','福建高速(600033)','楚天高速(600035)','招商银行(600036)','歌华有线(600037)','中直股份(600038)','四川路桥(600039)','保利地产(600048)','中国联通(600050)','宁波联合(600051)','浙江广厦(600052)','九鼎投资(600053)','黄山旅游(600054)','万东医疗(600055)','中国医药(600056)','象屿股份(600057)','五矿发展(600058)','古越龙山(600059)','海信电器(600060)','国投安信(600061)','华润双鹤(600062)','皖维高新(600063)','南京高科(600064)','*ST联谊(600065)','宇通客车(600066)','冠城大通(600067)','葛洲坝(600068)','银鸽投资(600069)','浙江富润(600070)','凤凰光学(600071)','中船科技(600072)','上海梅林(600073)','保千里(600074)','新疆天业(600075)','康欣新材(600076)','宋都股份(600077)','澄星股份(600078)','人福医药(600079)','金花股份(600080)','东风科技(600081)','海泰发展(600082)','博信股份(600083)','中葡股份(600084)','同仁堂(600085)','东方金钰(600086)','退市长油(600087)','中视传媒(600088)','特变电工(600089)','同济堂(600090)','ST明科(600091)','S*ST精密(600092)','禾嘉股份(600093)','大名城(600094)','哈高科(600095)','云天化(600096)','开创国际(600097)','广州发展(600098)','林海股份(600099)','同方股份(600100)','明星电力(600101)','莱钢股份(600102)','青山纸业(600103)','上汽集团(600104)','永鼎股份(600105)','重庆路桥(600106)','美尔雅(600107)','亚盛集团(600108)','国金证券(600109)','诺德股份(600110)','北方稀土(600111)','天成控股(600112)','浙江东日(600113)','东睦股份(600114)','东方航空(600115)','三峡水利(600116)','西宁特钢(600117)','中国卫星(600118)','长江投资(600119)','浙江东方(600120)','郑州煤电(600121)','宏图高科(600122)','兰花科创(600123)','铁龙物流(600125)','杭钢股份(600126)','金健米业(600127)','弘业股份(600128)','太极集团(600129)','波导股份(600130)','岷江水电(600131)','重庆啤酒(600132)','东湖高新(600133)','乐凯胶片(600135)','当代明诚(600136)','浪莎股份(600137)','中青旅(600138)','西部资源(600139)','兴发集团(600141)','金发科技(600143)','*ST新亿(600145)','商赢环球(600146)','长春一东(600148)','廊坊发展(600149)','中国船舶(600150)','航天机电(600151)','维科精华(600152)','建发股份(600153)','宝硕股份(600155)','华升股份(600156)','永泰能源(600157)','中体产业(600158)','大龙地产(600159)','巨化股份(600160)','天坛生物(600161)','香江控股(600162)','中闽能源(600163)','新日恒力(600165)','福田汽车(600166)','联美控股(600167)','武汉控股(600168)','太原重工(600169)','上海建工(600170)','上海贝岭(600171)','黄河旋风(600172)','卧龙地产(600173)','美都能源(600175)','中国巨石(600176)','雅戈尔(600177)','东安动力(600178)','安通控股(600179)','瑞茂通(600180)','S*ST云大(600181)','S佳通(600182)','生益科技(600183)','光电股份(600184)','格力地产(600185)','莲花健康(600186)','国中水务(600187)','兖州煤业(600188)','吉林森工(600189)','锦州港(600190)','华资实业(600191)','长城电工(600192)','创兴资源(600193)','中牧股份(600195)','复星医药(600196)','伊力特(600197)','大唐电信(600198)','金种子酒(600199)','江苏吴中(600200)','生物股份(600201)','哈空调(600202)','福日电子(600203)','S山东铝(600205)','有研新材(600206)','安彩高科(600207)','新湖中宝(600208)','罗顿发展(600209)','紫江企业(600210)','西藏药业(600211)','江泉实业(600212)','亚星客车(600213)','长春经开(600215)','浙江医药(600216)','中再资环(600217)','全柴动力(600218)','南山铝业(600219)','江苏阳光(600220)','海南航空(600221)','太龙药业(600222)','鲁商置业(600223)','天津松江(600225)','升华拜克(600226)','赤天化(600227)','*ST昌九(600228)','城市传媒(600229)','*ST沧大(600230)','凌钢股份(600231)','金鹰股份(600232)','圆通速递(600233)','*ST山水(600234)','民丰特纸(600235)','桂冠电力(600236)','铜峰电子(600237)','海南椰岛(600238)','云南城投(600239)','华业资本(600240)','时代万恒(600241)','中昌数据(600242)','青海华鼎(600243)','万通地产(600246)','ST成城(600247)','延长化建(600248)','两面针(600249)','南纺股份(600250)','冠农股份(600251)','中恒集团(600252)','天方药业(600253)','鑫科材料(600255)','广汇能源(600256)','大湖股份(600257)','首旅酒店(600258)','广晟有色(600259)','凯乐科技(600260)','阳光照明(600261)','北方股份(600262)','路桥建设(600263)','ST景谷(600265)','北京城建(600266)','海正药业(600267)','国电南自(600268)','赣粤高速(600269)','外运发展(600270)','航天信息(600271)','开开实业(600272)','嘉化能源(600273)','武昌鱼(600275)','恒瑞医药(600276)','亿利洁能(600277)','东方创业(600278)','重庆港九(600279)','中央商场(600280)','太化股份(600281)','南钢股份(600282)','钱江水利(600283)','浦东建设(600284)','羚锐制药(600285)','S*ST国瓷(600286)','江苏舜天(600287)','大恒科技(600288)','亿阳信通(600289)','华仪电气(600290)','西水股份(600291)','远达环保(600292)','三峡新材(600293)','鄂尔多斯(600295)','S兰铝(600296)','广汇汽车(600297)','安琪酵母(600298)','安迪苏(600299)','维维股份(600300)','*ST南化(600301)','标准股份(600302)','曙光股份(600303)','恒顺醋业(600305)','*ST商城(600306)','酒钢宏兴(600307)','华泰股份(600308)','万华化学(600309)','桂东电力(600310)','荣华实业(600311)','平高电气(600312)','农发种业(600313)','上海家化(600315)','洪都航空(600316)','营口港(600317)','新力金融(600318)','亚星化学(600319)','振华重工(600320)','国栋建设(600321)','天房发展(600322)','瀚蓝环境(600323)','华发股份(600325)','西藏天路(600326)','大东方(600327)','兰太实业(600328)','中新药业(600329)','天通股份(600330)','宏达股份(600331)','白云山(600332)','长春燃气(600333)','国机汽车(600335)','澳柯玛(600336)','美克家居(600337)','西藏珠峰(600338)','*ST油工(600339)','华夏幸福(600340)','航天动力(600343)','长江通信(600345)','恒力股份(600346)','阳泉煤业(600348)','富通昭和(600349)','山东高速(600350)','亚宝药业(600351)','浙江龙盛(600352)','旭光股份(600353)','敦煌种业(600354)','精伦电子(600355)','恒丰纸业(600356)','承德钒钛(600357)','国旅联合(600358)','新农开发(600359)','华微电子(600360)','华联综超(600361)','江西铜业(600362)','联创光电(600363)','通葡股份(600365)','宁波韵升(600366)','红星发展(600367)','五洲交通(600368)','西南证券(600369)','三房巷(600370)','万向德农(600371)','中航电子(600372)','中文传媒(600373)','华菱星马(600375)','首开股份(600376)','宁沪高速(600377)','天科股份(600378)','宝光股份(600379)','健康元(600380)','青海春天(600381)','广东明珠(600382)','金地集团(600383)','山东金泰(600385)','北巴传媒(600386)','海越股份(600387)','龙净环保(600388)','江山股份(600389)','*ST金瑞(600390)','成发科技(600391)','盛和资源(600392)','粤泰股份(600393)','盘江股份(600395)','金山股份(600396)','安源煤业(600397)','海澜之家(600398)','抚顺特钢(600399)','红豆股份(600400)','海润光伏(600401)','大有能源(600403)','动力源(600405)','国电南瑞(600406)','安泰集团(600408)','三友化工(600409)','华胜天成(600410)','小商品城(600415)','湘电股份(600416)','江淮汽车(600418)','天润乳业(600419)','现代制药(600420)','仰帆控股(600421)','昆药集团(600422)','柳化股份(600423)','青松建化(600425)','华鲁恒升(600426)','中远海特(600428)','三元股份(600429)','*ST吉恩(600432)','冠豪高新(600433)','北方导航(600435)','片仔癀(600436)','通威股份(600438)','瑞贝卡(600439)','国机通用(600444)','金证股份(600446)','华纺股份(600448)','宁夏建材(600449)','涪陵电力(600452)','博通股份(600455)','宝钛股份(600456)','时代新材(600458)','贵研铂业(600459)','士兰微(600460)','洪城水业(600461)','九有股份(600462)','空港股份(600463)','蓝光发展(600466)','好当家(600467)','百利电气(600468)','风神股份(600469)','六国化工(600470)','包头铝业(600472)','华光股份(600475)','湘邮科技(600476)','杭萧钢构(600477)','科力远(600478)','千金药业(600479)','凌云股份(600480)','双良节能(600481)','中国动力(600482)','福能股份(600483)','信威集团(600485)','扬农化工(600486)','亨通光电(600487)','天药股份(600488)','中金黄金(600489)','鹏欣资源(600490)','龙元建设(600491)','凤竹纺织(600493)','晋西车轴(600495)','精工钢构(600496)','驰宏锌锗(600497)','烽火通信(600498)','科达洁能(600499)','中化国际(600500)','航天晨光(600501)','安徽水利(600502)','华丽家族(600503)','西昌电力(600505)','香梨股份(600506)','方大特钢(600507)','上海能源(600508)','天富能源(600509)','黑牡丹(600510)','国药股份(600511)','腾达建设(600512)','联环药业(600513)','海航基础(600515)','方大炭素(600516)','置信电气(600517)','康美药业(600518)','贵州茅台(600519)','*ST中发(600520)','华海药业(600521)','中天科技(600522)','贵航股份(600523)','长园集团(600525)','菲达环保(600526)','江南高纤(600527)',