ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

文华财经压力支撑公式:KDJ平滑与未来函数的自动画线实战

文华财经压力支撑公式:KDJ平滑与未来函数的自动画线实战 简介这是一份文华财经指标公式源码教程文档适合熟悉技术分析、希望自主编写交易指标的投资者或程序化交易学习者。内容围绕一套完整的压力支撑自动画线指标展开涵盖RSV、K、D、N、M、BB、CC等核心公式的编写逻辑以及通过DRAWHORIZONTALLINE函数在行情图上自动标注红色压力线与绿色支撑线的具体方案。文档采用分步讲解与源码对照方式帮助读者理解指标计算原理、函数参数含义及画线触发条件可直接用于行情软件测试与二次修改。资源包共1个doc文件大小约36KB轻量便于查阅目前已有1477人学习。通过掌握这套公式可提升行情图表分析效率减少手工画线的工作量适合希望将趋势判断和关键价位识别自动化的技术分析爱好者。1. 从KDJ到自动画线这套文华财经压力支撑公式的关键不在DRAWHORIZONTALLINE夜盘盯螺纹钢的时候手工画压力位最烦人价格在3750附近来回扫锚点刚画好一根大阴线就把支撑打穿又得重画。文华财经这套指标公式源码解决的就是这件事——把RSV、SMA、超买超卖阈值、死叉活叉拼成一个自动画线器红色水平线压在阶段高点当阻力绿色水平线托在阶段低点当支撑全程不用手动取点。适合两类人一类是WH6/WH8上做技术分析的交易者想省掉每天画线的重复劳动另一类是研究指标源码的量化开发想知道BACKSET和REFX1怎么配合才能“提前”画出后续才确认的点位。需要提醒的是这套源码里藏着一个未来函数回测和实盘的理解方式完全不同后面第3章会专门拆。2. RSV与SMA的双重平滑KDJ核心公式的选型逻辑与参数语义2.1 RSV的区间刻度为什么用9周期高低点而不是固定阈值先把第一段拆开RSV:(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;RSV本义是“当前收盘价在过去9根K线的高低区间中处在什么位置”。分子是收盘价减去9周期最低价分母是9周期最高价减9周期最低价结果乘以100后落在0到100之间。当收盘价贴着9周期最高点时RSV接近100贴着最低点时接近0。它和威廉指标的数学结构几乎一样区别只在威廉是反向、RSV是正向所以RSV天然适合做超买超卖的输入源。这里有一个陷阱当HHV(HIGH,9)和LLV(LOW,9)相等时也就是连续一字板或极窄幅横盘分母为0RSV会输出无效值。很多人在WH6里加载公式发现K线图某一段画线消失追到底就是除零问题。我在实际使用中会给RSV加一个保护RSV:IF(HHV(HIGH,9)-LLV(LOW,9)0,(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100,50);逻辑很简单当价格区间没有打开时把RSV强制置为50也就是中性位置既不触发超买也不触发超卖K值和D值会平缓过渡避免出现断崖式的指标跳变。参数9是RSV的周期原文写死了建议后续改成外部参数不同品种适配时会省很多事。2.2 文华SMA(X,N,M)与通达信SMA的差异权重参数容易被误解K:SMA(RSV,3,1); D:SMA(K,3,1);这里的SMA不是简单移动平均MA而是文华麦语言里的递归加权平均。递推关系可以写成Y ( X * M Y * ( N - M ) ) / N其中Y是上一根K线的Y值N是平滑周期M是权重。SMA(RSV,3,1)的含义是以1为权重对RSV做3周期平滑换句话说新值对指标的贡献占1/3历史值的贡献占2/3。很多人第一次看到SMA(X,3,1)以为是3日均线然后发现输出曲线和MA(3)完全对不上原因就在这个递归结构上。需要特别注意的是文华WH6、WH8的麦语言SMA和通达信的SMA函数虽然同名但序列起点处理和前置无效K线的对齐方式有细微差别。同样的指标公式源码在文华和通达信上加载K线和D线的拐点可能相差1到2根K线画线的水平位置也会跟着偏移。如果你要把这套公式移植到通达信不要只替换函数名要在两边的K线图上对比前50根K线的K、D输出值确认初值一致后再继续。参数方面原文的3和1也可以用表格来归纳参数原值语义作用常规调整范围RSV周期9高低点回溯窗口决定RSV对价格波动的敏感度5~21K平滑周期3K值的递归平滑长度平滑RSV过滤单K线噪声2~5K平滑权重1新RSV在K值中的权重权重越小曲线越平滑1~2D平滑周期3D值的递归平滑长度对K值做二次平滑形成慢速线2~5D平滑权重1新K值在D值中的权重决定D值跟随K值的快慢1~2这套参数组合实际就是KDJ的标准配置。K是快线D是慢线当K从上方穿越D时通常被视为卖出信号反过来是买入信号但原文并没有直接画K、D的金叉死叉而是用K值本身去触碰80和20边界。2.3 超买超卖边界的标定80和20的取值范围与参数化改造K值超过80意味着RSV在连续多根K线的高位区运行市场进入超买状态K值低于20则进入超卖状态。80和20是文华指标里最常见的默认阈值但遇到单边行情时K值可以长期钝化在80上方这时候死叉并不代表立刻反转而只是上涨节奏的暂时停顿。我一般会把阈值参数化方便不同品种和周期切换。螺纹钢15分钟、沪深300日线、豆粕1小时超买超卖的敏感度完全不同。参数化后的写法是RSVN:9; KSM:3; DSM:3; UP:80; DOWN:20; RSV:IF(HHV(HIGH,RSVN)-LLV(LOW,RSVN)0,(CLOSE-LLV(LOW,RSVN))/(HHV(HIGH,RSVN)-LLV(LOW,RSVN))*100,50); K:SMA(RSV,KSM,1); D:SMA(K,DSM,1);把80和20改成变量UP、DOWN之后后面的画线条件全部引用这两个变量在WH6的参数设置窗口里就能直接调不需要频繁改动公式源码。实际调参时趋势品种建议把UP提高到85到90DOWN降低到10到15减少横盘区间的假信号震荡品种保持原值反而效果更好。3. BARSLAST与BACKSET的回填压力支撑线的生成原理与未来函数边界3.1 N与M的计数语义BARSLAST从0开始导致的1偏移N:BARSLAST(K80ISUP)1; M:BARSLAST(K20ISDOWN)1;BARSLAST(条件)返回的是“从最近一次满足条件到当前的K线数量”注意当条件在当前K线成立时它返回的是0而不是1。所以原文在BARSLAST后面加1目的是把当前这根K线也算进区间长度。N的实际含义是从最近一次满足“K80且K线收阳”到当前这根K线一共跨越了多少根K线。M对应的则是“K20且收阴”到当前的距离。这样设计的原因是后续要给BACKSET一个回填深度。区间长度越长回填的K线就越多。这里的ISUP在多周期周线、月线上同样成立它判断的是当前K线收盘价是否大于开盘价不涉及跨周期引用所以应用于1小时、4小时、日线都不会报错。3.2 REFX1提前拿到死叉信号BACKSET向前回填区间核心画线逻辑是这两行BB:BACKSET(REFX1(CROSSDOWN(K,80),1),N); CC:BACKSET(REFX1(CROSS(K,20),1),M);一行行拆开看。CROSSDOWN(K,80)是“从上向下穿越80”在死叉发生的当根K线上返回真CROSS(K,20)是“从下向上穿越20”在金叉发生的当根K线上返回真。REFX1(条件,1)是文华麦语言里的未来引用函数它把条件的结果向未来平移1根K线当第10根K线发生死叉时第10根本身还不返回信号而是让第11根返回真。也就是说在第11根K线上你可以提前用到第10根才确认的信号。BACKSET(条件,N)的作用是把当前为真的信号向前回填N根K线。组合起来的效果是当死叉信号出现后系统把这段“从超买启动到死叉确认”的区间整体标记为1区间长度就是N。这里必须修正一个常见误解很多人以为画线位置在死叉那根K线的最高点实际不是。CROSS(BB,0.5)捕捉的是BB从0变成1的上升沿也就是区间的左边界即“进入超买状态”的那根K线附近而不是死叉点。所以这套公式画出的红线本质上是这波拉升启动阶段的高点水平线而不是死叉当根K线的高点。这个区别在复盘时一眼就能看出来线往往画在上涨途中的一个平台位而不是顶部。3.3 画线坐标的取舍压力线画在H支撑线画在LDRAWHORIZONTALLINE(CROSS(BB,0.5),H,COLORRED); DRAWHORIZONTALLINE(CROSS(CC,0.5),L,COLORGREEN);DRAWHORIZONTALLINE(条件,价格,颜色)表示从条件成立的那根K线开始向右画一条水平线直到新的同类型画线条件再次满足为止。H是当前K线的最高价L是最低价。压力线取区间启动点的最高价H支撑线取区间启动点的最低价L。为什么用H和L而不是收盘价因为压力位和支撑位在实战中本来就是看影线触及的位置收盘价画出来的线容易被上影线穿过视觉上会给人一种“假突破”的误导。用H和L画线能更直观地呈现价格曾经到达过的极限区域。关于函数行为我把这6个关键函数的语义汇总成一张表函数语义返回特征本例用途BARSLAST(条件)最近一次满足条件距今的K线数条件成立当根返回0计算超买区间长度NREFX1(条件,1)把条件结果平移到未来1根K线未来函数回测有漂移在死叉当根提前取到信号BACKSET(条件,N)条件成立时将当前及前N-1根置为1当前序列被改变把死叉信号回填成区间CROSSDOWN(K,80)K从上方向下穿越80当根返回真判断超买拐点CROSS(K,20)K从下方向上穿越20当根返回真判断超卖拐点DRAWHORIZONTALLINE从条件位置向右画水平线持续显示输出压力线和支撑线3.4 未来函数的影响范围实盘确认时刻要顺延一根K线REFX1是麦语言里的未来函数这是这套公式最需要警惕的地方。在历史K线上第11根K线能够引用第10根的“死叉信号”所以画出来的线和最终走势完全吻合看着非常精准。但在实盘中当前K线尚未收盘时你无法确定下一根K线是否会产生死叉信号。换句话说最后一根K线上的红色和绿色水平线是“看不到”的要等到下一根K线走完信号被确认后画线才会出现在图上。这带来的直接后果是如果你用这套公式的最后一根K线信号做交易决策会比真实死叉晚1根K线确认。对于15分钟周期就是晚15分钟对于日线就是晚一天。这也是为什么这个公式更适合作为复盘画线工具和区间参考而不适合直接作为自动下单的信号源。WH6回测模型如果勾选了未来函数优化历史胜率会被显著抬高实盘会打回原形。提示在使用任何包含REFX1或BACKSET的模型进行回测前先在文华公式管理器里打开“未来函数检测”确认标记位置再决定是否需要用延迟确认版本替代。4. 文华WH6/WH8编译实操完整公式、参数调优与重复画线过滤4.1 完整公式源码与编译路径把前面的参数化改造和画线组合到一起完整源码如下RSVN:9; KSM:3; DSM:3; UP:80; DOWN:20; RSV:IF(HHV(HIGH,RSVN)-LLV(LOW,RSVN)0,(CLOSE-LLV(LOW,RSVN))/(HHV(HIGH,RSVN)-LLV(LOW,RSVN))*100,50); K:SMA(RSV,KSM,1); D:SMA(K,DSM,1); N:BARSLAST(KUPISUP)1; M:BARSLAST(KDOWNISDOWN)1; BB:BACKSET(REFX1(CROSSDOWN(K,UP),1),N); CC:BACKSET(REFX1(CROSS(K,DOWN),1),M); DRAWHORIZONTALLINE(CROSS(BB,0.5),H,COLORRED); DRAWHORIZONTALLINE(CROSS(CC,0.5),L,COLORGREEN);在WH6中打开公式管理器新建一个技术指标语言选择麦语言把上述代码粘贴进去编译通过后加到主图即可。在WH8中路径类似只是可以额外指定加载K线周期和应用品种。加载之后你会看到红色压力线出现在每一段超买拉升的起点高位绿色支撑线出现在每一段超卖下跌的起点低位两条线都在向右延伸覆盖后续K线直到下一个同色画线条件触发。前半段是RSV到K、D的指标定义后半段是N、M的区间计算和画线输出。参数UP和DOWN已经独立出来不需要再改公式内部。RSV除零保护用IF包了一层横盘区间不会出现无效值。如果你用的是WH7这类多周期终端同样适用只需要在K线周期上重新确认参数即可。4.2 周期与阈值的匹配不同品种的参数矩阵80和20并不是所有品种、所有周期的万能解。K值在15分钟级别更敏感波动频繁80附近很容易被触发日线级别相对平滑K值达到80的次数明显减少。我按使用场景把参数分成三档场景周期UP阈值DOWN阈值RSVN适用品种特征短线波段15分钟/30分钟80209波动适中趋势连续性一般的品种日内趋势跟踪5分钟/1小时85159趋势较强容易钝化的品种中线持仓日线802014波动平稳适合降低画线频率以螺纹钢为例1小时级别用80/20效果比较好换成波动更大的铁矿石K值经常连续多根钝化在85上方如果还用80当作超买阈值画出来的压力线会非常密集几乎每一段小回调都触发一次红色水平线互相重叠主图直接没法看。把UP抬高到85之后画线频率明显下降剩下的都是真正值得关注的阻力区域。4.3 横盘钝化下的重复画线过滤横盘行情中K值会在80附近反复穿越导致BB区间频繁重建红色水平线一根接一根。这个问题光调阈值解决不彻底还需要在画线条件里加一个时间间隔限制。常见做法是用BARSLAST统计距离上一次画线过去了多少根K线如果间隔太短就跳过LINE_RED:CROSS(BB,0.5); LINE_GREEN:CROSS(CC,0.5); DRAWHORIZONTALLINE(LINE_RED AND BARSLAST(LINE_RED)5,H,COLORRED); DRAWHORIZONTALLINE(LINE_GREEN AND BARSLAST(LINE_GREEN)5,L,COLORGREEN);BARSLAST(LINE_RED)在画线条件成立的当根返回0之后每过一根K线加1。所以5表示距离上一次画线至少间隔5根K线才允许再次画线。后加的过滤条件不会影响原有画线逻辑只是把5根K线以内的重复信号丢弃主图上的线条数量会减少一大半但留下的每一条都对应一段更完整的行情区间。这里有一个取舍过滤条件是全局的它不会区分“不同价位区间的独立压力线”。如果5根K线之内行情已经从3700拉到3800再回落到3700附近理论上这属于两个不同价位的压力信号但间隔过滤会直接丢弃第二个。对这个问题可以做价位分离用REF(H,? )记录上一次画线价格然后比较当前画线价格与上一次画线价格之差是否超过一定比例。不过这会增加变量存储复杂度我通常只在日线以上级别使用纯间隔过滤更小周期用阈值UP抬高来解决效果更稳定。5. 信号漂移验证与保守版替换三种方法确认画线可用5.1 去除REFX1的对照版REFX1虽然让画线位置精确对齐到区间边界但它让最后一根K线的信号不可见。要量化这个漂移程度可以写一个去掉REFX1的对照版本BB2:BACKSET(CROSSDOWN(K,UP),N); CC2:BACKSET(CROSS(K,DOWN),M); DRAWHORIZONTALLINE(CROSS(BB2,0.5),H,COLORRED); DRAWHORIZONTALLINE(CROSS(CC2,0.5),L,COLORGREEN);对照版在原版基础上删掉了REFX1改用死叉发生的当根信号直接回填。对比两个版本在同一段历史K线上的画线位置你会发现原版的红色水平线出现在区间左侧更早的位置而对照版出现在死叉信号确认之后、约晚1根K线的位置。这就是REFX1带来的“视觉提前量”。监控程序、微信群喊单、自动化策略都不要把最后一根K线的画线当作已经确认的信号。版本画线位置确认时间历史回测观感实盘可用性原版区间左边界启动位需下一根K线确认精准、提前延迟1根K线对照版死叉信号当根附近当根收盘确认延后1根K线可做信号参考5.2 基于K线推进的窗口验证法与画线参数归档验证这套公式真正靠谱的方法不是在全部K线上一眼扫过去看画得准不准而是要制造“信息截断”。打开WH8的K线图把十字光标定位到某一段行情的中间位置记录下当时图上已经画出的压力线和支撑线然后向右移动光标观察后续K线走出来之后那些早早画好的水平线是否真正起到了阻力或支撑作用。如果红色水平线被连续三根阳线干净突破说明这段压力位的参考价值有限需要结合UP阈值和RSVN再调。我一般还会把验证结果记成参数归档比如螺纹钢1小时是UP85、DOWN15、RSVN9铁矿石15分钟是UP88、DOWN12、RSVN9。每个品种参数差异的根源是波动率和K线实体占比不同把参数与复盘截图一起归档下次改周期时直接套用同品种参数比每次从头调试省事得多。最有效的验证标准只有一个删掉未来函数后画线在实盘中的参考价值是否仍然成立。如果对照版画出来的线也基本覆盖住了行情的极点区域这套公式才真正达到了可以投入日常盘面使用的状态。本文还有配套的精品资源点击获取
返回列表