两种开发方式
在 TBQuant 里「写代码」有两个入口:公式应用和策略。两者语法同源(都是 TB 语言), 但用途、结构、能否下单完全不同。先认清自己要哪种,少走弯路。
一句话区分
- 公式应用:用来写指标、画线、做技术分析,不能下单,类似通达信的技术指标公式。
- 策略:事件驱动,能调用
Buy/Sell等交易函数自动下单、做回测、跑实盘——程序化交易的主战场。
公式应用(技术分析)
公式应用直接加载到图表上,通过语句控制输出数据和线型,帮你直观分析行情。
结构上偏「公式段」风格,核心是计算 + 输出(用 PlotNumeric 等画线),没有交易动作:
// 双均线指标(公式应用)
Vars
Numeric maFast;
Numeric maSlow;
Events
OnBar(ArrayRef<Integer> indexs)
{
maFast = AverageFC(Close, 5);
maSlow = AverageFC(Close, 20);
PlotNumeric("MAFast", maFast); // 画快线
PlotNumeric("MASlow", maSlow); // 画慢线
}
PlotNumeric把数值画到图表上,类似通达信的:输出。- 公式应用分两类:技术分析类(画线/输出,如上)和交易策略类(在图上标买卖点)。
- 公式应用不能独立下单,但可以在图表上做信号标注,辅助你手动决策。
策略(事件驱动交易)
策略是 TBQuant 的核心。用 Params / Vars / Events 三段式组织代码,在事件回调里写逻辑,能真正下单:
// 双均线策略(事件驱动,可下单)
Params
Numeric FastLen(5);
Numeric SlowLen(20);
Vars
Numeric maFast;
Numeric maSlow;
Events
OnBar(ArrayRef<Integer> indexs)
{
maFast = AverageFC(Close, FastLen);
maSlow = AverageFC(Close, SlowLen);
If (MarketPosition != 1 && CrossOver(maFast, maSlow))
Buy(1, Open); // 真实下单:金叉买开
If (MarketPosition == 1 && CrossUnder(maFast, maSlow))
Sell(0, Open); // 真实下单:死叉卖平
}
Buy / Sell / SellShort / BuyToCover是真正的交易动作,回测时模拟成交,实盘时发真实委托。- 策略既能加载到图表看信号,也能在「策略交易」工作区里实盘运行。
两者对比
| 维度 | 公式应用 | 策略 |
|---|---|---|
| 目的 | 画指标、技术分析 | 自动交易、回测、实盘 |
| 能否下单 | 不能 | 能 |
| 代码结构 | 计算段 + 输出段 | Params / Vars / Events 三段式 |
| 触发 | 每根 K 线重算 | 事件回调(OnBar 等) |
| 加载位置 | 图表 | 图表(看信号)/ 策略交易(实盘) |
| 还有一种 | 简语言策略(麦语言写法) | — |
此外还有用户函数:被公式应用或策略调用的「子程序」,返回一个值,不能单独加载到图表。 相当于你把常用计算封装成函数复用。
怎么选
- 只想画个自定义指标辅助看盘 → 公式应用。
- 想让程序自动买卖、跑回测、上实盘 → 策略(本手册后续章节都以策略为主线)。
- 习惯麦语言(文华/通达信)写法 → 可以试简语言策略,用麦语言语法在 TBQuant 里跑。
即使用简语言,底层仍是事件驱动;理解事件模型依然必要。
新建一个策略
菜单 策略 → 公式编辑器,工具栏点「新建策略」,填简称(唯一标识,字母数字下划线,不能数字开头)、名称、模板、分组、注释,确定后进入代码编辑器。
系统自带 DualMA(双均线)等示例策略,建议先打开读一遍。
小结
公式应用 = 画线分析、不下单;策略 = 事件驱动、能交易。本手册后续都聚焦策略开发。
下一步
策略的核心是事件驱动,下一章帮你建立「事件回调」的思维方式: 事件驱动模型入门。