作者:老余捞鱼
原创不易,转载请标明出处及原作者。

写在前面的话:在这篇文章中,我将详细讲解如何使用Python实现内部条形强度(IBS)交易策略,并进行实战回测。通过对市场数据的深入分析,我发现该策略在特定市场条件下表现出色,不仅收益稳健,风险也在可控范围内。如果你对量化交易感兴趣,这篇文章将帮助你快速上手并优化这一策略。
一、什么是 IBS 策略 ?
Internal Bar Strength (IBS) 是一种技术分析交易策略,旨在通过分析价格行为来识别潜在的交易机会。该策略主要基于价格的内部条形图(即K线)强度,帮助交易者判断市场的强弱以及可能的反转点。
1.1 如何计算 IBS?
IBS是通过比较当前K线的收盘价与其最高价和最低价来评估市场的强度。其计算方式如下:

- 选择时间框架:首先,选择一个适合的时间框架(如日线、小时线等)。
- 获取K线数据:收集当前K线的最高价、最低价和收盘价。
- 应用公式:将收盘价、最高价和最低价代入IBS公式进行计算。
具体来说,IBS公式为:
IBS = (Close - Low) / (High - Low)
1.2 IBS的应用

交易前提很简单:
- 买入信号:当IBS值接近1时,表明市场强劲,可能是一个买入信号。
- 卖出信号:当IBS值接近0时,表明市场疲软,可能是一个卖出信号。
在使用IBS策略时,我们还应结合其他技术指标(如移动平均线、相对强弱指数等)进行确认,以降低风险。此外,设置止损和止盈点也是保护资本的重要措施。
二、技术实现
我们将用Python实现下面几个核心模块,实现后的图形分析效果如下:

现在对代码逐步展开分析。
2.1 数据处理和策略设置
代码从导入基础库和构建完整的指标计算功能起步:
import yfinance as yf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
from typing import Dict, Tuple
def calculate_metrics(returns: pd.Series) -> Dict:
"""
Calculate comprehensive trading metrics
"""
# Basic return metrics
total_return = (returns + 1).cumprod().iloc[-1] - 1
annual_return = (1 + total_return) ** (252/len(returns)) - 1
# Risk metrics
daily_vol = returns.std()
annual_vol = daily_vol * np.sqrt(252)
sharpe_ratio = np.sqrt(252) * returns.mean() / daily_vol if daily_vol != 0 else 0
# Drawdown analysis corregida
cum_returns = (1 + returns).cumprod()
running_max = np.maximum.accumulate(cum_returns)
drawdown = (cum_returns - running_max) / running_max
max_drawdown = drawdown.min()
# Win rate analysis
winning_days = returns[returns > 0]
losing_days = returns[returns < 0]
win_rate = len(winning_days) / len(returns[returns != 0])
代码释义:
- 下载和准备市场数据
- 计算 IBS 并生成交易信号
- 计算全面的性能指标
2.2 信号生成
信号生成是策略核心:
data["IBS"] = (data["Close"] - data["Low"]) / (data["High"] - data["Low"])
data["Signal"] = np.where(data["IBS"] <= low_threshold, 1, 0)
data["Signal"] = np.where(data["IBS"] >= high_threshold, -1, data["Signal"])
代码释义:
- 当 IBS 低于低阈值 (0.10) 时,发出长信号 (1)
- 当 IBS 升至我们的高临界值 (0.95) 以上时,发出做空信号 (-1)
- 当 IBS 位于阈值之间时,处于中性位置 (0)
2.3 源代码下载
源代码请从我的Google Colab中申请下载:
https://colab.research.google.com/drive/1e2SHqZPIh4wsiz2cl0o4W9a4C-O9moJD?usp=sharing
三、策略绩效分析
从 2015 年到 2025 年的$QQQ指数基金回测结果来看,我们发现了几个有趣的指标:
Detailed Strategy Analysis:
--------------------------------------------------
Total Return: 102.38
Annual Return: 7.28
Annual Volatility: 15.36
Sharpe Ratio: 0.53
Sortino Ratio: 0.61
Max Drawdown: -23.55
Win Rate: 49.33
Profit Factor: 1.16
Number of Trades: 1119.00
Best Month: 73.62
Worst Month: -6.55
Average Monthly Return: 0.78
Monthly Return Std: 7.33
Monthly Analysis:
--------------------------------------------------
Profitable Months: 64 out of 121
Average Monthly Return: 0.78%
Monthly Return Std: 7.33%
这份策略报告显示$QQQ的投资策略年化收益达7.28%,具有中等的长期回报。而夏普比率表现优异,风险可控。虽然最大回撤和波动性较高,但整体回报和盈利因子表明策略在长期内是可行的。
四、观点总结
本文主要介绍了内部条形图强度(IBS)交易策略的Python实现与分析,并通过对$QQQ从2015年到2025年的回溯测试,展示了该策略的性能指标。
- 简单的量化交易策略往往最为稳健,IBS策略虽然概念简单,但在适当实施风险管理和全面分析的情况下,能够取得显著的交易结果。
- IBS指标是一种均值回复工具,用于衡量资产收盘价相对于当日区间的位置,以此来判断市场可能的超买或超卖状态。
- 策略实施需要注意信号生成,通过设定的阈值来决定何时进入或退出市场。
- 绩效分析显示了IBS策略的多项指标,包括但不限于总回报、年化回报、年化波动率、夏普比率、索提诺比率、最大回撤、胜率和利润因子等,这些指标有助于评估策略的风险与回报。
- 月度分析提供了更细致的策略表现信息,如盈利月份的数量、平均月度回报和月度回报的标准差。
- 交易策略需要不断地监控和调整,以适应市场变化,确保策略的持续有效性。
- 过去的交易表现并不能保证未来的结果,因此任何交易策略都应该在实际执行前进行充分的测试和验证。
感谢您阅读到最后,希望这篇文章为您带来了新的启发和实用的知识!如果觉得有帮助,请不吝点赞和分享,您的支持是我持续创作的动力。祝您投资顺利,收益长虹!如果对文中内容有任何疑问,欢迎留言,我会尽快回复!
本文内容仅限技术探讨和学习,不构成任何投资建议。
Be First to Comment