信号执行函数

行情函数和指标函数解决的是「看市场」,信号执行函数解决的是「怎么下单」。 这是指标变成模型的关键一步——没有交易指令,公式永远只是画线,不会产生任何交易。

一、基本交易指令

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,两个指令交叉出现。

止损和风控用 STOPCLOSEOUT

STOP(0, -10);                              // 多单亏损 10 个最小变动价位止损
MONEYTOT <= INITMONEY * (1 - 10/100), CLOSEOUT;   // 权益回撤 10% 清仓

四、一开一平信号过滤模型规则

写入 AUTOFILTER 的模型遵循过滤规则:

  1. 连续同方向指令只有第一个有效,其余被过滤。
  2. 交易指令必须先开仓后平仓,一开一平配对出现:
    • BK 后只能跟 SP / SPK / CLOSEOUT / STOP
    • SK 后只能跟 BP / BPK / CLOSEOUT / STOP
    • 平仓指令后才能接新的开仓指令;
    • 反手指令 SPKBPK 交叉出现。

五、信号执行控制函数

除了基本指令,还有一组函数控制信号怎么执行(委托价、时机、手数):

函数作用
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 等函数控制,多用于实盘。

下一步

指令会发了,下一步把模型完整地写出来并丢进回测。看 模型编写与回测,学习收盘价模型/指令价模型的写法和回测报告解读。