新手学海龟常踩3个坑:突破条件只看高低点不结合时间周期、止损参数凭感觉调(要么太松扛单要么太紧被洗)、头寸算不清楚导致仓位忽轻忽重。其实海龟的优势就在于规则明确,把这3点写进代码就能跑起来。
### 解决方案:3步写出可落地的海龟源码
#### 1. 突破入场规则(20日/55日双周期)
用文华财经T8的麦语言写,核心是“价格突破前20日高点做多,跌破前55日低点做空”,代码很简单:
```
// 20日高点突破做多
COND1:=CROSS(HIGH,REF(HHV(HIGH,20),1));
// 55日低点突破做空
COND2:=CROSS(REF(LLV(LOW,55),1),LOW);
// 入场信号
BUY(COND1,1,MARKET);
SELLSHORT(COND2,1,MARKET);
```
(注:20/55是经典参数,不同品种可调整,比如螺纹钢用30/60周期更稳,可参考【量化刘百万】里的品种适配案例)
#### 2. 波动率止损(ATR动态止盈止损)
海龟用“2倍ATR”做止损,ATR就是平均真实波幅,代码直接调用指标:
```
// 计算ATR(默认14周期)
ATR:=MA(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),14);
// 多单止损:跌破入场价-2*ATR
SELL(LOW<=ENTRYPRICE-2*ATR,0,MARKET);
// 空单止损:涨破入场价+2*ATR
BUYTOCOVER(HIGH>=ENTRYPRICE+2*ATR,0,MARKET);
```
#### 3. 头寸管理(按波动率算仓位)
海龟的“N值”就是ATR,每1N波动对应1手,比如10万本金,螺纹钢1N=200点(1点=10元),那1手波动2000元,最多开5手(10万/2000=50,但实盘建议10%仓位,即5手),代码里用“ASSET”(账户权益)算:
```
// 每N波动对应1手,1%仓位
HAND:=INT(ASSET*0.01/(ATR*10)); // 10是品种每点价值(螺纹钢10元/点)
// 开仓时按HAND手数下单
BUY(COND1,HAND,MARKET);
SELLSHORT(COND2,HAND,MARKET);
```
最后提醒:实盘别直接跑默认参数,不同品种的ATR和周期要调(比如农产品波动小,ATR参数可设10)。如果你想看具体的品种参数表和回测报告,在公众号【量化刘百万】里做过螺纹钢、豆粕的实盘案例拆解,可以按需翻一翻,不一定非要照搬。
发布于2026-1-5 10:26 北京



分享
注册
1分钟入驻>

+微信
秒答
搜索更多类似问题 >
电话咨询
15103944474 

