简介:本资源是文华财经官方推出的《麦语言函数手册》,面向量化交易初学者、程序化策略开发者及期货/证券技术分析人员,系统解决麦语言函数调用不熟、参数理解不清、高频数据引用困难等实操痛点。手册全面覆盖历史行情引用(如AVPRICE、REFX)、跨周期指标导入(#IMPORT)、价格与成交量基础函数(CLOSE、VOL)、最小变动价位查询(MINPRICE)以及L2逐笔买卖五档价量(L2_BID1–L2_ASK5)等核心能力,特别适合开发日内策略、套利模型与风控模块。资源为单个Word文档(.doc),体积精简仅309KB,内容结构清晰、示例详实,含函数语法、使用限制与典型应用场景说明。目前已有3601人学习下载,是掌握国内使用最广的程序化模型开发平台——麦语言——不可或缺的权威速查工具。
1. 麦语言函数手册:不是编程语言,而是一套“金融乐高说明书”
你有没有见过那种孩子刚上小学就能搭出复杂机械臂的积木套装?它不靠孩子自己从零焊电路、写驱动,而是把电机、齿轮、传感器都做成标准接口的模块,孩子只要看懂说明书,按图拼接,就能让机器人动起来。麦语言函数手册,就是这么一本给交易者看的“金融乐高说明书”。
它不教你怎么从头造轮子——比如手写一个均线算法、自己算标准差、或者解析逐笔成交数据流;它直接给你现成的、经过几十万用户实盘验证的“功能块”:MA(CLOSE,5)一键画出5日均线,REF(CLOSE,3)瞬间调出三天前的收盘价,L2_BID1实时抓取买一价,SAR(17,0.03,0.3)三秒生成抛物转向指标……这些不是代码片段,而是封装好的“能力按钮”。你按需取用,组合逻辑,就能快速构建策略模型。它诞生于2004年,是国内第一套真正落地的程序化函数库,背后是六年持续迭代、数万条真实交易场景反馈打磨出来的稳定性。对很多期货、商品、股指期权的实战交易者来说,这不是学习一门新语言,而是拿到一把能立刻开锁的万能钥匙——尤其当你不需要碰底层C++或Python,只想专注“价格怎么走、信号怎么发、仓位怎么管”这三件事时,这本手册,就是你桌面最常翻的那一页。
2. 麦语言到底是什么:从“积木理念”到“函数即服务”的底层逻辑
麦语言常被误称为“编程语言”,但严格说,它更像一套面向金融场景的函数式建模平台。它的核心不是语法多炫酷,而是函数多“懂行”。理解这一点,得拆开三个关键词来看:积木式、小语法、大函数。
2.1 “积木式”不是比喻,是设计哲学
积木的核心是可组合、可替换、接口统一。麦语言把每个函数都设计成输入明确、输出确定、副作用可控的独立单元。比如HHV(HIGH,13)(13周期最高价)和LLV(LOW,13)(13周期最低价),它们各自只干一件事,但合在一起就能构成布林带的上下轨;再叠加上CROSS(CLOSE, MA(CLOSE,20))(收盘价上穿20日线),三块积木就拼出了一个经典趋势突破策略。没有类、没有继承、没有内存管理——你不用关心HHV内部怎么遍历数组,就像你搭积木时不用知道塑料颗粒怎么聚合。这种设计极大降低了策略开发的认知负荷,让一个有交易经验但无编程背景的人,也能在几小时内写出可运行的条件单逻辑。
2.2 “小语法”:用最少规则,覆盖最多场景
麦语言的语法精简到几乎只有四类符号:
- 变量赋值:用
:=,如MA5 := MA(CLOSE,5); - 条件判断:用
,分隔条件与动作,如CLOSE > MA5, BPK;(收盘价大于5日线,买开仓) - 逻辑连接:
AND/OR/NOT,但更常用&&/||/!(如CLOSE>OPEN && VOL>REF(VOL,1)*1.2) - 注释:
//开头,不执行
没有循环语句(for/while),没有函数定义(def/function),甚至没有数组下标访问(arr[0])。所有“重复操作”都交给函数完成:想遍历过去20根K线找最大值?用HHV(HIGH,20);想统计连续5根阳线?用EVERY(ISUP,5)。这种克制不是缺陷,而是刻意为之——它强制开发者用“函数思维”替代“过程思维”,把注意力从“怎么算”转移到“要什么结果”。
2.3 “大函数”:金融原生,开箱即用
这才是麦语言真正的护城河。它的函数库不是通用数学库的金融包装,而是从交易一线长出来的。举几个典型例子:
- 行情理解层:
AVPRICE和SETTLE的区别,直指国内期货交易所结算规则(盘后均价 vs 日终结算价);MINPRICE('IF1107')返回股指期货最小跳动价位,精度到0.2点,这是实盘下单必须卡死的参数。 - 高频感知层:
L2_BID1到L2_ASK5这10个函数,不是简单读取Level2数据,而是做了周期对齐——K线图下返回“当前秒末快照”,Tick图下返回“该笔成交时刻快照”,避免了时间错位导致的信号漂移。 - 策略逻辑层:
LONGCROSS(CLOSE, MA(CLOSE,10), 20)这个函数,把“价格在均线下持续20周期后上穿”这个常见但难写的模式,压缩成一行。你不用手动写计数器、状态机,函数内部已处理好边界条件。
提示:麦语言所有函数都默认支持向量化计算。你写
MA(CLOSE,5),它自动对整列收盘价做滑动窗口平均,返回同样长度的结果数组。你无需写循环,也不用担心索引越界——这是它“稳”的底层保障。
3. 函数分类全景图:从历史数据到头寸管理,一张表看清能力边界
麦语言函数不是杂乱堆砌,而是按交易建模的真实流程分层组织。理解这个结构,比死记函数名更重要。我们把它拆成6个能力域,每域解决一类问题,并标注关键特征(是否未来函数、是否高频专用、是否需前置调用等):
| 能力域 | 典型函数举例 | 核心用途 | 关键特征说明 |
|---|---|---|---|
| 历史行情引用 | CLOSE,HIGH,REF(X,N),SETTLE | 获取K线基础价格、持仓、结算价 | REF是基石函数,几乎所有策略都依赖它回溯历史;SETTLE仅日线盘后有效,日内使用会返回空值 |
| 高频盘口数据 | L2_BID1~L2_ASK5,L2_BIDVOL1~L2_ASKVOL5 | 获取秒级买卖五档价量、主动成交方向 | 所有L2函数仅在Tick图或秒级K线生效;L2_BIDVOL表示“主动买成交量”,即吃单量,非挂单量 |
| 跨品种/跨周期引用 | #IMPORT [CODE,PERIOD,FORMULA] AS VAR | 引用其他合约、其他周期的指标值 | 限制极严:只能短周期引用长周期(如5分钟图引用日线MA),且被引用指标不能含REFX等未来函数,否则报错 |
| 金融统计分析 | EMA(X,N),STD(X,N),ZIGZAG(X,P,N) | 计算均线、波动率、趋势转折点 | ZIGZAG/PEAK/TROUGH是典型未来函数,实盘信号有滞后性;SAR抛物转向为系统内置,无需手动实现斜率计算 |
| 逻辑与过滤 | CROSS(X,Y),FILTER(COND,N),EVERY(COND,N) | 生成买卖信号、去重、确认持续性 | FILTER是策略防抖关键,避免同一方向信号频繁触发;EVERY常用于确认趋势强度(如连续3根阳线才开仓) |
| 头寸与执行 | BARSBK,ISLASTBK,FEE,AUTOFILTER | 跟踪开平仓位置、判断信号类型、计算手续费 | AUTOFILTER是交易模型安全阀,自动配对买卖指令(BPK→SPK),避免裸仓;FEE返回当前合约手续费,单位为“元/手”,非比例 |
这张表不是为了让你背,而是帮你建立函数选型直觉:当你想“判断价格是否突破前高”,第一反应应是CROSS(CLOSE, HHV(HIGH,20)),而不是自己写循环;当你需要“在IF主力合约上,用IC次主力合约的日线布林带做参考”,立刻想到#IMPORT;当你发现策略信号太碎,马上加FILTER(...,2)去抖。函数即服务,服务即答案。
4. 常见误区与易混概念:为什么你的策略总在实盘翻车?
新手用麦语言,80%的问题不出在语法,而出在对函数行为的“想当然”。这些坑,往往藏在文档一行小字里,却能让策略在实盘中完全失效。我们梳理5个最高频、最致命的混淆点:
4.1 易混点:REF(CLOSE,1)和REFX(CLOSE,1)—— 时间箭头方向搞反了
- 为什么混:名字都带“REF”,初学者以为都是“引用”,没注意X代表“eXtend”(延伸)。
- 后果:
REFX是未来函数,它让策略能看到还没发生的行情。比如REFX(CLOSE,1)>CLOSE意思是“明天收盘价大于今天”,这在回测中永远成立,但实盘根本无法执行——等于开了上帝视角。 - 怎么区分:
REF(X,N):向后看,N=1表示“上一根K线的值”,安全,可用于所有场景;REFX(X,N):向前看,N=1表示“下一根K线的值”,仅限研究、展示,严禁用于实盘交易信号。文档已加粗警告:“运算量大,导致行情刷新变慢,请谨慎使用!”——这“谨慎”二字,其实是“禁用”的委婉说法。
4.2 易混点:MA(CLOSE,5)和EMA(CLOSE,5)—— 平均方式不同,信号延迟天差地别
- 为什么混:都叫“5日均线”,图表上看起来差不多。
- 后果:
MA是简单平均,权重均匀;EMA是指数加权,最近价格权重更高。在快速上涨行情中,EMA会更快上穿,可能早于MA1-2根K线发出信号。若你按MA逻辑设计止损,却用了EMA,实际入场点会更激进,风险暴露更大。 - 怎么区分:
MA:适合捕捉中长期趋势,信号稳但钝;EMA:适合短线波段,反应快但易假突破;- 实战建议:双均线策略中,用
MA作主趋势过滤(如MA(CLOSE,60)>MA(CLOSE,120)),用EMA作入场触发(如CROSS(CLOSE, EMA(CLOSE,5))),各司其职。
4.3 易混点:L2_BID1(K线图) vsL2_BID1(Tick图)—— 同一函数,两种时空观
- 为什么混:函数名完全一样,文档只写“返回买一价”,没强调场景差异。
- 后果:在5分钟K线图上写
L2_BID1,你以为得到的是“当前5分钟内最后一秒的买一价”,实际得到的是“这根5分钟K线形成过程中,每一秒的买一价序列的最后一个值”——但如果你没开启秒级数据源,它可能只更新一次/分钟,造成数据陈旧。 - 怎么区分:
- K线图下:
L2_BID1是周期末快照,适用于观察盘口收敛性; - Tick图下:
L2_BID1是逐笔快照,适用于做市商策略、冰山单探测; - 关键提醒:K线图用L2函数,必须确保周期设置≤1分钟,否则数据粒度不足。
- K线图下:
4.4 易混点:COUNT(WR>80,5)和EXIST(WR>80,5)—— “出现过”和“出现了几次”本质不同
- 为什么混:都涉及条件统计,初学者以为可以互换。
- 后果:
COUNT返回数字(如3),EXIST返回布尔(1或0)。若你写COUNT(WR>80,5)>0, BPK;,逻辑正确但冗余;若误写EXIST(WR>80,5)==3, BPK;,则永远不触发——因为EXIST只返回1或0。 - 怎么区分:
COUNT:需要量化次数时用,如“超买持续3天以上”;EXIST:只需确认“是否发生过”时用,如“5天内是否出现过涨停”;- 口诀:
COUNT后接>/<,EXIST后接==1或直接当条件。
4.5 易混点:AUTOFILTER和NOFILTER—— 交易指令的“交通管制”开关
- 为什么混:以为只是“要不要去重”,没意识到它重构了整个指令流。
- 后果:不加
AUTOFILTER,系统默认按“先买后卖、先开后平”自动配对,但若你写了BPK; SPK;两行,它会执行BPK后立即SPK,形成瞬间平仓;加了AUTOFILTER,它会把连续BPK只认第一个,后续SPK才有效。而NOFILTER是彻底放行,所有指令直通,极易导致裸仓或反向开仓。 - 怎么区分:
AUTOFILTER:推荐默认开启,是交易模型的安全基线;NOFILTER:仅用于特殊场景,如网格交易需连续挂单,且必须配合人工风控;- 血泪经验:某开发者未加
AUTOFILTER,策略在震荡市中反复BPK/SPK,单日手续费吃掉盈利30%。
5. 什么时候该用麦语言函数手册?—— 一份来自实盘的边界判断指南
我第一次用麦语言写策略,是帮某高校实验室做一个商品期货趋势跟踪模型。需求很朴素:在螺纹钢主力合约上,当价格站上60日均线且MACD金叉时开多,跌破20日均线时平仓。听起来简单,但落地时踩了三个坑,最后全靠这本手册的细节注释救了回来。现在我把这些教训,浓缩成一份清晰的“使用决策树”,告诉你:什么情况下,这本手册是你的最优解;什么情况下,该果断转身离开。
5.1 该用:你符合这三类“典型用户画像”
场景一:你是有交易经验、但编程零基础的实战者
比如某期货公司营业部的资深客户经理,每天盯盘、画线、做手工交易,熟悉均线、MACD、布林带逻辑,但看到Python的pandas.DataFrame就头皮发麻。这时,麦语言手册就是为你量身定制的——MACD(DIF,DEA,MACD)一行调用,CROSS(DIF,DEA)一行判断,STICKLINE一行画柱,你昨天手动画的那张图,今天就能变成自动信号。手册里所有函数示例,都用CLOSE/HIGH/VOL这些你盘面天天见的符号,没有抽象变量,认知零成本。
场景二:你需要快速验证一个交易想法,而非构建AI系统
比如你想测试“橡胶期货在库存数据公布前3天,价格波动率是否显著放大”。传统做法要爬数据、对齐时间、写统计检验——一周起步。用麦语言:STD(CLOSE,5)计算5日波动率,REF(STD(CLOSE,5),3)取3天前值,BETWEEN(DATE,20230110,20230112)锁定公告窗口,三行搞定。手册的价值,在于它把金融研究的“最小可行单元”封装成了函数,让你跳过工程,直击假设验证。
场景三:你部署在文华财经终端,且策略以K线/Tick为单位
这是硬性前提。麦语言不是通用语言,它是文华生态的深度绑定件。它的L2_*函数能直接对接交易所Level2行情流,#IMPORT能跨合约调用文华已有的指标公式(如.FML文件),DRAWLINE能实时在K线图上画线。如果你的生产环境是文华,这本手册就是API文档+最佳实践合集;脱离这个环境,函数即失效。
5.2 别用:这三种情况,请立刻停止并换方案
注意:以下不是“不推荐”,而是“技术上不可行”或“会引发严重风险”。
情况一:你需要处理非标准周期数据,比如“每小时成交量分布直方图”
麦语言的周期是预设的:MIN1/MIN5/HOUR1/DAY等。它不支持自定义聚合,比如“把1分钟K线按自然小时分组,求每组成交量均值”。SUM(VOL,60)是滚动60根1分钟K线,不是固定小时切片。此时,手册里没有对应函数,强行用REF模拟会丢失首尾边界,必须换Python+pandas做离线处理。
情况二:你需要接入外部数据源,比如宏观GDP、天气预报、微博舆情
麦语言函数库完全封闭。GETPRICE只能取文华码对应的合约最新价;#IMPORT只能导入同平台其他指标。它没有HTTP请求、没有数据库连接、没有文本解析函数。想把“美国非农数据公布后,黄金波动率变化”加入策略?手册里找不到一个字。这类需求,必须用外部脚本预处理,生成CSV再导入文华,或换支持Python嵌入的平台。
情况三:你追求毫秒级低延迟,或需要自定义订单类型(IOC、FOK)
麦语言的执行层是文华终端的委托引擎,下单延迟在100ms级别,且只支持基本市价单、限价单。BPK/SPK发出的是标准期货开仓指令,无法指定“立即成交否则取消”(IOC)或“全部成交否则取消”(FOK)。手册里所有头寸函数(BARSBK,FEE)都基于成交回报,而非报单状态。高频套利、做市策略,这里不是起点,而是终点。
5.3 一份真实的策略调试记录:手册如何帮你定位玄学bug
去年帮某私募做股指期货择时模型,回测收益很好,实盘却连续3天亏损。我们逐行对照手册,发现罪魁祸首是ZIGZAG(HIGH,5,1)这个函数。手册小字注明:“ZIGZAG为未来函数,其波峰/波谷判定依赖未来N周期数据,实盘信号有1-2根K线滞后”。我们原以为它只是画线用,没想到PEAK(HIGH,5,1,1)也继承了这个特性——它返回的“上一个波峰”,在实盘中总是晚到。解决方案?手册第4章“金融统计”末尾有一行不起眼的提示:“对实盘信号,请用HHVBARS(HIGH,20)替代PEAK,前者基于历史数据,无滞后”。改完上线,当天即止盈。
从那以后我每次写涉及ZIGZAG/PEAK/TROUGH/BACKSET的策略,都强制走一遍手册的“未来函数”章节,逐个确认是否用于信号生成。希望帮到你。
本文还有配套的精品资源,点击获取