交易控制函数

金字塔的程序化交易有两套引擎,对应两套下单函数:图表交易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 线成交)和「次周期」(下一根成交)两族:

本周期次周期含义
MARKETRMARKET市价委托
LIMITRLIMIT限价委托(需填价格参数)
THISCLOSENEXTOPEN对价成交(当根收盘 / 次根开盘)
STOPRSTOP触价止损(需填价格参数)

回测中,本周期类型按当根 K 线收盘价撮合,次周期类型按下一根开盘价撮合。实盘行为与回测一致,选对类型能让回测更贴近真实。

三、后台交易下单函数

后台交易直接操作真实账户持仓,函数名加 T 前缀,委托类型用缩写:

函数含义
TBUY(条件, 数量, 类型, [P1,P2,账号,代码])后台开多
TSELL(条件, 数量, 类型, [P1,P2,账号,代码])后台平多
TBUYSHORT(条件, 数量, 类型, [P1,P2,账号,代码])后台开空
TSELLSHORT(条件, 数量, 类型, [P1,P2,账号,代码])后台平空

后台类型:MKT(市价)、LMT(限价)、FAKFOKSTP(止损)、DBEST(对手方最优)、WBEST(本方最优)。

{ 后台版双均线策略 }
TBUY(CROSS(MA5, MA20), 1, MKT);
TSELL(CROSS(MA20, MA5), 0, MKT);

后台函数还支持指定账号品种代码,一个策略可以交易多个账户多个品种:

TBUY(条件, 1, MKT, 0, 0, '账号A', 'IF00');   { 指定账户和品种下单 }

四、持仓与状态查询

写策略经常要读当前持仓,决定下一步动作:

图表函数后台函数含义
HOLDINGTHOLDING当前净持仓(正多负空)
ENTERPRICETENTERPRICE上次开仓价
AVGENTERPRICETAVGENTERPRICE持仓均价
ENTERBARSTENTERBARS(0)距上次开仓几根
OPENPROFITTOPENPROFIT浮动盈亏
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 平仓顺序。

能把数据函数和下单函数拼成一个完整策略后,下一步学技术指标函数,丰富你的策略工具箱。