信号执行函数
行情函数和指标函数解决的是「看市场」,信号执行函数解决的是「怎么下单」。 这是指标变成模型的关键一步——没有交易指令,公式永远只是画线,不会产生任何交易。
一、基本交易指令
WT8 麦语言用一组专用指令发出买卖信号,写法是 条件, 指令;(满足条件时立即发出该指令)。
T+0 指令(期货主力,当天可买卖)
| 指令 | 含义 | 说明 |
|---|---|---|
BK | 买入开仓 | 建立多头持仓 |
SK | 卖出开仓 | 建立空头持仓 |
BP | 买入平仓 | 平掉空头持仓 |
SP | 卖出平仓 | 平掉多头持仓 |
BPK | 反手(买平后买开) | 空单转多单 |
SPK | 反手(卖平后卖开) | 多单转空单 |
STOP | 止损下单 | 立即平掉当前多头或空头持仓 |
CLOSEOUT | 风控清仓 | 立即清空所有持仓(多头和空头) |
T+1 指令(股票,当天买下个交易日才能卖)
| 指令 | 含义 |
|---|---|
BUY | 买入 |
SELL | 卖出 |
BUY/SELL只支持一开一平过滤模型;T+0 指令不能和 T+1 指令混用。
二、怎么用:基本写法
// 基本写法:满足条件 COND 时发出指令
COND, BK; // 满足 COND 买开
COND, SP; // 满足 COND 卖平
一个完整的双均线模型:
MA5 := MA(CLOSE, 5);
MA20 := MA(CLOSE, 20);
CROSS(MA5, MA20), BK; // 金叉买开
CROSS(MA20, MA5), SP; // 死叉卖平
AUTOFILTER; // 一开一平信号过滤
三、一开一平还是一直持仓?
选哪组指令,取决于你的交易方式:
- 不一直持仓(有仓位也有空仓):用
BK / SP / SK / BP,开仓和平仓分开写。 - 一直保持有持仓(非多即空):用反手指令
BPK / SPK,两个指令交叉出现。
止损和风控用 STOP 和 CLOSEOUT:
STOP(0, -10); // 多单亏损 10 个最小变动价位止损
MONEYTOT <= INITMONEY * (1 - 10/100), CLOSEOUT; // 权益回撤 10% 清仓
四、一开一平信号过滤模型规则
写入 AUTOFILTER 的模型遵循过滤规则:
- 连续同方向指令只有第一个有效,其余被过滤。
- 交易指令必须先开仓后平仓,一开一平配对出现:
BK后只能跟SP / SPK / CLOSEOUT / STOP;SK后只能跟BP / BPK / CLOSEOUT / STOP;- 平仓指令后才能接新的开仓指令;
- 反手指令
SPK和BPK交叉出现。
五、信号执行控制函数
除了基本指令,还有一组函数控制信号怎么执行(委托价、时机、手数):
| 函数 | 作用 |
|---|---|
SETSIGPRICETYPE(SIG, PRICE) | 给不同信号设置不同委托方式(最新价/排队价/对价/追价等) |
SETALLSIGPRICETYPE(PRICE) | 统一设置所有信号的委托方式 |
CLOSEKLINE(TYPE, N) | 让 K 线提前 N(1-30)秒走完确认信号,抢点差(指令价模型) |
T_PLUS(N) | 开仓手数为默认手数的 N 倍(仅一开一平模型) |
T_PLUS() 类资金管理 | 配合模组做头寸管理 |
委托价的可选项包括:NEW_ORDER(最新价)、PASSIVE_ORDER(排队价)、ACTIVE_ORDER(对价)、
TRACING_ORDER(自动连续追)、LIMIT_ORDER(市价)、SIGPRICE_ORDER(触发价)等。
注意:除
NEW_ORDER外,多数委托方式不支持回测——它们只在模组实盘运行时生效。
小结
- 基本指令
BK/SK/SP/BP用于开平仓,BPK/SPK用于反手,STOP/CLOSEOUT用于止损风控。 AUTOFILTER开启一开一平过滤,连续同方向信号只首个有效。- 委托价、时机、手数由
SETSIGPRICETYPE / CLOSEKLINE / T_PLUS等函数控制,多用于实盘。
下一步
指令会发了,下一步把模型完整地写出来并丢进回测。看 模型编写与回测,学习收盘价模型/指令价模型的写法和回测报告解读。