教程 · 单套解锁 教程 · EA量化教学

EA09 麦语言/WH8 策略

使用手册 + 操作教程 共 20 章全部免费开放,一步一步把软件用起来;核心知识点 7 章,¥69 一次解锁讲透原理。

作者 枢汇安全课堂 更新 2026-10-13 阅读 55 收录 EA量化教学 · 27 章
本课程 · 单套解锁
¥69¥104
单品永久解锁 · 会员可阅 · 一次购买终身使用
✓使用手册 + 操作教程 共 20 章全文免费 ✓核心知识点 7 章,¥69 一次解锁 ✓支持电脑 / 手机 · 永久免费更新
注册后解锁核心知识点
免费学习区 使用手册 + 操作教程 共 20 章全部免费开放 · 核心知识点 7 章为付费内容 ¥69 解锁核心知识点
PART ONE

使用手册

功能在哪 · 是什么 · 怎么调出来

一、麦语言是什么

麦语言是文华财经自研的策略语言,2004 年推出,是国内使用人数最多的程序化模型开发平台之一。官方给它的定位是"小语法、大函数":语法只有赋值、条件、指令寥寥几条,复杂算法都封装在一个个函数里。

  • 类公式语法:写法接近"收盘价上穿20均线就买",几行就能写一个完整策略
  • 国内期货 CTP 柜台原生支持,WH8 模组运行,不用自己写网络和下单接口
  • 函数库随版本持续更新,官方帮助指南 wenhua.com.cn/guide/wh8 有完整函数分类页
  • 缺点:只能在文华生态里跑,不能跨平台移植

别混淆两套语法:文华体系中还存在另一套结构化的量化语法(Params / Vars / Begin-End 结构,用 A_SendOrder 下单,见官方 myQuant / T9 指南),与麦语言完全是两回事。麦语言模型没有 Begin/End 主程序结构,写法是"语句+分号"的公式体。在网上搜示例代码时先看清是哪套语法,混着抄必编译报错。

白话注解:麦语言就是"期货界的 Excel 公式"——你写"收盘价上穿20日均线就买",它自动帮你下单。不用写代码连接服务器、不用管断线重连,WH8 全帮你做了。
PART TWO

操作教程

一步一步 · 跟着做完一件事

二、开发环境

  1. 下载安装赢智 WT8 / WH8(文华官网 wt8.wenhua.com.cn 提供下载,麦语言学习资料也在官网)
  2. 打开 量化 → 模型开发平台(不同版本入口名称略有差异)
  3. 新建趋势模型(做套利选套利模型)
  4. 内置编辑器里写代码,点 编译 检查语法
  5. 编译通过后,把模型加载到 K 线看信号,再进回测,最后加到模组实盘
白话注解:编辑器里点"插入函数"能看到当前版本全部函数和参数说明——这是最权威的本地手册,比网上任何教程都准。函数记不全没关系,记住常用的十几个,其余靠插入函数查。

三、基本语法规则

1、两种定义变量的方式

写法含义
X: 公式;定义变量并在图上画线,显示名字 X
X:= 公式;定义中间变量,不画线(冒号后多一个等号)

2、硬性规则

  • 每条语句以半角分号结尾,包括最后一条
  • 注释写在花括号 { } 里,不执行
  • 全程半角输入:中文标点(,;()"")混进表达式是编译失败的最常见原因
  • 变量名不能互相重复、不能和参数名重复、不能和函数名重复
  • 逻辑运算:&&(与,可写 AND)、||(或,可写 OR);比较:> < >= <= = <>
{ 语法示例:三种语句 }
MA5:MA(CLOSE,5); { 定义变量并画线 }
TMP:=(HIGH+LOW)/2; { 中间变量,不画线 }
MA5>TMP,SK; { 条件成立执行指令 }
白话注解:冒号和冒号等号就一字之差:: 的变量会在图上画出来(调试时很直观),:= 的纯内部使用。建议过程变量都用 :=,只把最终想看的几条线用 : 画出来,图面干净。

四、数据引用函数

函数含义
CLOSE / C收盘价(盘中指最新价)
OPEN / O开盘价
HIGH / H最高价
LOW / L最低价
VOL / V成交量
OPI持仓量
AVPRICE均价(盘后对国内三交易所指结算价)
SETTLE结算价(日内K线上返回当日开盘至今的均价,日线及以上返回当根K线结束时间所在日的结算价)
REF(X,N)N 个周期前的 X,如 REF(CLOSE,5)
REFX(X,N)引用 N 个周期后的数据 未来函数,见第十九章
MINPRICE('代码')返回某合约最小变动价位,参数为文华码或交易代码;个别合约查不到时返回 0
MINPRICE1取模组交易合约的最小变动价位(无参数)

警告:旧版教程常见裸写 20*MINPRICE 的用法,官方函数手册收录的用法是 MINPRICE('IF1107') 这种带参数形式;模组里对当前交易合约取最小变动价位请用无参数的 MINPRICE1。写完编译一下,以本地编译器提示为准。

{ 引用示例 }
LC:=REF(CLOSE,1); { 昨收 }
RANGE1:=HIGH-LOW; { 当根振幅 }
TICKVAL:=MINPRICE1; { 当前模组合约一个最小变动价位 }
白话注解:MINPRICE1 是写止损距离最好用的尺子——"亏 20 个最小变动价位就砍"写成 C<BKPRICE-20*MINPRICE1,换品种不用改数字,因为它永远取的是当前合约自己的最小变动价位。

五、信号指令全集与 AUTOFILTER 过滤规则

1、六个信号指令 + 全平

指令含义白话
BK买开开多单
SK卖开开空单
SP卖平平多单
BP买平平空单
BPK买平开平空单同时反手开多
SPK卖平开平多单同时反手开空
CLOSEOUT全平所有持仓全部清掉

写法:条件, 指令;。判断上一笔信号用什么:ISLASTBK / ISLASTSK / ISLASTBP / ISLASTSP / ISLASTBPK / ISLASTSPK / ISLASTCLOSEOUT(返回 1 或 0)。

CLOSE > MA(CLOSE,20), BPK; { 收盘价站上20均线:平空反手开多 }
CLOSE < MA(CLOSE,20), SPK; { 收盘价跌破20均线:平多反手开空 }

2、AUTOFILTER:一开一平过滤规则

模型末尾写 AUTOFILTER; 即声明为一开一平过滤模型,官方过滤规则:

  • 连续的同方向指令只有第一个有效,其余被过滤
  • 交易指令必须配对出现:先有开仓指令,后面只允许出现对应的平仓指令
  • 所以过滤模型的第一个信号只能是 BK 或 SK,其他指令都被滤掉
白话注解:不加 AUTOFILTER 的话,"MA5>MA20"每根 K 线都成立,就会每根 K 线都发一次 BK。加了它,模型变成严格的"开一仓—平一仓"循环:开过仓就不再重复开,直到平仓信号出现。这就是为什么大多数趋势模型最后一行都是 AUTOFILTER。

六、第一个模型:双均线趋势

{ 双均线趋势模型(过滤模型) }
MAFAST:MA(CLOSE,10);
MASLOW:MA(CLOSE,30);

CROSSUP(MAFAST,MASLOW),BPK; { 金叉:平空反手开多 }
CROSSDOWN(MAFAST,MASLOW),SPK; { 死叉:平多反手开空 }
AUTOFILTER;

逐行拆解:

  1. MAFAST:MA(CLOSE,10); —— 定义 10 周期均线并画线
  2. CROSSUP(...),BPK; —— 金叉当根 K 线触发买平开指令
  3. AUTOFILTER; —— 声明一开一平过滤模型

把模型加载到 K 线图上,历史信号会直接标在图上,肉眼先检查两件事:信号是否合理、有没有明显逆大势的噪音信号。

白话注解:注意默认情况下信号是"K 线走完确认"的——当根 K 线走完、条件仍成立才真正发出信号。盘中看到信号闪了一下又消失,那是盘中计算值在变,不是 bug。想改成盘中即时下单,见第十四章指令价模型。

七、止损止盈与持仓函数

1、官方头寸函数(节选自 WH8 帮助"头寸函数"页)

函数含义
BKPRICE最近一次买开信号价位
SKPRICE最近一次卖开信号价位
BKPRICE1模组中交易合约的买开信号价位
SKPRICE1模组中交易合约的卖开信号价位
BKHIGH / BKLOW买开仓以来的最高价 / 最低价
SKHIGH / SKLOW卖开仓以来的最高价 / 最低价
BKVOL / SKVOL模组信号多头持仓 / 空头持仓
BARSBK / BARSSK上一次买开 / 卖开信号位置(距当前 K 线根数)
BARSBP / BARSSP上一次买平 / 卖平信号位置
ISLASTBK 等判断上一个信号是否为某个指令

警告:HOLDING、BAKPRICE、SAKPRICE 不在官方头寸函数表中,属旧版教程讹误,请勿使用。持仓看 BKVOL / SKVOL,开仓价看 BKPRICE / SKPRICE,持仓期间最高最低价用 BKHIGH / BKLOW(或 HHV(HIGH,BARSBK+1) 自己算)。

2、固定价位止损止盈

{ 多单:亏20个最小变动价位止损,赚40个止盈 }
C < BKPRICE - 20*MINPRICE1, SP;
C > BKPRICE + 40*MINPRICE1, SP;

{ 空单:同理反向 }
C > SKPRICE + 20*MINPRICE1, BP;
C < SKPRICE - 40*MINPRICE1, BP;

3、持仓期间高低点(移动止损的原料)

{ 取最近买开位置到现在的最高价 }
HHV(HIGH,BARSBK+1);
{ 取最近卖开位置到现在的最低价 }
LLV(LOW,BARSSK+1);
白话注解:BKPRICE 就是你的开仓成交价。止损就是拿当前价 C 跟它比,亏够了就 SP 平掉。BARSBK 返回"上一次买开是几根 K 线之前",+1 是为了把开仓当根也算进去,所以 HHV(HIGH,BARSBK+1) 恰好是"开多以来最高价",和官方的 BKHIGH 一个意思——两条路都能用。

八、参数化

1、官方 PARAM 格式

官方教程给出的源码内定义参数格式是方括号,顺序为参数名,最小值,最大值,缺省值:

PARAM[N1,1,100,10]
PARAM[N2,1,200,30]

FAST:EMA(CLOSE,N1);
SLOW:EMA(CLOSE,N2);

CROSSUP(FAST,SLOW),BPK;
CROSSDOWN(FAST,SLOW),SPK;
AUTOFILTER;

纠错:旧版教程写的 PARAM N1(10, 1, 100, 1) 把缺省值放在了第一位且用圆括号,两种都是错的。正确写法缺省值在最后:PARAM[N1,1,100,10] 表示默认 10、可调 1~100。

2、参数页签

除了源码 PARAM,编辑器还有"参数"页签可以定义名称、最小值、最大值、默认值。无论哪种方式,默认值这一步不能省——留空会让模型首次加载取到 0 或越界值,表现是均线全平或不显示。

白话注解:参数化是回测寻优的前提。把均线周期、止损距离全抽成参数,后面第二十一章的枚举/遗传调参才能自动帮你找组合,而不用一个个改源码。

九、完整实战:双均线 + 通道止损

{ 双均线入场 + 持仓期高低点移动止损 }
{ 参数:快线周期/慢线周期/止损回撤距离 }
PARAM[N1,2,50,10]
PARAM[N2,5,200,30]
PARAM[TRAIL,5,200,20]

FAST:EMA(CLOSE,N1);
SLOW:EMA(CLOSE,N2);

{ 开仓:均线金叉死叉反手 }
CROSSUP(FAST,SLOW),BPK;
CROSSDOWN(FAST,SLOW),SPK;

{ 多单移动止损:开多以来最高价回撤TRAIL个最小变动价位平多 }
HHV(HIGH,BARSBK+1) - C > TRAIL*MINPRICE1, SP;

{ 空单移动止损:开空以来最低价反弹TRAIL个最小变动价位平空 }
C - LLV(LOW,BARSSK+1) > TRAIL*MINPRICE1, BP;
AUTOFILTER;

设计要点:

  1. 入场交给均线交叉,出场交给"利润回撤就跑"——赚过钱的单子不让它坐电梯回到底
  2. 止损距离用 MINPRICE1 度量,跨品种移植不用改代码
  3. 三段止损止盈逻辑互不冲突:反手指令本身也是一种"止损"(金叉时 BPK 会先平掉旧空单)
  4. TRAIL 调太小会被日常波动扫掉,调太大形同虚设——这正是要交给定参工具的参数
白话注解:移动止损的直觉是"这单最多赚到 80 点没跑,现在回落到只剩 40 点,走人"。HHV(HIGH,BARSBK+1) 记录开仓以来摸到的最高价,回落超过 TRAIL 个最小变动价位就 SP。

十、模组实盘运行

WT8 说明书"策略的组合配置 / 策略的运行管理"两部分的完整流程:

  1. 建 模组:把模型加载进去,绑定账户和合约
  2. 启动模组后自动按模型信号下单,信号、委托、持仓在模组窗口可见
  3. 模组持仓匹配校验:模组理论持仓和账户实际持仓对不上时(手动干预、网络异常等),有校验和重新初始化机制处理
  4. 合约换月移仓:支持手动移仓换月和模组自动换月
  5. 模组一带多账号下单:一个模组的信号可分发到多个账户
  6. 远程监控模组运行:手机端可查看模组状态
白话注解:模组就是"自动交易机器人"。但请记住它是半自动的——你需要盯着"理论持仓 vs 实际持仓"是否一致。手动下过一单、下单被拒,都可能出现两边对不上的情况,这时要用模组自带的校验/初始化功能对齐,不能假装没看见。

十一、信号执行方式:收盘价模型 vs 指令价模型

这是麦语言最核心的进阶概念。默认(模型里不写任何执行方式函数)是收盘价模型:K 线走完确认信号下单,一根 K 线最多一个信号。

想盘中实时下单,需要写入指令价模型函数。官方规则:CHECKSIG、MULTSIG、MULTSIG_MIN、CHECKSIG_MIN 不能同时出现在一个模型中;写了这类函数后模型按指令价方式运行。

1、CHECKSIG:设置信号确认与复核

CHECKSIG(SIG,MODE1,TIME1,MODE2,TIME2,INTERVAL);
{ 例:BK出信号立即确认下单,不复核 }
CHECKSIG(BK,'A',0,'C',0,0);
参数取值含义
SIGBK/SK/BP/SP/BPK/SPK/CLOSEOUT对哪个指令设置(可设全部指令)
MODE1'A'出信号后第 TIME1 个时间间隔(或 TIME1 秒)确认下单
MODE1'B'K 线走完前 TIME1 个间隔(或 TIME1 秒)确认;TIME1=0 即 K 线走完确认
MODE2'C'/'D'确认后再按时长/间隔做一次信号复核;TIME2=0 为不复核
MODE2'E'/'F'小节末 / 收盘前最后一根 K 线提前复核,其余 K 线走完复核
INTERVAL0 / 3 / 5 / 10数据时间间隔;0=每笔 TICK 计算,3/5/10=每隔相应秒数计算(回测速度可提升但精度稍差),不支持变量

2、MULTSIG:一根 K 线多个信号

MULTSIG(Sec1,Sec2,N,INTERVAL);
{ 例:出信号立即下单不复核,一根K线最多2个信号,每笔TICK计算 }
MULTSIG(0,0,2,0);
{ 例:开仓信号3秒后下单,平仓信号5秒后下单,每笔TICK计算 }
MULTSIG(3,5,2,0);
  • Sec1 管开仓信号(BK/SK),Sec2 管平仓信号(BP/SP/BPK/SPK)
  • N 为一根 K 线最大信号个数(官方说明取值范围 1-60),支持写变量
  • INTERVAL 同样只支持 0、3、5、10
  • 信号下单后固定,不随后续条件消失而撤回(不复核机制)
白话注解:两个函数一句话区分——CHECKSIG 一根 K 线最多一个指令、还能带"复核"(下单后再看一眼条件还在不在);MULTSIG 一根 K 线可以连发多个指令、不复核。做 tick 级日内策略用 MULTSIG,做"想比收盘价早一点点进场"用 CHECKSIG。注意 INTERVAL 用 3/5/10 回测快但精度差,回测结论会偏乐观,参数为 0 才是逐笔口径。

十二、跨周期引用 #IMPORT

1、官方语法

#IMPORT [PERIOD,N,FORMULA] AS VAR
  • PERIOD:被引用周期,支持 SEC(秒)、MIN(分钟)、HOUR、DAY、WEEK、MONTH、QUARTER、YEAR
  • N:周期倍数(如 MIN 配 2 即 2 分钟周期);N 为大于等于 1 的整数,周及以上周期写大于 1 的数按 1 计算
  • FORMULA:被引用指标名称——要先建好并保存该指标
  • VAR:定义变量名,之后用 VAR.指标里的变量名 取值

2、完整示例(官方说明书范式)

第一步:先写一个指标,保存为 AA:

{ 指标AA:日线的多空状态 }
MA5:MA(C,5);
MA30:MA(C,30);
DAYCON1:MA5>MA30; { 日线多头排列 }
DAYCON2:MA5<MA30; { 日线空头排列 }

第二步:在分钟周期模型里引用:

#IMPORT[DAY,1,AA] AS VAR1
DC1:VAR1.DAYCON1;
DC2:VAR1.DAYCON2;

MAF:MA(C,5);
MAS:MA(C,20);
DC1 && CROSSUP(MAF,MAS),BPK;
DC2 && CROSSDOWN(MAF,MAS),SPK;
AUTOFILTER;

加载时只加载跨周期模型即可,AA 指标不需要单独加载。

3、官方注意事项

  • #IMPORT 语句末尾不能写分号
  • 被引用的指标中不能再有引用
  • 跨周期语句个数 + 跨合约引用个数不超过 6 个
  • VAR 变量名不能与函数名重复;引用指标名只能为字母或数字命名
  • 盘中被引用大周期的数据仍在变动(当日日线还没走完),信号可能来回变化——这是引用了"未收盘周期"的固有特性,不是软件错误

纠错:旧版教程写的 MA15M:"MIN15$CLOSE".MA(CLOSE,10); 是虚构写法,官方不存在 "周期$数据".函数() 这种链式语法。跨周期一律用 #IMPORT,跨合约一律用 #CALL。另外注意别把通达信的 C#DAY 语法搬进来——那是通达信的跨周期符号,不是麦语言的。

白话注解:#IMPORT 的思想是"大周期定方向、小周期找入场":日线多头排列 + 分钟级金叉才开多,把逆大势的信号全过滤掉。想引用的数据必须先写进被引用指标里——你不能在模型里直接对日线收盘价做 MA,得在 AA 指标里算好 MA 再把结果传过来。

十三、跨合约引用 #CALL

#CALL ["CODE", FORMULA] AS VAR

CODE 为被引用合约(文华码),FORMULA 为被引用指标名。官方说明书示例:在螺纹合约模型里引用黑链指数(文华码 7161)的趋势状态:

{ 指标AA(保存为AA): }
MA5:MA(C,5);
MA10:MA(C,10);
MA30:MA(C,30);
HGCON1:MA5>MA10 && MA10>MA30; { 板块多头趋势 }
HGCON2:MA5<MA10 && MA10<MA30; { 板块空头趋势 }

{ 螺纹模型: }
#CALL[7161,AA] AS VAR
HGCON1:VAR.HGCON1;
HGCON2:VAR.HGCON2;
MAF:MA(C,5);
MAS:MA(C,30);
HGCON1 && CROSSUP(MAF,MAS),BPK;
HGCON2 && CROSSDOWN(MAF,MAS),SPK;
AUTOFILTER;
白话注解:#CALL 解决的是"看板块做单品种":黑链指数多头排列时,螺纹自己的金叉信号质量更高。注意 #IMPORT 和 #CALL 加起来总数不超过 6 个,别把模型写成引用大杂烩——引用越多,盘中数据依赖越多,信号闪烁的坑也越多。

十四、资金与头寸函数

WH8 帮助"头寸函数"页收录的模组资金类函数(节选):

函数含义
MONEY模组资金余额
MONEYTOT模组权益
MONEYRATIO资金使用率
MARGIN合约保证金
FEE合约手续费
PROFIT模组逐笔浮盈
OFFSETPROFIT当前模组平仓盈亏
VOLMARGIN持仓保证金
LONG_VOL / SHORT_VOL模组多头/空头可用持仓
LONG_PRICE / SHORT_PRICE模组多头/空头持仓开仓均价
UNITLIMIT取交易合约限制拥有持仓数
SETDEALPERCENT设置下单的模组资金使用比例
{ 用平仓盈亏做风控:当日平仓累计亏损超过3000元全平并停 }
OFFSETPROFIT < -3000, CLOSEOUT;
白话注解:SETDEALPERCENT 让仓位跟着权益走——比如设成 0.2,每次开仓用 20% 的模组资金,赚了加仓基数、亏了减,等于自带轻量化复利。注意这些是"模组"函数,反映的是模组自己的账,不是你账户的全部持仓。

十五、信号控制函数

函数含义
MONO_SIGNAL限制信号(约束模型信号行为,详见官方头寸函数页说明)
SETSIGMAXNUM设置一根 K 线最大信号个数
SETSIGPRICETYPE为不同的信号设置不同的价格方式
CONDITION_ORDER条件单模组关键字
AUTOCLEARSIG一根 K 线上信号满 60 个时,自动清除前面的信号
{ 示例:限制一根K线最多3个信号 }
SETSIGMAXNUM(3);
白话注解:这几个函数是给指令价模型(MULTSIG 那类一根 K 线可能连发多个信号的场景)配的"刹车":SETSIGMAXNUM 限制单根 K 线信号数,SETSIGPRICETYPE 控制委托价格方式(对手价/超价之类,具体枚举值以编辑器插入函数说明为准)。不懂就别乱设——刹车装错位置比不装更危险。

十六、未来函数黑名单

官方函数手册明确标注了以下"未来函数"——它们引用了尚未走完的数据,回测信号精准得可疑,实盘会原形毕露:

函数官方标注
REFX(X,N)引用 N 个周期后的数据;官方同时警告运算量很大、占用 CPU,谨慎使用
BACKSET(X,N)条件成立时把当前位置到 N 周期前的数值设为 1
ZIGZAG(X,P,N)之字转向:X 变化量超过 P 才转向
PEAK / PEAKBARS取 ZIGZAG 的前 M 个波峰(及位置)
TROUGH / TROUGHBARS取 ZIGZAG 的前 M 个波谷(及位置)

为什么它们是坑:ZIGZAG 要等价格反向走出 P 才知道"这里转向了",回测时它仿佛提前知道拐点,实盘当根 K 线上转向点根本还没确定。用这类函数做的模型,回测曲线漂亮得不像话,实盘一挂就失效。

{ 反面教材(仅演示,勿模仿) }
{ ZIGZAG 在实盘当根K线上会重绘,信号不可复现 }
ZIGZAG(HIGH,10,1);
白话注解:判断一个函数是不是未来函数,问一句话:"这个值在实盘当根 K 线还在跳吗?"REF(C,1) 看的是已走完的昨天,稳的;ZIGZAG、BACKSET 看的是"未来会怎么走",跳的。凡是依赖未来数据的模型,回测越准,实盘越惨。

十七、模型定参:枚举、遗传、滚动调参

WT8 说明书"模型定参"提供三种工具:

  • 枚举:把参数组合逐个跑一遍,结果全面但慢,适合参数少、区间小
  • 遗传:模拟优胜劣汰,先随机取样再向高分区域收敛,适合参数多的大空间
  • 滚动调参:分段用历史数据滚动验证参数稳定性,避免"一组参数吃遍全历史"的假象

配套的还有批量回测(一个模型跑一篮子品种,看策略与品种的适配性)和组合配置(多策略多品种组合,降低单策略回撤)、一篮子合约参数优化。

白话注解:调参最大的坑叫过拟合——参数调得对历史完美贴合,其实是把历史的噪音背下来了。破解法是滚动调参:如果一组参数在每段历史里表现都中上,比在整段历史里表现第一的参数可信得多。参数组合的数量也要控制,跑几百组可以,跑几万组基本必过拟合。

十八、模型类型:过滤模型与加减仓模型

官方对模型的分类维度:

类型特征
一开一平过滤模型写 AUTOFILTER,信号严格配对,同向信号只认第一个
加减仓模型同方向可连续开仓/分批平仓,配合 SETSIGMAXNUM 等控制信号数
收盘价模型(默认)K 线走完确认信号,一根 K 线最多一个信号
指令价模型写 CHECKSIG/MULTSIG 族函数,盘中实时出信号

官方说明(程序化社区引用的官方规则):指令价模型和一开一平过滤模型、加减仓模型没有必然联系——既支持一开一平的指令价模型,也支持加减仓的指令价模型。另注意 AUTOCLEARSIG 的机制:一根 K 线上信号满 60 个时自动对前面的信号进行删除。

白话注解:新手先写过滤模型(AUTOFILTER 收着你的手),逻辑跑通了再玩加减仓。加减仓模型信号会连续触发,仓位管理全靠你的条件写得好不好,一个没写紧,一根大阳线给你开出满仓。

十九、VPS 部署与实盘管理

  1. 模组要 7×24 挂机才能持续响应信号,自己电脑关机模组就停了
  2. 建议使用期货公司提供的机房 VPS(云服务器):网络稳定、断线概率低
  3. VPS 上装 WT8/WH8,登录账号,把模组启动起来即可
  4. 配合官方远程监控模组运行功能,手机端可查看模组状态
  5. 交易时段检查:模组在线状态、理论持仓与实际持仓一致、下单无异常拒单
白话注解:VPS 是放在机房里 24 小时不关机的电脑,网络比你家里稳得多。夜盘时段(21:00 之后)恰恰是策略最容易出信号的时段,人该睡觉睡觉,机器交给 VPS 和远程监控。

二十、本课小结

  • 麦语言 = 小语法大函数:X: 公式; 画线,X:= 公式; 中间变量,条件, 指令; 下单
  • 六个信号指令 BK/SK/SP/BP/BPK/SPK + CLOSEOUT 全平;AUTOFILTER 声明一开一平过滤模型
  • 持仓看 BKVOL/SKVOL/BKPRICE/SKPRICE/BARSBK/BARSSK/BKHIGH/BKLOW——HOLDING 等旧写法不存在
  • 参数用 PARAM[名,最小,最大,缺省],缺省值必须填
  • 止损距离用 MINPRICE1 度量,跨品种免改代码;MINPRICE('代码') 是带参形式
  • 指令价模型:CHECKSIG(可复核、单信号)/ MULTSIG(多信号、不复核),INTERVAL 只支持 0/3/5/10
  • 跨周期 #IMPORT、跨合约 #CALL,引用总数 ≤6,被引用指标先保存
  • 未来函数黑名单:REFX/BACKSET/ZIGZAG/PEAK/TROUGH——回测越美实盘越惨
  • 定参用枚举/遗传/滚动调参,滚动验证防过拟合;回测必带手续费和滑点
  • 回测 ≠ 实盘,业绩不代表未来收益
本站固定免责声明:本教程仅讲解软件编程与操作方法,不构成投资建议或策略推荐。回测业绩不代表未来收益,EA自动交易风险大,请谨慎决策。
付费专享 · 核心知识点 7 章

继续阅读:核心知识点,搞懂原理

EA09 麦语言/WH8 策略 — 共 27 章,已免费阅读 20 章,剩余 7 章核心知识点讲透「为什么这样、点了会怎样」。

二十一、指标与逻辑判断函数
二十二、回测
二十三、回测结果怎么看
二十四、策略调试与常见编译错误
二十五、常见问题全集 FAQ
二十六、学习路线
…等共 7 章核心内容
✍️ 注册后扫码购买 🔐 已有账号,去登录 单套 ¥69 永久 · 会员可阅
SERVICE & PRICING
服务收费说明 · 明码标价,无隐藏收费
全部课程统一 ¥39-69,买一套永久使用。以下为购买与使用的完整流程。
01先免费试读

每套教程的「使用手册」部分均可免费阅读,先确认内容是否适合自己再决定,不必盲买。

02扫码付款

选定课程后点「立即解锁」,页面展示收款二维码与客服微信,扫码转账即可,无需注册海外支付。

03获取卡密

付款完成后客服第一时间发送卡密号与卡密密码,站内消息与微信同步通知。

04兑换解锁

在用户中心「兑换卡密」输入卡密号与密码,系统即时解锁全部章节,无需二次付款。

一次付费,终身可用 · 解锁后课程永久留在账号里,不限次数、不限时间阅读 持续免费更新 · 平台改版、规则变化时课程同步修订
RECOMMEND
相关教程推荐 · 同栏目更多上手机会

💬 用户评价 (0)

🔒 登录并成为会员后可发表评价
还没有评价 · 成为第一个评价的人吧 🎯