拓冰建站拓冰建站
首页 / 资讯中心 / 正文

文华财经15分钟指标源码详解:SAR均线过滤与图形绘制

简介这是一份文华财经期货15分钟短线交易系统的指标源码文档聚焦买卖信号生成、趋势判断与可视化提示旨在解决短周期交易中买卖点识别与信号过滤问题适合期货交易者、量化初学者和文华公式编写爱好者参考学习。压缩包内仅有1个Word文档大小55KB内容以可直接复制的源码为主并提供关键函数说明便于快速对照和二次修改。源码以抛物线转向指标SAR为核心判断趋势移动平均线MA平滑价格CROSS函数捕捉价格穿越SAR的买卖点同时结合PARTLINE函数绘制压力支撑线STICKLINE函数区分红色与绿色K线DRAWBMP函数标注太阳眼和加速点图标DRAWGBK函数动态着色背景使多空信号更加直观这些函数组合也展示了文华公式编写中常见的绘图与信号过滤技巧。系统还通过FILTER函数过滤无效信号并内置空单减仓、空止赢等提示构成相对完整的15分钟短线策略框架读者可直接调整参数将其应用到不同品种或时间周期。目前已有984人学习适合想要深入理解文华指标编写逻辑、搭建或优化短周期交易系统的投资者。1. 一套文华15分钟指标源码先看三件事怎么组织这套文华财经期货买卖指标源码从第一行SAR1(18,2,10)到最后一行KFKP背景带逻辑密度比普通副图指标高出一截。它的核心不是单一信号的胜率而是把短线交易里「趋势基准、信号过滤、状态可视化」三件事用文华公式语言完整编码SAR 定多空方向四层均线簇平滑价格FILTER把连续穿越压缩成低频买卖点STICKLINE、DRAWGBK、DRAWBMP把结果渲染到 K 线图上。对在文华 WH6/WH8 上做 15 分钟期货短线的交易者这套代码既能直接编译观察信号也能当作文华绘图函数与周期判断的参考样本。下面按参数构成、信号生成、图表绘制、周期适配四段拆解所有代码都可在文华公式编辑器里逐行验证。2. SAR1(18,2,10)与四层均线簇核心参数与选型理由2.1 SAR1(18,2,10) 的加速机制SAR11:SAR1(18,2,10),CIRCLEDOT; SAR2:SAR11;第一行把 SAR 计算结果赋值给 SAR11CIRCLEDOT让 SAR 以圆点形式显示第二行复制给 SAR2后续所有信号判断都引用 SAR2。多绕这一层的原因在于后面大量使用ABS(SAR2)文华的 SAR 函数在上升趋势里返回正数圆点画在 K 线下方下降趋势里返回负数圆点画在 K 线上方取绝对值后才能统一比较「价格离 SAR 远近」这个几何含义。SAR1 的三元组参数是理解整套信号频率的入口。第一个参数 18 是起始回溯周期用过去 18 根 K 线的极值作为 SAR 起点第二个参数 2 是加速步长价格每创新高或新低加速因子按 2% 递增第三个参数 10 是加速因子上限。步长越小、上限越低SAR 跟随价格越慢穿越信号越少反之把 2 改成 3、10 改成 15SAR 会更早贴向价格15 分钟图上的红绿状态切换和CROSS信号都会明显变密。作者选 2/10 这个偏保守的组合目的就是控制震荡市里反复穿越造成的噪音。SAR1 参数加速节奏适用场景信号密度SAR1(18,2,10)步长 2%上限 10%15 分钟短线、日线波段中等SAR1(18,3,10)步长 3%上限 10%快节奏震荡行情偏高SAR1(18,2,20)步长 2%上限 20%强趋势允许长时间加速偏高但贴价SAR1(8,2,10)起点周期 8数据量少的品种与周期偏多2.2 四层均线簇 QSA 与 QSA1 的作用QSA:(MA(CLOSE,3)MA(CLOSE,6)MA(CLOSE,12)MA(CLOSE,24))/4; QSA1:(MA(CLOSE,2)MA(CLOSE,4)MA(CLOSE,8)MA(CLOSE,16))/4,COLORBLUE,LINETHICK3,NOTEXT;QSA 取 3、6、12、24 四条简单均线的等权均值QSA1 取 2、4、8、16 的均值两组周期比都是 1:2:4:8QSA1 整体比 QSA 快一倍。这个结构的直接效果是单条均线在 15 分钟图上容易被一根大阳线或大阴线拉出尖角而四条均线取均值后曲线更接近「趋势中轴」而不是「价格跟随线」。QSA1末尾的NOTEXT表示不显示数值文字只画蓝色粗线LINETHICK3让这条线成为图面上唯一的醒目基准。后面DRAWICON把多空图标画在QSA1的位置而不是 K 线最高最低价附近信号点因此不会和蜡烛实体重叠全部排在同一条参考线上。盘面上图标序列的疏密就是一段时间内 SAR 穿越频率的可视化结果盯盘时扫一眼就能判断当前处于趋势段还是震荡段。2.3 CROSS 与 PARTLINE 的多空着色DRAWICON(CABS(SAR2) AND CREF(C,1)*0.9995 ,QSA1,ICO11); DRAWICON(CABS(SAR2) AND CREF(C,1)*1.0005 ,QSA1,ICO12); PARTLINE1(CABS(SAR2) AND SAR20,QSA1),COLORRED,LINETHICK3; PARTLINE1(CABS(SAR2) AND SAR20,QSA1),COLORFF0000,LINETHICK3;CABS(SAR2)表示价格跌到 SAR 圆点下方进入空头状态CABS(SAR2)表示价格在 SAR 上方。两个DRAWICON各附加一个条件CREF(C,1)*0.9995要求当前收盘比前一根低 0.05% 以上CREF(C,1)*1.0005要求比前一根高 0.05% 以上。这个小阈值过滤的是同一价位来回穿越 SAR 的走平行情价格必须真的动了才允许画图标。ICO11、ICO12是文华图标库的编号写法在默认库里对应方向不同的两个箭头如果不合意可以换成 ICO1 到 ICO36 里的其他编号。两条PARTLINE1按价格与 SAR 的关系给 QSA1 分段着色。注意多了一个SAR20条件只有上升趋势里 SAR 为正时才参与着色。如果没有这个条件下跌趋势中 SAR 为负、CABS(SAR2)恒成立整条线会一直显示多头色失去状态提示作用。COLORRED与COLORFF0000都是红色系前者亮后者暗实际含义是区分「多头段」和「刚从多头转弱的初跌段」。3. 信号生成CROSS、FILTER 与 RSI 止盈的配合3.1 空单减仓线 KJC 的触发条件QS1:(MA(CLOSE,3)MA(CLOSE,6)MA(CLOSE,12)MA(CLOSE,24))/4; KJC:QS1*0.93; DRAWTEXT(CROSS(KJC,C) AND CKJC,L*0.99,空单减仓),COLORYELLOW;QS1 与前面的 QSA 完全同构只是不输出绘图、纯做计算。KJC:QS1*0.93把慢速均线簇下移 7%形成一条低于均线的减仓参考线。CROSS(KJC,C)表示收盘价从上方跌破 KJCAND CKJC再确认当前收盘确实在减仓线下方两个条件同时成立时在最低价下方 1% 的位置输出黄色文字「空单减仓」。这条规则应对的是空头持仓止盈价格跌破 SAR 进入空头状态后继续下探到偏离均线簇 7% 的位置说明短线超卖空单应该主动兑现而不是追跌。0.93 这个系数直接决定提示早晚改成 0.95 会提前触发适合波动小的品种改成 0.90 会把触发点推得更远适合单日振幅大的商品。调整后要在历史回放里看提示是出现在趋势中段还是超跌尾段出现在前者说明阈值太紧。3.2 太阳眼与买卖点的 DRAWBMP 分支MI1:C-REF(C,1); MI:IF(PERIOD-62 AND PERIOD-66,MI1,0); AMI:SMA(MI,3,1); F:MA(REF(AMI,1),10)-MA(REF(AMI,1),20); D:SMA(F,10,1); DRAWBMP(CROSS(D,F) AND CSAR2,H*1.007,太阳眼),VALIGN2; DRAWBMP(FILTER(CROSS(C,ABS(SAR2)),10),L*0.9995,ICON5),VALIGN0; DRAWBMP(FILTER(CROSS(ABS(SAR2),C),10),H*1.0015,ICON9),VALIGN2;先看MI这一行。PERIOD是文华返回的当前周期编号从 0 到 7 依次是分时、3 分、5 分、10 分、15 分、30 分、60 分和日线。PERIOD-62 AND PERIOD-66等价于 PERIOD 落在 8 到 11也就是周线到半年线只有在这个区间MI才等于单周期涨跌其余周期一律置 0。这个门槛决定了太阳眼本质上是「大周期动量加速信号」在 15 分钟图上MI恒为 0AMI、F、D跟着归零CROSS(D,F)永不成立看不到太阳眼属于正常现象不是代码损坏。F的计算是前一根AMI的 10 周期均线减 20 周期均线D再对F做 10 周期平滑CROSS(D,F)近似捕捉动量由弱转强的加速节点叠加CSAR2确认价格在 SAR 上方才允许在最高价上方 0.7% 的位置画太阳眼图片。真正在 15 分钟图上活跃的是下面两行CROSS(C,ABS(SAR2))是价格上穿 SAR在最低价下方画 ICON5 买点CROSS(ABS(SAR2),C)是价格下穿 SAR在最高价上方画 ICON9 卖点。FILTER(...,10)把 10 根 K 线内的重复信号全部屏蔽避免价格在 SAR 附近来回穿越时画出一串图标。一个参数同时约束买卖点的最小间隔是这套系统默认的降噪手段。3.3 RSI 止盈信号与小数 REF 的用法LC: REF(CLOSE,1); RSI:SMA(MAX(CLOSE-LC, 0), 6, 1)/SMA(ABS(CLOSE-LC), 6, 1)*100; DRAWTEXT(FILTER(CROSS(RSI,30) AND (CLOSEREF(HIGH,1.5)),5),LOW-LOW*0.001,空止赢),COLORGREEN; DRAWTEXT(FILTER(CROSS(70,RSI) AND (CLOSEREF(LOW,1.5)),5),HIGHHIGH*0.001,多止赢),COLORRED;RSI 用 6 周期、权重 1 的变种平滑公式分子是上涨部分的平滑值分母是绝对涨跌幅的平滑值比值乘 100输出落在 0 到 100。CROSS(RSI,30)表示 RSI 从弱势区向上突破 30空头动能衰减附加CLOSEREF(HIGH,1.5)后在最低价下方写「空止赢」CROSS(70,RSI)表示 RSI 从超买区回落附加CLOSEREF(LOW,1.5)后在最高价上方写「多止赢」。REF(HIGH,1.5)值得单独说明文华的REF支持小数周期会在前一根与再前一根 K 线之间按距离插值等效于「1.5 根 K 线之前的价位」。这个写法迁移到通达信、同花顺会直接报参数错误移植时必须先改成REF(HIGH,2)或REF(HIGH,1)。两处FILTER(...,5)保证同类文字提示至少间隔 5 根 K 线避免信号连续刷屏。3.4 FILTER 在信号链中的位置整套源码里FILTER出现多次买卖点用 10 根间隔RSI 止盈用 5 根间隔。它的作用不是改变信号对错而是把「连续为真的条件」压缩成「离散事件」。比如CROSS(C,ABS(SAR2))在穿越瞬间为真如果下一根 K 线跌回再上穿不带 FILTER 就会画两次买点加上 10 根窗口后同方向事件最短间隔被锁死。调参时记住一个原则FILTER 窗口越大信号越少、单信号持有时间越长适合 15 分钟这种中频周期换到 1 分钟周期时通常要把 10 降到 3 到 5否则进场点会滞后到趋势走完。4. 图表绘制STICKLINE着色、DRAWGBK背景与分形支撑压力4.1 STICKLINE 多层叠加实现渐变K线STICKLINE1(CSAR2 AND SAR20,H,L,0,0),COLORFF5555; STICKLINE1(CSAR2 AND SAR20,C,O,4,0),COLORAA0000; STICKLINE1(CSAR2 AND SAR20,C,O,3,0),COLORCC0000; STICKLINE1(CSAR2 AND SAR20,C,O,2,0),COLOREE0000; STICKLINE1(CSAR2 AND SAR20,C,O,2,0),COLORFF5555; STICKLINE1(CSAR2 AND SAR20,C,O,1,0),COLORFF8080; STICKLINE1(CABS(SAR2),H,L,0,0),COLOR15FFFF; STICKLINE1(CABS(SAR2),C,O,4,0),COLOR005151; STICKLINE1(CABS(SAR2),C,O,3,0),COLOR009191; STICKLINE1(CABS(SAR2),C,O,2,0),COLOR00CACA; STICKLINE1(CABS(SAR2),C,O,2,0),COLOR15FFFF; STICKLINE1(CABS(SAR2),C,O,1,0),COLORACFFFF;STICKLINE1的参数依次是条件、起始价、结束价、柱体宽度、是否空心、颜色。第一行用H,L和宽度 0 画出上下影线随后五到六行用C,O反复绘制实体宽度从 4 递减到 1颜色从COLORAA0000一路过渡到COLORFF8080。后画的窄柱会覆盖在先画宽柱的中间区域于是蜡烛实体形成「外缘深、内芯浅」的渐变效果。红色系这一组代表价格在 SAR 上方多头状态青色系这一组代表价格在 SAR 下方空头状态影线颜色与实体最外层保持一致整体视觉一致性比默认 K 线强一个档次。多层STICKLINE的本质是用同一条件反复调用绘图函数借助绘制顺序的覆盖关系做颜色渐变。如果只想要实心 K 线保留宽度 4 那一行就够渐变层的存在会拖慢大面积历史数据的刷新速度K 线数量多时可以精简为两层。4.2 DRAWGBK 背景与 170 周期长均线MA3:MA(C,170); DRAWGBK(MA3C,RGB(0,0,0),RGB(9,60,1),0); DRAWGBK(MA3C,RGB(0,0,0),RGB(62,1,1),0); DRAWGBK(MA30,RGB(0,0,0),RGB(0,0,0),0);MA3 是 170 周期长均线作为牛熊过滤器。DRAWGBK在条件成立时把背景从黑色渐变到指定颜色MA3C表示长均线在价格上方即空头结构填充的是深绿RGB(9,60,1)MA3C表示多头结构填充深红RGB(62,1,1)。这里的颜色语义和国内红涨绿跌的惯例正好相反复盘时容易被背景色误导这是原作者的配色选择抄作业时建议按自己的习惯把两组 RGB 对调。第三个参数 0 控制渐变方向不同文华版本效果略有差异不影响信号计算。第三行DRAWGBK(MA30,...)处理无数据场景把背景强制置黑避免停牌或数据缺失段出现突兀色斑。4.3 分形高低点与 DRAWSL 支撑压力延伸TY:H; TY1:L; A1:REF(TY,10)HHV(TY,2*101); VB1:FILTER(A1,10); C11:BACKSET(VB1,101); HD:FILTER(C11,10); A2:REF(TY1,10)LLV(TY1,2*101); VB2:FILTER(A2,10); C2:BACKSET(VB2,101); LD:FILTER(C2,10);这是经典的分形高低点识别。A1判断「10 根 K 线前的高点是不是以它为中心、前后各 10 根共 21 根 K 线的最高点」VB1用 FILTER 保证两个候选高点之间至少隔 10 根BACKSET(VB1,101)把确认标记回填到 11 根 K 线之前的位置再过滤一次得到稳定的分形高点序列 HD。低点 LD 用同样的逻辑构造两侧对称。AA:REF(H,BARSLAST(HD)); BA:REF(L,BARSLAST(LD)); 上涨压力:IF(T1,AA,AA),COLORRED,POINTDOT,LINETHICK2,NODRAW; 下跌支撑:IF(T2,BA,BA),COLORGREEN,POINTDOT,LINETHICK2,NODRAW; 支撑:REF(LOW,BARSLAST(LD)),COLOR008000,POINTDOT,LINETHICK3; 压力:REF(HIGH,BARSLAST(HD)),COLORFF0000,POINTDOT,LINETHICK3; DRAWSL(C0,支撑,0,1,0,COLOR008000),RGB(0,255,64),DOT; DRAWSL(C0,压力,0,1,0,COLORFF0000),COLORRED,DOT; DRAWNUMBER1(ISLASTBAR,上涨压力,上涨压力,2),COLOR00FF00,FONTSIZE20,ALIGN0; DRAWNUMBER1(ISLASTBAR,下跌支撑,下跌支撑,2),COLORRED,FONTSIZE20,ALIGN0;BARSLAST(HD)返回最近一次分形高点确认距今的 K 线数REF(HIGH,BARSLAST(HD))取到那个高点的价位所以压力/支撑是从最近分形延伸出来的水平参考。DRAWSL(C0,压力,0,1,0,COLORFF0000)的六个参数是条件、起点价、斜率、长度、方向、颜色条件恒成立斜率为 0向右画 1 根 K 线长度的点状线。由于每一根 K 线都会执行一次绘制肉眼看到的就是一条随新分形不断推高或压低的点状阶梯线而不是一根孤立的短线。DRAWNUMBER1(ISLASTBAR,...)在最后一根 K 线把当前分形压力与支撑的数值直接标在图上便于快速读取最新价位。注意这一段用到了BACKSET它属于未来函数具体影响在最后一章专门说明。4.4 资金线背景带 DRAWBKBMP 的区间映射RSV2:(CLOSE-LLV(LOW,26))/(HHV(HIGH,26)-LLV(LOW,26))*100; 资金线:3*SMA(RSV2,5,1)-2*SMA(SMA(RSV2,5,1),3,1),NODRAW,COLOR00FFFF,NOTEXT; DRAWBKBMP(资金线70.0000 AND 资金线101.0000,DFKP),ALIGN2; DRAWBKBMP(资金线36.0000 AND 资金线69.0000,DKZD),ALIGN2; DRAWBKBMP(资金线1.0000 AND 资金线36.0000,KFKP),ALIGN2;资金线是 26 周期 KD 的变体先用 26 周期最低价和最高价把收盘价归一化到 0 到 100再做两次不同参数平滑后组合公式形态接近 KD 指标的 J 值。NODRAW表示这条线只参与计算和区间判断不在图面输出。三个DRAWBKBMP把资金线分成三档70 到 100 上沿画 DFKP 背景图36 到 69 画 DKZD1 到 36 画 KFKP对应字面含义可以理解为多方控盘、多空争夺、空方控盘。DRAWBKBMP的第二个参数是图片名这三个拼音缩写需要对应的 BMP 文件存在于文华图片库中缺图时背景带会静默不显示。注意两点一是源码里同时出现了「资金线 1」和「资金线」两个名字前者带空格、后者不带在文华里它们是两个不同的变量真正参与判断的是不带空格的那条二是 36 到 69 与 70 到 100 之间留了 1 个点的空档资金线落在 69.5 时三个条件都不成立背景带消失可以改成36 AND 70、70 AND 101补上。另外夹在 RSI 段和资金线段之间的 HZDWR、HZZWR、DYA、DYB、A11、B1、B2 等变量全部是只赋值、没有被任何绘图或信号引用的中间变量属于作者调试留下的冗余代码删除后不影响编译和显示。5. 15分钟周期适配PERIOD门槛、参数体检与回放验证5.1 先确认哪些信号在你的周期上生效贴到 15 分钟图之前先理清周期门槛。MI那行用了PERIOD-62 AND PERIOD-66文华里 PERIOD 从 0 到 7 依次是分时、3 分、5 分、10 分、15 分、30 分、60 分和日线这个条件等价于「周线到半年线」。所以太阳眼是给大周期准备的15 分钟图上MI恒为 0CROSS(D,F)永不成立看不到太阳眼是预期行为。真正在 15 分钟图上活跃的是 ICON5/ICON9 买卖点、空单减仓、RSI 止赢和资金线背景带。想启用太阳眼把IF(PERIOD-62 AND PERIOD-66,MI1,0)改成MI1即可但这是未经 15 分钟数据验证的额外信号不建议直接上实盘。5.2 参数体检顺序与回放验证按这个顺序做参数体检比随手改数值靠谱先不动参数跑一周 15 分钟历史数 ICON5/ICON9 的数量和相邻信号间隔确认 FILTER 的 10 根窗口压掉了重复信号再把 KJC 的 0.93 改成 0.95 和 0.90 各跑一遍观察「空单减仓」出现在趋势中段还是超跌尾段然后看 RSI 的 30/70 阈值在目标品种上的触发频率常年不触发就下调到 20/80最后动 SAR 步长同步观察红绿 K 线着色切换频率避免单根 K 线反复变色。验证时用 WH8 的历史回放逐根 K 线走动只认收盘价确认后的状态重点统计 ICON5/ICON9 出现后 5 到 10 根 K 线的方向一致性比例。回放过程中不要信任盘中即时信号因为支撑压力段使用了BACKSET盘中看到的价位不一定是被未来数据确认过的最终值。5.3 未来函数与两处视觉坑BACKSET(VB1,101)会把分形确认标记回填到 11 根 K 线之前支撑/压力数值会随新 K 线出现整体移动15 分钟上一个分形高点要等后面 10 根 K 线走完才能确认实盘只把它当参考区间不要当作精确挂单价。提示BACKSET 属于未来函数回填会让支撑/压力线在历史回放中“移动”任何基于这套指标的回测胜率都要保留折扣。还有两处视觉细节DRAWGBK 的深绿/深红配色与红涨绿跌惯例相反对调 RGB 值即可资金线三档区间在 69 到 70 之间有 1 个点空档按36 AND 70、70 AND 101改成闭区间后资金线落在 69.5 时的背景带消失问题就能解决。本文还有配套的精品资源点击获取
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门