首页   

告别传统K线!用 Python 和 Renko 图表捕捉趋势

开发者阿橙  · Python  · 6 天前

正文

大家好,我是橙哥!在金融市场中,交易者面临着大量的市场噪音,尤其是在传统的基于时间的图表中。微小的价格波动、频繁的虚假信号以及不稳定的趋势,往往让我们很难发现真正的交易机会。如何从这些纷繁的市场噪音中脱颖而出?这就是Renko图表的魅力所在。与传统的K线图不同,Renko图表专注于价格的变化而忽略时间因素,极大地去除了不必要的市场干扰,帮助交易者专注于趋势的变化。今天,我将带你一起走进如何使用Python和Backtrader实现一个Renko交易策略,并教你如何利用这一策略进行回测。

1. Renko图表与传统图表的区别

在传统的时间图表中,K线的每根蜡烛图都是基于固定时间周期(如1分钟、5分钟、1小时等)来绘制的,这意味着即使市场价格变动极小,图表也会被绘制出来。这种基于时间的限制,有时会掩盖价格波动的真正意义。而Renko图表则完全不同,它关注的是价格的变化。当价格波动达到设定的阈值时,才会生成一个新的“砖块”。每个砖块代表了一定的价格变化,帮助我们更加清晰地识别市场的趋势。通过过滤掉市场中的小波动,Renko图表让我们可以在复杂的市场中看到更大的趋势。


2. 用Python和Backtrader实现Renko策略

接下来,我们将展示如何在Python中实现Renko交易策略,并使用Backtrader这个强大的回测库来验证策略的效果。Backtrader不仅能够帮助我们快速构建交易策略,还可以对历史数据进行回测,验证策略的有效性本文完整源码请在文末获取。

数据下载与预处理

在策略实现之前,首先我们需要获取历史市场数据。为了便于演示,我们选择使用yfinance库来下载NVIDIA(NVDA)的历史数据,并将其转换为Backtrader所需的数据格式。

我们通过yfinance下载数据时,会得到一份包含开盘价、最高价、最低价、收盘价以及成交量的完整数据集。为了确保这些数据能够顺利输入Backtrader,我们对数据列进行了必要的重命名,以符合Backtrader的格式要求。这样,我们就为策略实现准备好了数据。

定义Renko指标

在实现Renko策略时,首先要做的就是定义Renko指标。Renko的关键在于如何生成“砖块”。我们通过继承Backtrader的Indicator类来定义自定义的Renko指标。每当市场价格发生变化,且价格变化达到预定的“砖块大小”时,我们就生成一个新的砖块。

在这段代码中,我们定义了一个名为CustomRenko的自定义指标类。在next()方法中,我们计算当前价格与上一根K线的收盘价之间的差值。如果这个差值超过了预设的砖块大小,我们就生成新的砖块。每个砖块的大小是固定的,这让我们可以过滤掉那些小幅度的价格波动,专注于大趋势。

构建Renko交易策略

接下来,我们实现Renko交易策略。该策略的核心思想非常简单:当出现新的向上砖块时,买入;当出现新的向下砖块时,卖出。为了进一步优化策略,我们还结合了简单的移动平均线(SMA)来帮助确认市场趋势。

RenkoStrategy中,我们首先实例化了CustomRenko指标并使用了20周期的简单移动平均线(SMA)。在next()方法中,我们根据Renko图表的趋势和当前价格是否高于或低于SMA来生成买卖信号。通过这种方式,我们不仅可以根据Renko图表捕捉趋势变化,还能使用SMA来过滤信号,避免市场的假突破。

3. 执行回测并进行可视化

最后,我们将策略应用到实际的市场数据中,执行回测,并通过图表直观地展示回测结果。以下是回测和可视化的代码:

我们执行回测,查看策略的初始和最终资金,并进行图形化展示。通过cerebro.plot(),我们能够看到策略执行过程中的市场走势以及交易信号。此外,回测结果还包括了总交易次数和最终的收益率,帮助我们评估策略的表现。

从回测结果图表可以看到,策略在整个测试期间的表现波动较大,现金余额(736.47)与资产价值(13359.73)差距显著。交易的盈亏曲线波动较频繁,但整体呈现出一定的增长趋势。绿色的买入信号和红色的卖出信号显示出策略按照Renko砖块变化的逻辑进行买卖,成功捕捉了市场的一些重要趋势。总体来看,这个策略在一段时间内能够带来33.60%的收益率,证明了该策略在这段历史数据上的有效性。

从交易日志来看,策略共进行了26次交易,其中包括了多次买入与卖出操作,且交易的时间间隔较为分散。策略在执行过程中始终紧跟市场的趋势变化,选择合适的买卖时机来最大化利润。最终资金从10000增长至13359.73,表明该策略在风险控制方面表现得相对稳健。通过合理的回测,可以看出该Renko交易策略的潜力,适用于趋势明确的市场环境。

4. 结论

Renko图表为交易者提供了一种通过价格波动来消除市场噪音的强大工具。通过Python和Backtrader,我们能够实现一个简单而高效的Renko交易策略,并通过回测验证其效果。随着对Renko策略的深入理解,你可以进一步优化砖块大小、加入更多技术指标以及改进交易逻辑,进而提升策略的表现。总之,Renko策略为我们提供了一个清晰、简洁的市场视角,让我们能够更加专注于趋势的捕捉和交易信号的验证。

长按下方扫码获取本文完整源码



点击阅读原文加入宽客邦量化俱乐部

© 2024 精读
删除内容请联系邮箱 2879853325@qq.com