精华内容
下载资源
问答
  • 原标题:基于python的开源量化交易,量化投资架构github地址:https://github.com/bbfamily/abuabu能够帮助用户自动完善策略,主动分析策略产生的交易行为,智能拦截策略生成的容易失败的交易单。现阶段的量化策略...

    原标题:基于python的开源量化交易,量化投资架构

    github地址:https://github.com/bbfamily/abu

    abu能够帮助用户自动完善策略,主动分析策略产生的交易行为,智能拦截策略生成的容易失败的交易单。

    现阶段的量化策略还是人工编写的代码,abu量化交易系统的设计将会向着由计算机自动实现整套流程的方向迈进,包括编写量化策略本身。

    abupy的设计目标是:用户只需要提供一些简单的种子策略,计算机在这些种子基础上不断自我学习、自我成长,创造出新的策略,并且随着时间序列数据不断智能调整策略的参数。

    索引

    内容

    位置

    阿布量化系统源代码

    abupy目录

    阿布量化使用教程

    abupy_lecture目录

    阿布量化非编程界面操作

    abupy_ui目录

    《量化交易之路》示例代码

    ipython/python目录

    《机器学习之路》示例代码

    https://github.com/maxmon/abu_ml特点

    使用多种机器学习技术智能优化策略

    在实盘中指导策略进行交易,提高策略的实盘效果,战胜市场支持的投资市场:

    美股,A股,港股

    期货,期权

    比特币,莱特币工程设计目标:

    分离基础策略和策略优化监督模块

    提高灵活度和适配性安装 部署

    推荐使用Anaconda部署Python环境,详见 量化环境部署

    测试 importabupy 界面操作(非编程)

    更多界面操作示例

    使用文档 1:择时策略的开发

    第一节界面操作教程视频播放地址

    择时策略决定什么时候买入投资品,回测告诉我们这种策略在历史数据中的模拟收益如何。

    买入择时因子的编写

    分解模式一步一步对策略进行回测

    卖出择时因子的实现

    在对的时间,遇见对的人(股票),是一种幸福

    在对的时间,遇见错的人(股票),是一种悲伤

    在错的时间,遇见对的人(股票),是一声叹息

    在错的时间,遇见错的人(股票),是一种无奈2: 择时策略的优化

    通过止盈止损保护策略产生的利润,控制风险。

    基本止盈止损策略

    风险控制止损策略

    利润保护止盈策略3: 滑点策略与交易手续费

    考虑应用交易策略时产生的成交价格偏差及手续费。

    滑点买入卖出价格确定及策略实现

    交易手续费的计算以及自定义手续费

    type

    date

    symbol

    commission

    buy

    20150423

    usTSLA

    8.22

    buy

    20150428

    usTSLA

    7.53

    sell

    20150622

    usTSLA

    8.22

    buy

    20150624

    usTSLA

    7.53

    sell

    20150706

    usTSLA

    7.53

    sell

    20150708

    usTSLA

    7.53

    buy

    20151230

    usTSLA

    7.22

    sell

    20160105

    usTSLA

    7.22

    buy

    20160315

    usTSLA

    5.57

    sell

    20160429

    usTSLA

    5.574: 多支股票择时回测与仓位管理

    针对多支股票实现择时策略,通过仓位管理策略控制风险。

    多支股票使用相同的因子进行择时

    自定义仓位管理策略的实现

    多支股票使用不同的因子进行择时

    使用并行来提升择时运行效率5: 选股策略的开发

    一个好的策略需要一个好的标的。

    选股因子的编写

    多个选股因子并行执行

    使用并行来提升选股运行效

    1439f831bad044bda0139efcc4f9ea87.jpeg

    6: 回测结果的度量

    正确的度量引领着正确的前进方向。

    度量的基本使用方法

    度量的可视化

    扩展自定义度量类7: 寻找策略最优参数和评分

    通过定制的评分机制,寻找一个策略最合理的参数,比如:应该考虑多少天的均线?

    参数取值范围

    Grid Search寻找最优参数

    度量结果的评分

    不同权重的评分

    自定义评分类的实现8: A股市场的回测

    A股市场的回测示例

    涨跌停的特殊处理

    对多组交易结果进行分析9: 港股市场的回测

    港股市场的回测示例

    优化策略,提高系统的稳定性

    将优化策略的'策略'做为类装饰器进行封装10: 比特币, 莱特币的回测

    比特币, 莱特币的走势数据分析

    比特币, 莱特币的走势可视化分析

    比特币,莱特币市场的回测

    比特币loss10: [-26.895, -3.284] , top10:(4.182, 38.786]

    比特币最近一年风险下降:loss10: [-16.273, -2.783], top10:(3.948, 15.22]

    莱特币loss10: [-28.48, -4.1], top10:(4.405, 41.083]

    莱特币最近一年继续呈现高风险loss10:[-22.823, -3.229] 高收益top10:(5.0606, 37.505]

    btcchange

    btc365change

    ltcchange

    ltc365change

    [-26.895, -3.284]

    [-16.273, -2.783]

    [-28.48, -4.1]

    [-22.823, -3.229]

    (-3.284, -1.547]

    (-2.783, -1.056]

    (-4.1, -2.022]

    (-3.229, -1.375]

    (-1.547, -0.8]

    (-1.056, -0.424]

    (-2.022, -0.922]

    (-1.375, -0.655]

    (-0.8, -0.224]

    (-0.424, -0.071]

    (-0.922, -0.389]

    (-0.655, -0.226]

    (-0.224, 0.143]

    (-0.071, 0.272]

    (-0.389, 0]

    (-0.226, 0.078]

    (0.143, 0.568]

    (0.272, 0.698]

    (0, 0.413]

    (0.078, 0.453]

    (0.568, 1.108]

    (0.698, 1.316]

    (0.413, 0.977]

    (0.453, 0.913]

    (1.108, 2.171]

    (1.316, 2.334]

    (0.977, 1.889]

    (0.913, 1.957]

    (2.171, 4.182]

    (2.334, 3.948]

    (1.889, 4.405]

    (1.957, 5.0606]

    (4.182, 38.786]

    (3.948, 15.22]

    (4.405, 41.083]

    (5.0606, 37.505]11: 期货市场的回测

    期货市场的特点

    看涨合约的回测

    看跌合约的回测

    位移路程比优化策略

    12: 机器学习与比特币示例

    如何在投资品的量化交易中正确使用机器学习技术?

    比特币特征的提取

    abu中内置机器学习模块的使用

    测试集的验证与非均衡技术

    继承AbuMLPd对数据处理进行封装13: 量化技术分析应用

    技术分析三大假设:市场行为涵盖一切;价格沿趋势移动;历史会重演。

    阻力线,支撑线自动绘制

    跳空技术分析

    传统技术指标技术分析14: 量化相关性分析应用

    相似的投资品数据的背后,往往是相似行为模式的投资人群。

    相关相似度的度量

    距离的度量与相似度

    相似相关接口的应用

    自然相关性15: 量化交易和搜索引擎

    搜索策略生成的失败交易,由裁判拦截住冲动的交易者。

    切分训练集交易的回测

    对交易进行人工分析

    主裁系统原理

    角度主裁

    赋予宏观上合理的解释

    最优分类簇筛选16: UMP主裁交易决策

    跳空主裁

    价格主裁

    波动主裁

    验证主裁是否称职, 在abu系统中开启主裁拦截模式

    组织裁判进行更复杂的综合裁决

    让裁判自己学习怎么配合,自己做出最正确的判断

    7aac1392fc9e4cb2b90f18aa9f429c7b.jpeg

    17: UMP边裁交易决策

    角度边裁

    价格边裁

    波动边裁

    综合边裁

    验证边裁是否称职

    在abu系统中开启边裁拦截模式18: 自定义裁判决策交易

    从不同视角训练新的主裁

    从不同视角训练新的边裁

    添加新的视角来录制比赛(记录回测特征)

    主裁使用新的视角来决策交易

    边裁使用新的视角来决策交易

    abupy中ump模块的设计目标是:

    不需要在具体策略中硬编码

    不需要人工设定阀值,即且使得代码逻辑清晰

    分离基础策略和策略优化监督模块,提高灵活度和适配性

    发现策略中隐藏的交易策略问题

    可以通过不断的学习新的交易数据19: 数据源

    abu支持股票、期货、数字货币等多种金融投资品的行情和交易,并具有高度可定制性。

    数据模式的切换

    数据存储的切换

    数据源的切换

    全市场数据的更新

    接入外部数据源,股票数据源

    接入外部数据源,期货数据源

    接入外部数据源,比特币,莱特币数据源

    更多阿布量化量化技术文章返回搜狐,查看更多

    责任编辑:

    展开全文
  • 小编说:数据可以说是量化投资的根本,一切投资策略都是建立在数据基础上的。本文以优矿网为例,带领大家用Python实现金融数据的获取与整理。本文选自《Python量化投资:从基础到实战》一书。作为投资者,我们常...

    小编说:数据可以说是量化投资的根本,一切投资策略都是建立在数据基础上的。本文以优矿网为例,带领大家用Python实现金融数据的获取与整理。

    本文选自《Python与量化投资:从基础到实战》一书。

    作为投资者,我们常听到的一句话是“不要把鸡蛋放入同一个篮子中”,可见分散投资可以降低风险,但如何选择不同的篮子、每个篮子放多少鸡蛋,便是见仁见智的事情了,量化投资就是解决这些问题的一种工具。

    目前各种在线策略编程平台都支持Python语言,例如优矿、米筐、聚宽等,这也是我们选择Python进行量化投资的原因。

    1 金融数据获取

    我们可以通过多种途径获取金融数据,业内的许多公司会购买Wind、恒生聚源等数据提供商的数据库,若尚未入行,则也可以通过非常多的第三方策略平台获取免费数据,例如优矿、聚宽、米筐等。优矿依托通联数据,提供了丰富的数据信息,这里主要介绍如何在优矿中调用获取金融数据。

    首先,可以在优矿官网(https://uqer.io)注册一个账号,然后单击“研究数据”模块,如图所示。

    362d141a48de

    可以看到,这些数据基本涵盖了大部分金融数据,而且绝大部分是免费的。我们以一些最常用的金融数据来展示如何对它们进行调用。

    单击“开始研究”模块,在左侧找到新建按钮,新建一个Notebook,再单击对应的Notebook,便进入Python代码的编辑环境。

    我们将NoteBook左上角的模式设置为代码模式,开始调用数据。首先,打开一个浏览器新窗口并回到优矿的“研究数据”模块,寻找我们需要的数据。假定需要股票日行情数据,则我们既可以通过左边的一级选项一步一步地往下点来找到数据,也可以直接通过关键字在上方的搜索框中进行搜索。然后,我们找到了沪深股票的日行情数据,单击“展开详情”,结果如下图。

    362d141a48de

    在详情中展示了各个参数的含义,例如,在输入时我们需要给出要调用哪些股票及在什么时间段的行情。而在返回值中,我们可选的行情不仅包括基本的高开低收、成交量、涨跌幅,也包括流通市值、VWAP等数据,应将所有选择返回的项传给field参数。在Notebook中的代码编写如图。

    362d141a48de

    上图中,我们调取了平安银行与浦发银行在2015年5月13日的收盘价与总市值,返回的是一个DataFrame。需要注意的是,这里传入的股票代码是通联内部的编码,要在原股票代码的基础上加上后缀,例如对深市的股票加上后缀XSHE,对沪市的股票则加上后缀XSHG。当然,也支持直接传入股票代码,可以将原始股票的代码传入ticker参数。

    362d141a48de

    除了某一天的截面数据,DataAPI也支持获取过去一时间段的数据,通过beginDate与endDate参数即可方便地获取。下图中,我们调取了平安银行与浦发银行从2018年1月17日至2018年1月19日的收盘价与总市值数据。

    362d141a48de

    股票日行情DataAPI支持提取多只股票在某一时间段的数据,我们再来看看量化投资常用的因子数据。

    362d141a48de

    在搜索因子中排名前两位的就是我们需要的DataAPI。可以看到有两个因子数据接口:一个用于获取多只股票在某一天的因子数据,另一个用于获取某只股票在历史上某一时间段的因子数据。可能是出于对数据量的考虑,并没有一个因子DataAPI可以直接调用多只股票在某一时间段的数据,所以我们在使用优矿的因子DataAPI时,应当考虑哪个DataAPI会更适合我们的需求。

    如果只是想调用某一天的多只股票的因子数据,则应该使用如下DataAPI,如下图所示。

    362d141a48de

    而如果想调用一只股票在某一时间段的因子数据,则应该使用另一个 DataAPI。

    362d141a48de

    如果我们还是想获取多只股票在某一时间段的因子数据,则可以写循环来多次调用DataAPI,将它们全部取出来。

    362d141a48de

    除了这些常用的金融数据,研究数据模块还包括财报数据、事件数据、期货数据等,我们可以通过搜索或者分类选项找到它们,在详情中对相应的参数有详细的解释。

    2  数据整理

    仅仅知道如何获取数据是不够的,我们还需要将原始数据整理成正确的、便于我们进一步使用的数据。下面展示一些常用的数据整理理念及Python的实现方法。

    2.1数据整合

    数据整合指将不同数据源的数据进行汇总,形成可用于综合分析的表。

    2.1.1  合并、追加

    指向表中添加其他表中的字段或记录。例如,如果要分析一只股票站上其均线的情况,则需要知道其收盘价格及均线价格。当然,均线价格可以通过收盘价计算出来,但实际上在优矿因子库中已经有了均线因子,可以直接使用。现在的问题就变成了,如何将我们通过行情DataAPI与因子DataAPI调出来的数据合并?这个问题在Python中通过一两行代码即可解决。

    362d141a48de

    上图所示,我们通过merge函数便把均线价格添加到行情表上了,再在这个表上判断当日是否站上均线就十分方便了。

    2.1.2  数据透视

    指将长表转换为宽表,将作业型表转换为分析型表。假设我们有一个包含多只股票在某一时间段的总市值数据的长表,是优矿行情DataAPI的返回结果类型,那么如何方便地求出这些股票每一天的市值之和呢?这时可以使用Python的数据透视表方法,将长表转换为宽表,之后运用DataFrame的sum方法即可很简单地解决这个问题。

    362d141a48de

    如上所示,在DataAPI的原始返回数据结构中计算每天的市值之和是比较困难的,然而在转换数据格式后,分析和计算起来就十分方便了。

    2.2数据过滤

    我们经常要对原始数据按某个指标进行过滤,例如在获取到了所有股票的PE后,仅想看PE大于0的股票(对于PE小于0的股票,该指标没有意义),这是非常常见的数据整理需求。

    下图中,我们调取了所有A股在2018年1月19日的PE值,然后在DataFrame属性框中写筛选逻辑即可完成过滤。

    362d141a48de

    2.3数据探索与数据清洗

    通常我们会认为ROE的值约为10%~30%,但实际上在调用所有股票的ROE因子进行分析时,我们发现并不是这么一回事。这里以ROE为例,介绍常用的数据探索方法及数据清洗方式。

    我们在进行数据探索时,通常会先通过做一个简单的直方图来看看数据的分布。如下所示,真实的ROE分布可能与我们想象的并不一样,存在许多负值,并且大约存在-3~3的极端值。

    362d141a48de

    可以再做一下boxplot图来看看结果,如下图。

    362d141a48de

    通过上图的boxplot图也可以看出,在数据中存在很多异常值。当然这些异常值按照ROE的传统算法,可能并不算是错误的值。但如果要把ROE当作一个指标,进一步分析其对股票的未来收益或者其他方面的影响,则在建立回归或者其他模型时,就必须考虑到对异常值的处理,因为它对模型的影响可能很大。

    这里我们以最常用的3倍标准差法为例,将超过3倍标准差的数据调整为3倍标准差。

    362d141a48de

    可以看到,经过去极值处理后的数据全部在原始数据的3倍标准差内,分布不再有极端值,已处理后的因子建模将更加稳定,这也是数据挖掘中常常提及的“盖帽法”。

    2.4数据转化

    除了数据清洗,为了建立模型,我们有时还需要进行数据转化。这里介绍两个常用的数据转化方法:数据标准化及设置哑变量。

    2.4.1  数据标准化

    数据标准化可以消除量纲及变量自身变异程度的影响,对很多模型来说都是十分重要的。常用的数据标准化有Min-max标准化和z-score标准化。

    Min-max标准化的计算公式为:

    362d141a48de

    z-score标准化的计算公式为:

    362d141a48de

    Min-max标准化可以将标准化后的值统一到0~1;z-score标准化可以使标准化后的数据分布均值为0,方差为1。我们将去极化后的数据再进行一次标准化,如下图。

    362d141a48de

    362d141a48de

    标准化永远不会改变数据原始的序数,它做的只是对数值大小的调整。若不看数值的话,则数据的分布并没有变化。

    2.4.2  哑变量

    除了标准化,我们在进行金融建模时的另一个常用的数据转化方法就是设置哑变量。例如,在将股票的行业信息加入建模分析时,依据原始分类是无法进行处理的,必须把它转化为0或1的变量。

    362d141a48de

    上图中,我们首先调用通联数据的股票行业分类DataAPI,获取各股票的一级行业分类名字,然后通过一系列数据处理,生成每个行业的0或1的变量,这样才能把行业作为变量加入模型中进行分析。

    当然,Pandas本身也有get_dummies函数,也可以瞬间对分类变量进行哑变量化,读者可自行查阅帮助文档学习。

    相关图书《Python与量化投资:从基础到实战》

    362d141a48de量化投资名师王小川主编、提供Python零基础入门及量化策略建模参考及实现、提供大型回测平台、代码直接实盘、可在线交流

    作者:王小川 等

    图书详情:京东、当当、亚马逊

    展开全文
  • 利用python分析量化投资问题是现在研究的热点,学习python基础,数学工具,策略开发。学习实例,多为实际需求。利用故事、数学模型和代码,学习量化与编程的关系,描绘量化的人生哲学,学习作者在量化方面的经验,...

    利用python分析量化投资问题是现在研究的热点,学习python基础,数学工具,策略开发。学习实例,多为实际需求。利用故事、数学模型和代码,学习量化与编程的关系,描绘量化的人生哲学,学习作者在量化方面的经验,体会作者对交易、人生的理解。

    Python凭借其简单、易读、可扩展性以及拥有巨大而活跃的科学计算社区,在需要分析、处理大量数据的金融行业得到了广泛而迅速的应用,并且成为该行业开发核心应用的首选编程语言。

    《Python与量化投资:从基础到实战》主要讲解如何利用Python进行量化投资,包括对数据的获取、整理、分析挖掘、信号构建、策略构建、回测、策略分析等,也是利用Python进行数据分析的指南,有大量的关于数据处理分析的应用,并将重点介绍如何高效地利用Python解决投资策略问题。《量化投资以Python为工具》主要讲解量化投资的思想和策略,并借助Python 语言进行实战。

    参考:《Python与量化投资:从基础到实战(王小川)》PDF,562页,带书签目录,文字可以复制;配套源代码。《量化投资以Python为工具(蔡立耑 )》PDF,550页;配套源代码。

    下载: https://pan.baidu.com/s/1rPBIpPlXy5_fnqxXT59PNA   提取码: di33

    20490782-eb10b19f5e5e2541.png

    《量化交易之路用Python做股票量化分析》有不少针对股票编程的体会,娓娓道来。就像一位前辈将他的工作笔记展示在你的面前,语重心长的给你讲有哪些经验,前边的路哪里有坑,哪里有坎,哪里有小技巧。又像有人带着你读,软件编程的说明文档。前面讲的是编程技巧,估计策略部分是常用的普通策略。其目的是受人以鱼竿,而不是鱼,进而构建自己独特交易想法的交易系统,也就是定制。

    《量化交易之路用Python做股票量化分析》PDF,407页,文字可以复制;配套源代码;阿布 著。《量化投资策略与技术修订版》PDF,572页,文字可以复制。丁鹏 著。

    下载: https://pan.baidu.com/s/19VP9A_cbjIVlFU2_oe15qw   提取码: hfu3

    20490782-d0aa081c59d4b6f5.jpg

    《量化投资:策略与技术(修订版)》是国内少有的有关量化投资策略的著作。首先,介绍了量化投资大师西蒙斯的传奇故事(连续20年,每年赚60%)。然后,用60多个案例介绍了量化投资的各个方面的内容,主要分为策略篇与理论篇两部分。策略篇主要包括:量化选股、量化择时、股指期货套利、商品期货套利、统计套利、期权套利、算法交易和资产配置等。理论篇主要包括:人工智能、数据挖掘、小波分析、支持向量机、分形理论、随机过程及IT技术等。最后介绍了作者开发的D—Alpha量化对冲交易系统,该系统全球市场验证显示具有长期稳健的收益率。

    《Python金融大数据分析》适合对使用Python进行大数据分析、处理感兴趣的金融行业开发人员阅读,学习《Python金融大数据分析》中文PDF+英文PDF+代码。

    下载: https://pan.baidu.com/s/1FsJ_P0uUHPU8Er2aYba6jw   提取码: yuby

    20490782-ba39f6e8c212696d.png

    《Python金融大数据分析》提供了使用Python进行数据分析,以及开发相关应用程序的技巧和工具。总计分为3部分,共19章,第1部分介绍了Python在金融学中的应用,其内容涵盖了Python用于金融行业的原因、Python的基础架构和工具,以及Python在计量金融学中的一些具体入门实例;第2部分介绍了金融分析和应用程序开发中最重要的Python库、技术和方法,其内容涵盖了Python的数据类型和结构、用matplotlib进行数据可视化、金融时间序列数据处理、高性能输入/输出操作、高性能的Python技术和库、金融学中需要的多种数学工具、随机数生成和随机过程模拟、Python统计学应用、Python和Excel的集成、Python面向对象编程和GUI的开发、Python与Web技术的集成,以及基于Web应用和Web服务的开发;第3部分关注的是蒙特卡洛模拟期权与衍生品定价实际应用的开发工作,其内容涵盖了估值框架的介绍、金融模型的模拟、衍生品的估值、投资组合的估值、波动率期权等知识。

    展开全文
  • 量化投资系列文章: ...今天我们来使用backtrader试试另一个量化投资策略:KDJ策略,KDJ是最常用的指标之一,其中文名叫“随机指标”。它通过统计学原理,识别N个交易日内最高价、最低价、最新收盘价三者之

    量化投资系列文章:

    Backtrader 教程 — Python 量化投资实战教程(1)

    Python 量化投资实战教程(2) —MACD策略(+26.9%)

    Python 量化投资实战教程(3) —A股回测MACD策略

    Github仓库:https://github.com/Ckend/pythondict-quant


    今天我们来使用backtrader试试另一个量化投资策略:KDJ策略,KDJ是最常用的指标之一,其中文名叫“随机指标”。它通过统计学原理,识别N个交易日内最高价、最低价、最新收盘价三者之间的比例关系来计算随机值(RSV),然后再根据加权移动平均线(EMA)的方法来计算K值、D值、J值。

    具体计算方法如下:

    • RSV = (收盘价-N周期最低价)/(N周期最高价-N周期最低价)*100
    • K值 = RSV的N周期加权移动平均值
    • D值 = K值的N周期加权移动平均值
    • J值 = 3_K-2_D

    一般来说,RSV的N周期选择9,K和D的N周期选择3。

    基本概念大家都懂了,那如何根据KDJ值决定买入和卖出呢?

    当J值上穿K值的时候,是买入信号,此时买入。

    当J值下穿K值的时候,是卖出信号,此时卖出。

    这个策略有用吗?让我们来试试看。

    1.准备

    开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda

    Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),准备开始输入命令安装依赖。

    当然,我更推荐大家用VSCode编辑器,把本文代码Copy下来,在编辑器下方的终端运行命令安装依赖模块,多舒服的一件事啊:Python 编程的最好搭档—VSCode 详细指南。

    在终端输入以下命令安装我们所需要的依赖模块:

    pip install backtrader

    看到 Successfully installed xxx 则说明安装成功。

    Backtrader基本使用请看我们前一篇文章:
    backtrader教程—量化投资实战教程(1)

    本文全部代码,请在Python实用宝典后台回复:量化投资4 进行下载。

    2.单一KDJ策略

    如果你以前没用过backtrader,请先看:

    backtrader教程—量化投资实战教程(1)

    进行学习,不然你会有点蒙。直接下载代码学习也是一种方式,但前提是你的自学本领够强。

    首先我们需要先计算K、D、J三个值,前面我们也说过了他们的计算方式:

    • RSV = (收盘价-N周期最低价)/(N周期最高价-N周期最低价)*100
    • K值 = RSV的N周期加权移动平均值
    • D值 = K值的N周期加权移动平均值
    • J值 = 3_K-2_D

    知道了计算方式,那之后的工作就简单了:

            # 9个交易日内最高价
            self.high_nine = bt.indicators.Highest(self.data.high, period=9)
            # 9个交易日内最低价
            self.low_nine = bt.indicators.Lowest(self.data.low, period=9)
            # 计算rsv值
            self.rsv = 100 * bt.DivByZero(
                self.data_close - self.low_nine, self.high_nine - self.low_nine, zero=None
            )
            # 计算rsv的3周期加权平均值,即K值
            self.K = bt.indicators.EMA(self.rsv, period=3)
            # D值=K值的3周期加权平均值
            self.D = bt.indicators.EMA(self.K, period=3)
            # J=3*K-2*D
            self.J = 3 * self.K - 2 * self.D
    

    最后决定买入点和卖出点:

        # Python 实用宝典
        def next(self):
            self.log("Close, %.2f" % self.dataclose[0])
            if self.order:
                return
    
            if not self.position:
                # J - D 值
                condition1 = self.J[-1] - self.D[-1]
                condition2 = self.J[0] - self.D[0]
                if condition1 < 0 and condition2 > 0:
                    self.log("BUY CREATE, %.2f" % self.dataclose[0])
                    self.order = self.buy()
    
            else:
                condition = (self.dataclose[0] - self.bar_executed_close) / self.dataclose[0]
                if condition > 0.1 or condition < -0.1:
                    self.log("SELL CREATE, %.2f" % self.dataclose[0])
                    self.order = self.sell()
    

    不过从卖出策略中可以看到,我暂时没有使用J下穿K值的方式来卖出股票,而是采用涨跌10%的限制性条件作为卖出信号,看看这样的策略表现如何。

    这里和上篇文章一样,咱用10000元作为本金,对002859这只股票,回测其2010年1月1日至2020年4月21日期间的走势:

    效果不是很好,本金10000元,最后剩余9892元,也就是还亏损了。从盈利和亏损点上来看,该策略确实亏损次数更多,比盈利次数多了一次。

    不过这是我们基于限制性卖出的条件,如果是J值下穿K值作为卖出信号呢?

    基于backtrader,我们做这样的买入卖出信号调整真的非常简单:

        # Python 实用宝典
        def next(self):
            self.log("Close, %.2f" % self.dataclose[0])
            if self.order:
                return
    
            condition1 = self.J[-1] - self.D[-1]
            condition2 = self.J[0] - self.D[0]
            if not self.position:
                # J - D 值
                if condition1 < 0 and condition2 > 0:
                    self.log("BUY CREATE, %.2f" % self.dataclose[0])
                    self.order = self.buy()
    
            else:
                if condition1 > 0 or condition2 < 0:
                    self.log("SELL CREATE, %.2f" % self.dataclose[0])
                    self.order = self.sell()
    

    效果如何?

    我勒个去,您这个不太靠谱啊,10000元本金只剩9029元了。

    但是这样并没有足够证据否认这个策略的价值,接下来我们尝试将它和MACD策略结合在一起使用。

    3.多策略回测

    通过回测得到的图表,我发现,KDJ指标在决定买入信号的时候有很大的延迟,比MACD的买入信号延迟重得多,但是它的卖出信号却不错,很敏感。

    所以我们可以考虑将MACD策略也引入进来,使用MACD决策买入,KDJ信号决策卖出。引入MACD策略相关变量:

            # MACD策略参数
            me1 = EMA(self.data, period=12)
            me2 = EMA(self.data, period=26)
            self.macd = me1 - me2
            self.signal = EMA(self.macd, period=9)
            bt.indicators.MACDHisto(self.data)
    

    至于为什么MACD策略是这么计算的,请看我们上一篇文章:Python 量化投资实战教程(2) —MACD策略(+26.9%)。所以我们的文章是环环相扣的哦,如果没有阅读,请记得回头补上。

    从上面两张图中,大家可以看到两条变化非常大的线,这是两条3日EMA的线。我们可以将其取消掉,因为它们没有太多价值。加一个plot=False参数即可让它们不显示:

            # 计算rsv的3周期加权平均值,即K值
            self.K = bt.indicators.EMA(self.rsv, period=3, plot=False)
            # D值=K值的3周期加权平均值
            self.D = bt.indicators.EMA(self.K, period=3, plot=False)
    

    基于MACD策略的买入信号进行买入,KDJ策略的卖出信号进行卖出:

            if not self.position:
                # 买入基于MACD策略
                condition1 = self.macd[-1] - self.signal[-1]
                condition2 = self.macd[0] - self.signal[0]
                if condition1 < 0 and condition2 > 0:
                    self.log('BUY CREATE, %.2f' % self.dataclose[0])
                    self.order = self.buy()
    
            else:
                # 卖出基于KDJ策略
                condition1 = self.J[-1] - self.D[-1]
                condition2 = self.J[0] - self.D[0]
                if condition1 > 0 or condition2 < 0:
                    self.log("SELL CREATE, %.2f" % self.dataclose[0])
                    self.order = self.sell()
    

    回测效果如下:

    最终得到10057.06,赚了57块钱。。当然,总比单纯KDJ策略不赚的好。但是这个策略依然存在问题,它在很多能赚大钱的时候,过于保险地将股票卖出了,以至于其亏损的次数其实大于盈利的次数。

    当然,单纯从一只股票上我们是无法看出这个策略的整体好坏的,下一篇量化投资文章(大约在2020/05/09),我们将在A股中随机取1000只股票,来验证这个复合策略的整体收益。敬请期待Python实用宝典的最新更新哦。

    我们的文章到此就结束啦,如果你喜欢我们今天的Python 实战教程,请持续关注我们,如果对你有帮助,麻烦在下面点一个赞/在看哦,有任何问题都可以在下方留言区留言,我们都会耐心解答的!


    Python实用宝典

    不只是一个宝典

    欢迎关注公众号:Python实用宝典

    原文来自Python实用宝典:Python 量化投资实战教程(4) —KDJ 策略

    Python实用宝典

    展开全文
  • yu = new_df['close'][-1] * 600 #剩余股票价值 #print(new_df.resample('M').first()['open']*100)#print(new_df.resample('A').last()['close'][:-1] * 100) print(maichu - mairu + yu) 双均线策略 需求一:计算...
  • 原标题:【Python量化投资】趋向系统指标策略 ADX、DMI指标用于股票池(附源码) [什么是ADX]ADX(average directional indicator) 平均趋向指数,常用的趋势衡量指标。通常与趋向系统(DMI)一起使用,利用多空趋向...
  • 揭秘人人都能学的量化思维投资数字货币在上一篇中,我们介绍了量化交易的一般流程、基本概念以及一些基本的策略设计思路,在这一篇中,我们将要利用上述成果,手把手教您构建第一个量化交易策略!我们以比特币作为...
  • Python 量化投资实战教程(2) —MACD策略(+26.9%) Python 量化投资实战教程(3) —A股回测MACD策略 Github仓库:https://github.com/Ckend/pythondict-quant 上次,我们简单地用Python 和 backtrader 使用最简单的...
  • Python 量化投资实战教程(2) —MACD策略(+26.9%) Python 量化投资实战教程(3) —A股回测MACD策略 Python 量化投资实战教程(4) —KDJ 策略 Github仓库:https://github.com/Ckend/pythondict-quant 许多技术投资方面...
  • ** **Python量化投资与A股量化实战课程概述越来越多的投资者和机构对量化投资及程序化交易产生了兴趣。也许你想求得一份量化投资的相关工作,但又觉得量化投资很神秘,不知道从何学起。马云说,对于新兴事物,绝大...
  • Python 量化投资实战教程(2) —MACD策略(+26.9%) Python 量化投资实战教程(3) —A股回测MACD策略 Github仓库:https://github.com/Ckend/pythondict-quant 上一回,我们基于简单的MACD策略回测了华正新材这只股票的...
  • 17!
  • 一、搭建一个简单的交易策略1、策略先看一个非常简单的交易策略:每天买...为了将投资灵感高效地转化成计算机可执行的量化策略,必须基于一种模式来写,框架就是指这种模式。而此框架包含两个部分即初始化与周期循环...
  • Dual Thrust交易算法介绍Dual Thrust交易算法是由Michael Chalek开发的著名量化交易策略。它通常用于期货,外汇和股票市场。DualThrust的概念属于典型的突破交易系统,其运用“双推力”系统根据历史价格构建更新的...
  • Python量化投资与A股量化实战课程概述 越来越多的投资者和机构对量化投资及程序化交易产生了兴趣。也许你想求得一份量化投资的相关工作,但又觉得量化投资很神秘,不知道从何学起。马云说,对于新兴事物,绝大多数人...
  • Python量化投资与股票投资实战

    千人学习 2019-08-01 17:39:52
    课程介绍 课程内容的设置或者教学目标 课程特色: 1. 项目化教学。每位同学在课程结束时,都能有自己的策略。... 多个A股量化投资策略实证,分享 策略、回测、数据可视化、实盘接口等解决方案及代码
  • Python 量化投资实战教程(2) —MACD策略 Python 量化投资实战教程(3) —A股回测MACD策略 Python 量化投资实战教程(4) —KDJ 策略 Python 量化投资实战教程(5) — A股回测KDJ 策略 Github仓库:...
  • StudyQuant -【量化投资教学系列帖子】,通过实际案例教初学者使用python进行量化投资,分享最前沿的研究成果。希望能对大家有帮助。 量化投资文章 请点击此处 相关文章 区间震荡策略曾20天,年化收益17000000+...
  • 往期推荐量化投资原来这么简单(1)量化投资原来这么简单(2)—MACD策略(+26.9%)量化投资原来这么简单(3) —A股回测MACD策略Python 量化投资原来这么简单(4) —KD...
  • 原标题:Python量化投资实训营 时间:基础班:2018.2.2~2018.2.7(五天)地点:清华大学深圳研究生院量化研究中心在2017年,已经成功举办3期线下营队公益支持方为清华大学深圳研究生院量化研究中心配合大鱼金融联手...
  • Python 量化投资 —— 使用qteasy创建并回测一个简单的双均线择时交易策略 大家知道沪深300是一个非常重要的指数、但是它的赚钱效应并不明显,如果有人从2008年初的大顶开始投资沪深300,要到今年才能解套。这也说明...
  • Python在量化领域的现状就跟Java在web领域无可撼动的地位一样,Python也已经在金融量化投资领域占据了重要位置,从各个业务链条都能找到相应的框架实现。在量化投资(证券和比特币)开源项目里,全球star数排名前10...
  • 【2019新版】第1课股市10年400的交易策略课时1 10年400倍的交易策略(上)课时2 10年400倍的交易策略(下)【2019新版】第2课:Python基础课时03 1.1 Python安装及环境配置(Windows版)课时04 1.1 Python安装及环境...
  • 新年伊始,很荣幸笔者的《教你用 Python 进阶量化交易》专栏在慕课专栏板块上线了,欢迎大家订阅!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外会陆续推出一些手记来辅助同学们学习本专栏内容,因此同学...
  • 欢迎大家订阅《Python实战-构建基于股票的量化交易系统》小册子,小册子会陆续推出与小册内容相关的专栏文章,对涉及到的知识点进行更全面的扩展介绍,并且会有选择地收录至小册中,更便于广大读者查阅知识点。...
  • Python量化投资与股票投资实战 毕业于利物浦大学数学学院金融数学专业,获...
  • 初学python量化投资,第一个策略 我从去年开始炒股,疫情期间又在家里学了学python,开学以后看了一本利用excel的量化投资书籍,所以想自己在python上捣鼓捣鼓 数据来源 量化第一步,首先要搞到数据,刚开始我上炒股...
  • 上一篇系列文章《Python 量化投资实战教程(7)—孕线真的有用吗?》中我们讲到了孕线的形态和其基本的量化规则。不过,当时只是基于一支股票对这个策略进行回测,数据量过少,其结果并不具有...
  • Python量化投资与期货实战 课程概要 越来越多的投资者和机构对期货投资程序化交易产生了兴趣。在成熟的正规期货市场上,有着不少的神话故事,如1、"中国期市第一人"王宝峰:连续22年盈利 2、 伊士顿高频交易获利20亿...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,242
精华内容 896
关键字:

python量化投资策略代码

python 订阅