综合量价信息,跟着主流资金走:分享一个年化140%最大回撤30%的策略!

本文深入探讨了AD和ADOSC指标的原理,揭示了它们存在的问题,包括多空对比漏洞、成交量可靠性及不稳定的锚点。通过Python计算验证,提出魔改思路,将成交量替换为成交额并为ADOSC提供稳定锚点,实现金叉死叉策略。实测显示,改进策略在中证500和中证1000上表现优异,年化收益率高达140%,最大回撤约30%。

过去我们讲的指标,主要是一些均线类和动量类的指标,其中有很多都表现出了很好的趋势或方向指示意义。

但是这些指标有一个共同的特点,那就是主要从价格数据(开盘价、收盘价、最高价、最低价)计算得来,并没有考虑成交量的信息。但是但凡有点经验的股友应该都知道,在炒股过程中,成交量也是非常重要的一个因素。比如在趋势末端的爆量换手,很有可能就是趋势反转的信号。

那么有没有哪个经典指标是考虑了成交量呢?自然是有的,比如我们今天要讲的AD和ADOSC。

其中,AD的全称是Chaikin Accumulation/Distribution Line,中文翻译为累积派发线,Chaikin是发明者的姓氏。AD衡量的是一段时间内的资金累积量。

而ADOSC则是对AD指标做了类似于MACD中DEA-DIFF一样的操作,用AD的短周期EMA减去长周期EMA得到的。其全称为Chaikin Accumulation/Distribution Oscillator,中文翻译为累积派发震荡指标。

今天,我来带大家深入理解一下这两个指标的原理,找找看它们存在的问题,并且尝试着魔改解决一下。

一、AD和ADOSC的原理

AD

首先,我们看下AD的计算公式。

$$
AD = \left {
\begin{aligned}
&AD_{-1} + V \times \frac{(Close - Low) - (High - Close)}{High - Low} , \quad &High \ne Low\
&

以下是一个简单的示例代码,用于实现一个择时策略,目标是收益大于 30%最大回撤率小于 30%。这里使用 `pandas` `numpy` 库进行数据处理,假设已有股票价格数据。 ```python import pandas as pd import numpy as np def calculate_max_drawdown(returns): cum_returns = (1 + returns).cumprod() running_max = np.maximum.accumulate(cum_returns) drawdown = (cum_returns - running_max) / running_max return drawdown.min() def calculate_annualized_return(returns, periods_per_year): total_return = (1 + returns).prod() years = len(returns) / periods_per_year return (total_return ** (1 / years)) - 1 def timing_strategy(prices): # 简单示例:当价格上涨时买入,下跌时卖出 signals = prices.pct_change() > 0 signals[0] = False # 第一天不交易 returns = prices.pct_change() * signals.shift(1) # 计算收益最大回撤 periods_per_year = 252 # 假设一有 252 个交易日 annualized_return = calculate_annualized_return(returns.dropna(), periods_per_year) max_drawdown = calculate_max_drawdown(returns.dropna()) # 检查是否满足条件 if annualized_return > 0.3 and max_drawdown > -0.3: print("策略满足收益大于 30%最大回撤率小于 30% 的条件。") print(f"收益: {annualized_return * 100:.2f}%") print(f"最大回撤: {max_drawdown * 100:.2f}%") else: print("策略不满足条件。") print(f"收益: {annualized_return * 100:.2f}%") print(f"最大回撤: {max_drawdown * 100:.2f}%") return annualized_return, max_drawdown # 示例数据 np.random.seed(0) prices = pd.Series(np.random.randn(1000).cumsum() + 100) # 运行策略 annualized_return, max_drawdown = timing_strategy(prices) ``` ### 代码说明: 1. **`calculate_max_drawdown` 函数**:用于计算最大回撤率,通过计算累计收益率运行最大值来得到回撤序列,然后取最小值。 2. **`calculate_annualized_return` 函数**:用于计算收益率,根据总收益率交易周期数来计算收益。 3. **`timing_strategy` 函数**:实现了一个简单的择时策略,当价格上涨时买入,下跌时卖出。然后计算收益最大回撤率,并检查是否满足条件。 4. **示例数据**:使用 `numpy` 生成随机价格数据进行测试。 ### 注意事项: - 这只是一个简单的示例策略,实际应用中需要根据具体需求市场情况进行调整。 - 数据的质量准确性对结果有很大影响,需要确保使用的价格数据准确无误。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量化祛魅官 老Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值