交易控制函数
金字塔的程序化交易有两套引擎,对应两套下单函数:图表交易用 BUY/SELL,后台交易用 TBUY/TSELL。
本章讲清这两套函数怎么用、委托类型怎么选、持仓怎么查。
一、图表交易下单函数
图表交易挂在 K 线图上,根据历史计算出「理论持仓」自动下单。四个核心函数:
| 函数 | 含义 | 签名 |
|---|---|---|
BUY | 开多 | BUY(条件, 数量, 委托类型, [价格]) |
SELL | 平多 | SELL(条件, 数量, 委托类型, [价格]) |
BUYSHORT | 开空 | BUYSHORT(条件, 数量, 委托类型, [价格]) |
SELLSHORT | 平空 | SELLSHORT(条件, 数量, 委托类型, [价格]) |
- 条件:布尔表达式,成立即触发下单。
- 数量:期货以「手」为单位,股票以「股」为单位(须为 100 的倍数)。
SELL中填0表示全平。 - 委托类型:决定用什么价格、在什么时机成交(见下表)。
{ 双均线金叉开多、死叉平多 }
MA5 := MA(CLOSE, 5);
MA20 := MA(CLOSE, 20);
BUY(CROSS(MA5, MA20), 1, MARKET); { 金叉开多 1 手,市价 }
SELL(CROSS(MA20, MA5), 0, MARKET); { 死叉全平多 }
二、委托类型
委托类型分「本周期」(当根 K 线成交)和「次周期」(下一根成交)两族:
| 本周期 | 次周期 | 含义 |
|---|---|---|
MARKETR | MARKET | 市价委托 |
LIMITR | LIMIT | 限价委托(需填价格参数) |
THISCLOSE | NEXTOPEN | 对价成交(当根收盘 / 次根开盘) |
STOPR | STOP | 触价止损(需填价格参数) |
回测中,本周期类型按当根 K 线收盘价撮合,次周期类型按下一根开盘价撮合。实盘行为与回测一致,选对类型能让回测更贴近真实。
三、后台交易下单函数
后台交易直接操作真实账户持仓,函数名加 T 前缀,委托类型用缩写:
| 函数 | 含义 |
|---|---|
TBUY(条件, 数量, 类型, [P1,P2,账号,代码]) | 后台开多 |
TSELL(条件, 数量, 类型, [P1,P2,账号,代码]) | 后台平多 |
TBUYSHORT(条件, 数量, 类型, [P1,P2,账号,代码]) | 后台开空 |
TSELLSHORT(条件, 数量, 类型, [P1,P2,账号,代码]) | 后台平空 |
后台类型:MKT(市价)、LMT(限价)、FAK、FOK、STP(止损)、DBEST(对手方最优)、WBEST(本方最优)。
{ 后台版双均线策略 }
TBUY(CROSS(MA5, MA20), 1, MKT);
TSELL(CROSS(MA20, MA5), 0, MKT);
后台函数还支持指定账号和品种代码,一个策略可以交易多个账户多个品种:
TBUY(条件, 1, MKT, 0, 0, '账号A', 'IF00'); { 指定账户和品种下单 }
四、持仓与状态查询
写策略经常要读当前持仓,决定下一步动作:
| 图表函数 | 后台函数 | 含义 |
|---|---|---|
HOLDING | THOLDING | 当前净持仓(正多负空) |
ENTERPRICE | TENTERPRICE | 上次开仓价 |
AVGENTERPRICE | TAVGENTERPRICE | 持仓均价 |
ENTERBARS | TENTERBARS(0) | 距上次开仓几根 |
OPENPROFIT | TOPENPROFIT | 浮动盈亏 |
| — | TBUYHOLDING(1) | 后台多头持仓(按手) |
| — | TSELLHOLDING(1) | 后台空头持仓(按手) |
{ 多头持仓时,跌破开仓价 2% 止损 }
IF HOLDING > 0 AND CLOSE < AVGENTERPRICE * 0.98 THEN
SELL(1, 0, MARKET);
五、常用修饰符与控制语句
下单函数后用逗号追加修饰符,控制交易行为:
| 修饰符 / 语句 | 含义 |
|---|---|
ALLOWREPEAT | 允许同周期重复下单 |
ORDERQUEUE | 排队下单,等上一单成交再发下一单 |
PERTRADER | 按可用资金 / 持仓比例下单 |
CLOSEPOSMODE:1 | 平仓时优先平老仓(股票 T+1) |
CLOSEPOSMODE:0 | 优先平今仓(期货 T+0) |
CLOSEPOSMODE:1; { 股票 T+1 模式,优先平老仓 }
ODDLOTSMODE:1; { 禁止零股,按手取整 }
可平 := HOLDING - DAYHOLDING;
SELL(平仓条件 AND 可平>0, 可平, MARKET);
小结
- 图表用
BUY/SELL/BUYSHORT/SELLSHORT,后台用加T的同名函数。 - 委托类型决定成交时机与价格,本周期族用于当根、次周期族用于下一根。
- 用
HOLDING/THOLDING读持仓、AVGENTERPRICE算均价做止损。 CLOSEPOSMODE区分期货 T+0 和股票 T+1 平仓顺序。
能把数据函数和下单函数拼成一个完整策略后,下一步学技术指标函数,丰富你的策略工具箱。