简介:文华财经期货十五分钟短线交易系统的指标源码文档,面向期货交易者、程序化策略研究者,以及希望在小周期中快速形成系统化交易判断的投资者。资源包中仅含一个文档,大小仅55KB,公式与策略说明集中在一处,可直接复制到文华财经软件中进行验证和参数调整。该文档目前已有984人学习下载,在短线交易群体中具备一定关注度。内容覆盖SAR趋势判断、MA均线平滑、CROSS交叉触发、PARTLINE压力与支撑位绘制、STICKLINE红绿K线显示、DRAWBMP太阳眼与加速点图标、DRAWGBK背景变色以及FILTER无效信号过滤等关键实现;同时给出了价格穿越SAR线触发买卖、空单减仓、空止赢等多条件策略示例,并专门解释了SAR、MA、CROSS等技术指标的核心作用。读者既可逐段理解源码逻辑,也可按自身交易的品种和周期调整参数,将这套十五分钟短线系统迁移到其他交易环境,具有较强的二次开发与实战参考价值。
1. 15分钟短线交易系统与文华财经指标源码的定位
下午开盘后的第6根15分钟K线,行情往往已经走出了日内的第一波方向。文华财经的公式编辑窗口里,趋势跟着均线斜率走,买点卖点用金叉死叉打标记,这套流程从搭建到测试并不绕弯,真正绕弯的是周期参数怎么给、信号怎么过滤、以及盘中执行到哪一步。标题里“15分钟短线交易系统”对应的是用文华财经公式语言写出来的、能回测也能实时预警的一组买卖条件。它服务的不是主观炒单赌方向,而是把入场、离场条件固定成源码,让每一笔开仓依据都经得起复盘。交易者拿到这套主图、副图配合的指标源码,可以直接套进文华财经的公式管理器编译;工程师也能从中看到行情公式语言里信号函数的使用边界。
2. 文华财经指标源码的语法骨架与15分钟周期下的指标选型
在文华财经里新建指标文件,最先面对的是三个不同的入口:主图指标、副图指标和模型。主图指标把结果直接叠加到K线上,适合画均线、标记买卖点;副图指标输出在K线下方的独立窗格,适合画MACD柱和量能曲线;模型则多用于编写可回测、可自动触发交易信号的量化策略。三者共用一套公式语言,只是输出载体和执行节点不同。
2.1 主图与副图的编写入口:一套语法,两套坐标约束
先看语法上的差异。主图指标输出的数值会被当成价格看待,坐标轴跟着K线价格缩放,所以画图标、画连线时可以直接用 HIGH、LOW 等价格作参照点。副图指标输出的数值有自己的坐标轴,量纲跟价格无关,比如 MACD 柱输出的是两条 EMA 的差值,画在主图坐标里没有意义。这种差异直接决定了源码的组织方式:主图指标文件里放均线、买卖点逻辑;副图指标文件里放动能、量能逻辑,二者分别编译,但通过相同的信号条件保持口径一致。
基础写法上,主图指标用彩色线表达趋势,例如下面这段:
MA_FAST:MA(CLOSE,5),COLORYELLOW; MA_SLOW:MA(CLOSE,20),COLORWHITE; CROSS_SIG:CROSS(MA_FAST,MA_SLOW),NODRAW;这里CROSS(MA_FAST,MA_SLOW)表示快线上穿慢线,NODRAW让这个中间变量只参与计算不画线。COLORYELLOW控制线条颜色,DRAWICON这类绘图函数要放在条件之后,否则画出来的图标位置会错位。副图里则通常用STICKLINE、COLORSTICK控制柱体颜色,用输出变量的正负值驱动红绿柱。
从工程化角度看,主副图分开写还有一层好处:当行情软件自动重算K线时,主图和副图的刷新顺序可能不一致,如果信号逻辑全部挤在一个文件里,会出现图标已经出现但副图确认信号还没刷新的情况。拆开写之后,两个文件各算各的,盘中挂预警时也更容易定位是哪一层条件触发了问题。
2.2 15分钟周期下的指标选型:三均线模型与动量确认的取舍
15分钟不是日线周期的等比缩小。日线上的5日线相当于一周趋势,15分钟图上的5周期均线只有75分钟,恰好覆盖一个早盘时段。这就意味着同样的均线参数,放在不同周期的K线上,反应的持仓视角完全不同。文华财经社区里常说的“三均线模型”,指的就是用快中慢三条均线构成方向过滤器:快线看短期动能、中线确认拐点、慢线定趋势。三均线同时向上排列时才允许做多,构成最简单也最稳的方向约束。
在这个结构下,副图动量指标的作用是在方向成立之后,回答“当下是不是入场时机”。MACD 看动能柱高度,KDJ 看超买超卖,但二者在15分钟级别上的灵敏度差异很大。MACD 的12/26/9参数是日线习惯,切到15分钟K线上依然可用,只是信号会慢半拍;KDJ 的9/3/3在15分钟上摆动极快,经常在震荡行情里反复触发。一个常见的处理是把 KDJ 阈值放宽,例如不再用20/80作为超买超卖边界,而是改用30/70,减少两端噪音。
| 指标 | 常用于日线的参数 | 15分钟推荐起点 | 主要观察角度 |
|---|---|---|---|
| 快均线 | 5 | 5 | 方向启动 |
| 中均线 | 10 | 10 | 拐点确认 |
| 慢均线 | 20 | 20 | 趋势过滤 |
| MACD | 12/26/9 | 12/26/9 | 动能柱 |
| KDJ | 9/3/3 | 9/3/3,阈值改30/70 | 超买超卖 |
表格给的是起点,不是终点。黑色系和有色金属波动结构不同,农产品日内节奏更慢,参数必须根据品种回测后微调。切勿把日线经验里的“金叉一定涨”直接搬到15分钟周期上,那会把震荡区间里的交叉信号全部兑现成亏损单。
2.3 信号函数选型:CROSS、REF、FILTER 的组合边界
文华公式语言里,控制信号动作的核心函数只有少数几个。CROSS(A, B)判断A是否向上穿越B,返回从假变真的布尔值;REF(X, N)取N周期前的数值,是构造突破条件的常用工具;FILTER(COND, N)在条件成立后屏蔽接下来的N根K线,防止同一个信号被反复触发。
三者的边界常常被混淆。CROSS只关心穿越那一刻,不关心穿越之后均线是否还在维持;REF取的是绝对值,不是相对变化率;FILTER的作用范围是整个公式的最终输出条件,不是单根K线内的局部记号。以下这段代码组合了三个函数,作为15分钟主图买点的雏形:
MA_F:=MA(CLOSE,5); MA_M:=MA(CLOSE,10); MA_L:=MA(CLOSE,20); ML:=MA_F>MA_M && MA_M>MA_L; JC:=CROSS(MA_F,MA_M); BUY_READY:FILTER(JC && ML && CLOSE>REF(HIGH,1),6),NODRAW;CLOSE>REF(HIGH,1)表示当前收盘价突破了上一根K线的最高价,这是一个非常典型的15分钟突破确认写法。FILTER(...,6)里的6意味着这个买点条件被记录之后,随后的6根K线内不再重复标记,实际效果是过滤掉同一波行情里的连续追价信号。6用什么逻辑选?按15分钟算,6根K线是90分钟,基本覆盖一个突破后的持仓验证期,太小会重复标记,太大可能错过二次入场。
3. 构建一套可直接编译的15分钟买卖指标源码:主图信号与副图确认
第2章把语法和选型铺开了,这一章的代码可以直接粘贴进文华财经公式管理器。主图指标和副图指标作为两个文件分别保存,命名随意,但建议在文件名里带上周期标记,例如MA15_BUY_SELL,避免以后和日线指标混在一起。所有参数都用变量写在文件头部,后面的调优只需要改参数区,不用动核心逻辑。
3.1 主图指标源码:三均线趋势与买卖点标记
// 15分钟短线主图买卖指标 // 用法:新建主图指标,周期切换到15分钟K线 N1:=5; // 快线周期,建议4~6 N2:=10; // 中线周期,建议8~12 N3:=20; // 慢线周期,建议18~25 MA_F:MA(CLOSE,N1),COLORYELLOW; // 黄色快线 MA_M:MA(CLOSE,N2),COLORWHITE; // 白色中线 MA_S:MA(CLOSE,N3),COLORMAGENTA; // 品红慢线 // 多头排列:快线在中线之上,中线在慢线之上 ML:MA_F>MA_M && MA_M>MA_S; // 金叉与死叉信号 JC:CROSS(MA_F,MA_M),NODRAW; SC:CROSS(MA_M,MA_F),NODRAW; // 买点:金叉 + 多头排列 + 收盘阳线 BUY_POINT:JC && ML && CLOSE>OPEN,NODRAW; // 卖点:死叉 + 阴线或跌破慢线 SELL_POINT:SC && (CLOSE<OPEN || CLOSE<MA_S),NODRAW; DRAWICON(BUY_POINT,LOW*0.992,1); DRAWICON(SELL_POINT,HIGH*1.008,2);几个参数需要重点说明。N1=5、N2=10、N3=20是文华财经三均线模型在15分钟周期上最常见的起点:5根K线对应75分钟,正好是一个早盘交易时段;10根是150分钟,对应从开盘到午盘休市的完整窗口;20根是300分钟,基本覆盖一个交易日的多数有效行情。BUY_POINT里的CLOSE>OPEN确保买点落在阳线上,这个约束能把金叉形成但收盘价反而收阴的假信号挡在外面。SELL_POINT的逻辑则相反,死叉之后只要收阴或者跌破慢线就标记卖点,刻意放宽是为了让离场动作比进场更早,保护已有利润。
图标绘制的坐标用了LOW*0.992和HIGH*1.008,分别把买入图标画在K线下方、卖出图标画在K线上方,眼睛扫一眼就能分出多空标记。如果觉得图标太密集,把FILTER函数加到BUY_POINT外面,下一节会结合副图信号一起处理。
3.2 副图指标源码:量能动能与超买超卖确认
副图指标解决的是主图信号到底能不能下手的问题。下面这段源码在MACD柱基础上叠加了量能过滤,逻辑是:当量比大于1.2时,MACD柱用红色加亮,代表当前动能变化有成交量支撑;量比低于0.8时用绿色标示,说明动能变化缺乏参与者,信号可信度下降。
// 15分钟短线副图:MACD + 量能确认 DIFF:EMA(CLOSE,12)-EMA(CLOSE,26),COLORWHITE; DEA:EMA(DIFF,9),COLORYELLOW; MACD_BAR:(DIFF-DEA)*2,COLORSTICK; VOL_RATE:VOL/MA(VOL,20),COLORRED; // 量能条件加入柱体着色 STICKLINE(VOL_RATE>1.2,0,MACD_BAR,2,0),COLORRED; STICKLINE(VOL_RATE<0.8,0,MACD_BAR,2,0),COLORGREEN;DIFF和DEA是MACD的标准定义,MACD_BAR乘以2是为了柱体高度在副图里更明显,这只是显示习惯,不影响信号计算。VOL_RATE是当前成交量与20周期均量的比值,1.2和0.8这两个阈值是经验值,放量阈值设得太高,小波段行情全程没有红柱;设得太低,红绿柱会频繁闪烁失去过滤意义。
注意,这段副图代码没有生成任何买卖点,只输出确认条件。它在盘中扮演的角色是主图指标的“门卫”:主图出现金叉,副图量比低于0.8,放弃这次买点;主图金叉、副图量比大于1.2,信号成立。把两个文件拆开的好处是可组合:同一套主图逻辑,可以搭配不同的副图确认参数,回测时能直观看到哪个辅助条件真正提高了胜率。
3.3 过滤规则:均线斜率、K线实体与时间窗口
主图和副图组合之后,还有三个过滤条件值得加进源码,专门对付15分钟级别最典型的假信号。
第一个是均线斜率过滤。金叉出现在均线整体走平甚至下倾时,大概率是诱多。给慢线加一个斜率判断:MA_S>REF(MA_S,3),要求慢线在过去3根K线里持续上行,才承认趋势具备延续性。
第二个是K线实体过滤。金叉当日的阳线实体需要覆盖前一根阴线实体的一半以上,单纯的十字星金叉不构成入场理由。代码上把阳线实体的绝对值和前一根K线实体做比值,阈值取0.6。
第三个是时间窗口过滤。开盘后前两根15分钟K线经常受集合竞价和首波冲击影响,尾盘最后两根K线则容易被平仓盘带动,这段时间的信号直接忽略。文华公式里用TIME函数判断当前K线时间,TIME>=935 && TIME<=1445的写法能屏蔽早市开盘和收盘前15分钟。
// 斜率过滤 SLOPE_OK:=MA_S>REF(MA_S,3); // 实体过滤 BODY_RATIO:=ABS(CLOSE-OPEN)/(ABS(REF(CLOSE,1)-REF(OPEN,1))+0.0001); BODY_OK:=BODY_RATIO>0.6; // 时间过滤 TIME_OK:=TIME>=935 && TIME<=1445; BUY_FILTERED:BUY_POINT && SLOPE_OK && BODY_OK && TIME_OK,NODRAW; SELL_FILTERED:SELL_POINT && SLOPE_DOWN && BODY_OK && TIME_OK,NODRAW;BODY_RATIO最后的+0.0001是防止前一根K线实体为零时除数为零,属于公式语言里常见的保护写法。BUY_FILTERED和SELL_FILTERED是把第3.1节的主图信号和过滤条件合并后的最终输出,放到实盘环境里,买入就不再是裸金叉,而是趋势、斜率、实体、时间四个维度都通过之后才成型。
4. 从源码到可用系统:参数配置、回测验证与三个高频坑
4.1 品种参数对照与15分钟交易时段的初始化配置
把均线周期和量能阈值绑死在某一品种上,等换合约之后直接崩掉,这是短线指标最常见的死因。参数至少应该区分品种的波动幅度。金属期货日内振幅相对小,周期可以放慢;黑色系波动大,周期放快反而更能捕捉转折。
| 品种分组 | 典型波动幅度 | 均线起点(N1/N2/N3) | 量能阈值 | 建议观察时段 |
|---|---|---|---|---|
| 有色金属(铜铝) | 0.2%~0.5% | 6/12/24 | 1.1 | 09:00~10:15 21:00~22:30 |
| 黑色系(螺纹铁矿) | 0.3%~0.8% | 4/8/18 | 1.2 | 09:00~11:30 13:30~15:00 |
| 农产品(豆粕) | 0.2%~0.4% | 5/10/20 | 1.2 | 09:00~11:30 |
| 贵金属(金银) | 0.1%~0.3% | 6/12/20 | 1.0 | 21:00~23:00 |
参数的问题要结合K线根数看:贵金属日盘跳空少、15分钟K线连续性高,均线周期适合偏长;农产品的午盘断档明显,15分钟图上大部分有效K线集中在日盘两个时段,慢线可以适当缩短。按表格的起点去调,不要一上来就把5改成3,那是过度拟合的开端。
4.2 用WH8的模型回测验证15分钟买卖指标
指标能画图是一回事,能不能量化验证是另一回事。文华财经的 WH8 里提供了模型编辑器,把信号逻辑改写成模型源码后,可以跑出一份包含胜率、盈亏比、最大回撤、交易次数的回测报告。
模型写法保持条件不变,只把输出改为 BUY 和 SELL:
AUTOFILTER; N1:=5;N2:=10;N3:=20; MAF:=MA(CLOSE,N1); MAM:=MA(CLOSE,N2); MAS:=MA(CLOSE,N3); ML:=MAF>MAM && MAM>MAS; SLOPE_OK:=MAS>REF(MAS,3); TIME_OK:=TIME>=935 && TIME<=1445; BUY(CROSS(MAF,MAM) && ML && CLOSE>OPEN && SLOPE_OK && TIME_OK,1,CLOSE); SELL(CROSS(MAM,MAF) && CLOSE<MAS && TIME_OK,1,CLOSE);AUTOFILTER;是 WH8 模型的标准开关,作用的是一根K线上只保留一个买入或卖出信号,防止同根K线内连续触发。BUY(条件,手数,价格)的第一个参数是条件表达式,第二个参数1表示每次交易1手,第三个参数 CLOSE 指定按收盘价成交。回测时务必在 WH8 的费率设置里填入该品种的手续费和滑点,细节见下一节。
回测报告里面最值得关注的两个数值是最大回撤和连续亏损次数。胜率可以低于50%,只要盈亏比高于1.5,系统长期期望值依然为正;但最大回撤超过10%的15分钟系统,实盘基本拿不住,因为盘中连续打脸会迫使你手动干预。
4.3 三个高频坑:过拟合、手续费、信号刷新延迟
第一个坑是参数过拟合。把 N1、N2、N3 调到只在某一段行情里多次出现盈利,回测曲线漂亮,换到下一段行情立刻失效。避免的方法是保持参数区间狭窄,比如 N1 只在4到6之间取值,N2 只在8到12之间,而不是放任参数在全范围内寻优。
第二个坑是手续费和滑点。15分钟短线的开仓平仓频率远高于日线,螺纹每手手续费一个来回通常是几元,但频繁开平后成本会被放大。回测时不填滑点,实盘成交价与信号价之间常差0.5到1个最小变动价位,连续30笔之后利润就被吃掉了20%以上。
第三个坑是信号刷新延迟。文华财经的行情盘收到最新行情数据后才重算指标,15分钟信号在K线结束时计算,所以“当前K线出现买点”指的是上一根15分钟K线已经结束。理解这点能避免追价,正确做法是等信号确认后的下一根K线开盘价附近入场,而不是在信号刚出现的那一根强制抢单。
5. 把指标源码接进实时预警与条件止损:盘中落地技巧
5.1 在主图指标基础上挂预警触发条件
盘中让指标自动响声音、弹提示,比盯盘刷新高效得多。文华财经的预警设置里可以添加条件预警,公式周期选15分钟,条件表达式直接引用主图指标里的信号条件:
MA_F:=MA(CLOSE,5); MA_M:=MA(CLOSE,10); MA_L:=MA(CLOSE,20); CROSS(MA_F,MA_M) && MA_F>MA_M && MA_M>MA_L && CLOSE>OPEN这个表达式告诉预警引擎:当15分钟K线满足金叉、多头排列、阳线三个条件时触发提醒,每次在新K线完成后刷新判断。预警触发的延迟与行情刷新节奏一致,不会在K线形成过程中提前报警。
5.2 条件止损与止盈的参数化设置
有了入场信号,还需要把离场逻辑写进系统,不然就是“会买不会卖”。WH8 模型支持两个实用函数:STOPLOSSLINE固定止损,STEPLOSS移动止损。固定止损按每手亏损金额设,例如螺纹每点10元,设STOPLOSSLINE(500)表示亏500元离场;移动止损在利润超过阈值后启动,回撤多少点出场可以参数化:
STOPLOSSLINE(500); STEPLOSS(300,60);STEPLOSS(300,60)的含义是浮盈超过300元后启动移动止损,每回撤60元平仓离场。这个60的设计要与15分钟K线的平均波幅匹配,螺纹平均一根15分钟K线波动大约是20到30个点,取平均波幅的2到3倍,既不会被单根K线逆势扫出场,又能在趋势反转时守住利润。用源码本身验证源码,才是这套15分钟短线系统最终能落地的关键:把复盘历史交易数据归档成一张表,对比固定止损与移动止损的差值,让参数调整始终有据可依。
本文还有配套的精品资源,点击获取