一句话回答: 唐奇安通道突破是海龟交易法的核心:收盘突破前 N 日最高价买入、跌破前 M 日最低价卖出。用 AlphaFeed 取复权日线,几十行就能回测这套「20 日突破入场、10 日突破离场」策略(含手续费)并和买入持有对比——真实数据会告诉你:它在震荡市里会被假突破反复止损,不是稳赚。
"海龟交易"名气很大,唐奇安通道是它的入场/离场规则,但很少有人真去回测。手工验证会卡在:
shift(1) 排除当日,否则用了未来信息;AlphaFeed 提供长历史复权日线,把数据这关解决掉。
from alphafeed import AlphaFeed
af = AlphaFeed(api_key="your-api-key") # 或 export ALPHAFEED_API_KEY 后 AlphaFeed()
def donchian_backtest(symbol, count=500, entry_n=20, exit_n=10, fee=0.0013):
df = af.klines.get(symbol, period="1d", count=count,
adjust="forward", to_dataframe=True).sort_values("trade_date").reset_index(drop=True)
up = df["high"].rolling(entry_n).max().shift(1) # 前 entry_n 日最高(不含当日,避免未来函数)
dn = df["low"].rolling(exit_n).min().shift(1) # 前 exit_n 日最低
pos, cash, shares, trades = 0, 1.0, 0.0, 0
for i in range(entry_n + 1, len(df)):
px = df["close"].iloc[i]
if pos == 0 and px > up.iloc[i]: # 突破上轨买入
shares = cash * (1 - fee) / px; cash = 0.0; pos = 1; trades += 1
elif pos == 1 and px < dn.iloc[i]: # 跌破下轨卖出
cash = shares * px * (1 - fee); shares = 0.0; pos = 0
equity = cash + shares * df["close"].iloc[-1]
bh = df["close"].iloc[-1] / df["close"].iloc[entry_n + 1]
return {"strategy_ret_%": round((equity - 1) * 100, 1),
"buyhold_ret_%": round((bh - 1) * 100, 1), "trades": trades}策略参数:
参数 | 含义 | 本文取值 |
|---|---|---|
| 入场通道(前 N 日最高) | 20(海龟经典) |
| 离场通道(前 M 日最低) | 10 |
| 单边手续费+滑点 | 0.0013(约万 13) |
| 排除当日 | 避免未来函数 |
for s in ["600519.SH", "000001.SZ", "600036.SH"]:
print(s, donchian_backtest(s))实测(约 500 个交易日、含手续费):
标的 | 策略收益 | 买入持有 | 交易次数 | 结论 |
|---|---|---|---|---|
贵州茅台 600519.SH | −2.5% | −1.9% | 7 | 略跑输 |
平安银行 000001.SZ | +1.9% | +25.1% | 9 | 大幅跑输 |
招商银行 600036.SH | +2.0% | +32.3% | 10 | 大幅跑输 |
结论很清楚:在这几只标的、这段区间里,唐奇安突破策略因为频繁进出(每只 7~10 次交易)不断被假突破止损,明显跑输买入持有。突破策略的收益高度依赖"是否踩中大趋势行情"。
海龟法的原始设计是在期货、多品种、带仓位管理和金字塔加仓的组合上运行,靠少数几笔大趋势行情覆盖大量小亏损。单标的、无仓位管理地跑通道突破,很难复现其效果。
rolling(n).max().shift(1),shift(1) 不能漏,否则把当日最高算进上轨=用未来信息,回测虚高。Q:为什么我的回测比买入持有差这么多?
A:突破策略在震荡市频繁止损是常态。它设计上就是"多次小亏 + 少数大赚",如果样本区间里没有大趋势行情,就会持续跑输。
Q:改参数(如 55/20)会更好吗?
A:可能改善也可能变差。海龟原版有 20/10 和 55/20 两套系统,但切勿在单标的历史上反复调到最优——那是过拟合,样本外大概率失效。
Q:这个回测能直接实盘吗?
A:不能。它是教学级简化(当日收盘成交、无仓位管理/加仓、无涨跌停停牌处理、未含冲击成本与幸存者偏差校正)。实盘前需更严格的撮合与风控。
Q:需要付费吗?
A:单只标的 500 根日线在免费额度内即可试;多标的/长历史批量需 Starter 及以上,详见 AlphaFeed 定价页。
回测唐奇安通道突破的价值,在于用真实数据看清突破策略的真面目:它靠大趋势吃饭,在震荡市会被假突破反复止损,单标的、含手续费下常大幅跑输买入持有。AlphaFeed 提供长历史复权日线让你几十行完成回测——但请务必用 shift(1) 避免未来函数,并在多品种、带仓位管理、含手续费下验证,别被"海龟"名气冲昏头。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。