Trading: components 161-180

This commit is contained in:
ZacharyZhang-NY committed 2026-10-05 14:28:19 -04:00
1 parent 6f0c02d339
commit 2c40e5a89a
105 files changed
+6042 -1

No files matched your search

+46
View File
@@ -0,0 +1,46 @@
# 161 TickerTape
行情滚动条。
## 用途
横向循环滚动的行情条,显示代码、价格与涨跌幅。指针悬停或键盘聚焦时暂停;减少动画时改为静态分页。
## 最小示例
```go
items := []mujica.TickerItem{{Symbol: "MUJC", Price: 412.08, ChangePercent: -1.35}, {Symbol: "AVE", Price: 88.2, ChangePercent: 2.1}}
view := func(c *ui.Context) {
mujica.Use(c, mujica.Settings{})
mujica.TickerTape(c, items, mujica.TickerTapeOptions{})
}
ui.Render(view, 400, 300, 1)
```
## 参数
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| `items` | `[]TickerItem` | 必填 | 代码、价格、涨跌幅(%)。 |
| `Decimals` | `int` | 2 | 价格小数位,0 表示 2,负数 panic。 |
| `Speed` | `float32` | 40 | 每秒滚动的 DIP。 |
| `PerPage` | `int` | 4 | 减少动画时每页条数。 |
| `Label` | `string` | 内置“Market ticker” | 无障碍名称。 |
## 状态
滚动、暂停(悬停或聚焦)、静态分页(减少动画)、空列表。
## 事件
无业务事件。
## 键盘操作
Tab 聚焦滚动条即暂停;减少动画时 ←/→ 翻页,也可用上一页、下一页按钮。
## 限制
- 滚动以四分之一 DIP 取整,暂停时停止请求重绘。
- 第二份副本用于无缝循环,屏幕阅读器可能读到重复内容。
- 涨跌颜色由 `UseTrend(c, GreenUp|RedUp)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
+43
View File
@@ -0,0 +1,43 @@
# 162 QuoteCard
报价卡片。
## 用途
显示代码、名称、现价、涨跌额与涨跌幅,并提供迷你图插槽。
## 最小示例
```go
quote := mujica.Quote{Symbol: "MUJC", Name: "Ave Mujica Holdings", Price: 412.08, Change: -5.62, ChangePercent: -1.35}
view := func(c *ui.Context) {
mujica.Use(c, mujica.Settings{})
mujica.QuoteCard(c, quote, mujica.QuoteCardOptions{})
}
ui.Render(view, 400, 300, 1)
```
## 参数
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| `q` | `Quote` | 必填 | Symbol 必填,空值 panic;Name、Price、Change、ChangePercent。 |
| `Decimals` | `int` | 2 | 价格与涨跌额小数位。 |
| `Chart` | `func()` | nil | 迷你图插槽,高 40 DIP,例如 Sparkline。 |
## 状态
默认;涨、跌、平三种方向。
## 事件
无。
## 键盘操作
卡片本身不获取焦点;插槽内控件自行处理键盘。
## 限制
- 不计算涨跌,数值由调用方提供。
- 涨跌颜色由 `UseTrend(c, GreenUp|RedUp)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
+46
View File
@@ -0,0 +1,46 @@
# 163 PriceText
价格文本。
## 用途
按固定小数位与千分位显示价格;可与参考价比较着色并加箭头;价格变化时闪烁一次。
## 最小示例
```go
view := func(c *ui.Context) {
mujica.Use(c, mujica.Settings{})
mujica.UseTrend(c, mujica.RedUp)
mujica.PriceText(c, 18234.5, mujica.PriceTextOptions{Compare: true, Reference: 18000})
}
ui.Render(view, 400, 300, 1)
```
## 参数
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| `value` | `float64` | 必填 | 价格。 |
| `Decimals` | `int` | 2 | 小数位,0 表示 2,负数 panic。 |
| `NoGrouping` | `bool` | false | 不显示千分位。 |
| `Compare / Reference` | `bool / float64` | false / 0 | 按相对 Reference 的方向着色并加箭头。 |
| `NoFlash` | `bool` | false | 变化时不闪烁。 |
| `Size` | `float32` | 正文字号 | 字号(DIP),随系统文字缩放。 |
## 状态
默认;上涨、下跌、持平;变化闪烁(360 ms 淡出)。
## 事件
无。
## 键盘操作
不获取焦点。
## 限制
- 闪烁由帧间比较值得出:同一元素的值改变才会闪烁。减少动画时不闪烁,结束后不再请求重绘。
- 涨跌颜色由 `UseTrend(c, GreenUp|RedUp)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
+42
View File
@@ -0,0 +1,42 @@
# 164 PriceChangeBadge
涨跌徽标。
## 用途
显示涨跌额与涨跌幅,带箭头、正负号与语义底色。
## 最小示例
```go
view := func(c *ui.Context) {
mujica.Use(c, mujica.Settings{})
mujica.PriceChangeBadge(c, -5.62, -1.35, mujica.PriceChangeBadgeOptions{})
}
ui.Render(view, 400, 300, 1)
```
## 参数
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| `change` | `float64` | 必填 | 涨跌额。 |
| `percent` | `float64` | 必填 | 涨跌幅(%),固定 2 位小数。 |
| `Decimals` | `int` | 2 | 涨跌额小数位。 |
| `HidePercent` | `bool` | false | 只显示涨跌额。 |
## 状态
上涨、下跌、持平。
## 事件
无。
## 键盘操作
不获取焦点;无障碍名称含方向词与数值。
## 限制
- 涨跌颜色由 `UseTrend(c, GreenUp|RedUp)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
+52
View File
@@ -0,0 +1,52 @@
# 165 OrderBook
盘口。
## 用途
按价格显示卖档(上)与买档(下),带累计深度条与价差;可按价格步长合并档位;点击档位回传价格。
## 最小示例
```go
var state mujica.OrderBookState
book := mujica.OrderBookData{
Bids: []mujica.BookLevel{{Price: 100.00, Size: 5}, {Price: 99.99, Size: 3}},
Asks: []mujica.BookLevel{{Price: 100.01, Size: 1}, {Price: 100.02, Size: 2}},
}
view := func(c *ui.Context) {
mujica.Use(c, mujica.Settings{})
if price, side, ok := mujica.OrderBook(c, &state, book, mujica.OrderBookOptions{Groups: []float64{0.01, 0.05}}).Clicked(); ok {
fmt.Println("order at", price, side)
}
}
ui.Render(view, 400, 300, 1)
```
## 参数
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| `s` | `*OrderBookState` | 必填 | Group 为合并步长,0 取 Groups 第一项;不在 Groups 中 panic。 |
| `book` | `OrderBookData` | 必填 | Bids、Asks 与 Version(原地修改时递增)。 |
| `Decimals / SizeDecimals` | `int` | 2 / 0 | 价格与数量小数位。 |
| `Depth` | `int` | 8 | 每侧档数。 |
| `Groups` | `[]float64` | nil | 可选合并步长,须为价格精度的整数倍,否则 panic。 |
| `Disabled` | `bool` | false | 禁用点击与合并选择。 |
## 状态
默认、悬停、聚焦、禁用;空盘口时只显示表头。
## 事件
`OrderBookResult.Clicked()` 返回被点击档位的价格与方向。
## 键盘操作
Tab 进入档位列表,↑/↓ 在档位间移动,Enter/Space 选中价格。
## 限制
- 合并以整数价格单位计算:买档向下取整、卖档向上取整。只在数据或步长变化时重新聚合。
- 涨跌颜色由 `UseTrend(c, GreenUp|RedUp)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
+46
View File
@@ -0,0 +1,46 @@
# 166 Level2Quotes
多档行情。
## 用途
并排显示买卖各 N 档的价格、数量与委托笔数;档位变化时高亮一次,并以箭头标出数量增减。
## 最小示例
```go
data := mujica.Level2Data{
Bids: []mujica.L2Level{{Price: 100.00, Size: 500, Orders: 12}},
Asks: []mujica.L2Level{{Price: 100.01, Size: 200, Orders: 3}},
}
view := func(c *ui.Context) {
mujica.Use(c, mujica.Settings{})
mujica.Level2Quotes(c, data, mujica.Level2QuotesOptions{})
}
ui.Render(view, 400, 300, 1)
```
## 参数
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| `data` | `Level2Data` | 必填 | Bids、Asks,最优价在前。 |
| `Decimals / SizeDecimals` | `int` | 2 / 0 | 价格与数量小数位。 |
| `Levels` | `int` | 5 | 每侧档数;不足的档位显示“—”。 |
## 状态
默认、档位变化高亮(减少动画时只显示箭头)、空档。
## 事件
无。
## 键盘操作
不获取焦点;每行有包含档位、价格、数量和笔数的无障碍名称。
## 限制
- 价格变化视为新档位,不标增减箭头。
- 涨跌颜色由 `UseTrend(c, GreenUp|RedUp)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
+48
View File
@@ -0,0 +1,48 @@
# 167 TimeAndSales
逐笔成交。
## 用途
逐笔成交列表,最新在上,只构建可见行;大单以菱形与粗体标记;可暂停跟随。
## 最小示例
```go
var state mujica.TimeAndSalesState
trades := []mujica.TradePrint{{ID: "1", Time: time.Now(), Price: 100.01, Size: 300, Side: mujica.SideBuy}}
view := func(c *ui.Context) {
mujica.Use(c, mujica.Settings{})
mujica.TimeAndSales(c, &state, trades, mujica.TimeAndSalesOptions{LargeSize: 1000})
}
ui.Render(view, 400, 300, 1)
```
## 参数
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| `s` | `*TimeAndSalesState` | 必填 | Paused 暂停跟随。 |
| `trades` | `[]TradePrint` | 必填 | 按时间先后追加;ID 唯一。 |
| `Decimals / SizeDecimals` | `int` | 2 / 0 | 价格与数量小数位。 |
| `LargeSize` | `float64` | 0 | 数量达到即标记为大单。 |
| `Height` | `float32` | 320 | 高度(DIP)。 |
| `Status / Error` | `DataStatus / string` | Ready | 加载、失败等状态。 |
## 状态
跟随、暂停(显示新成交数量)、加载、失败、空列表。
## 事件
`ChoiceResult.Changed()` 在暂停或继续时为 true。
## 键盘操作
Tab 到达暂停按钮(Enter/Space 切换)与列表;列表内 ↑/↓ 移动。
## 限制
- 基于 List 虚拟化,100,000 条成交只构建可见行。
- 暂停时冻结显示的条数,新成交不打断阅读。
- 涨跌颜色由 `UseTrend(c, GreenUp|RedUp)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
+50
View File
@@ -0,0 +1,50 @@
# 168 DepthLadder
价格阶梯。
## 用途
按最小变动价位排列的价格阶梯(DOM):买量、价格、卖量三列,最新价居中并加框;点击买量或卖量单元格回调下单。
## 最小示例
```go
var state mujica.DepthLadderState
book := mujica.OrderBookData{Bids: []mujica.BookLevel{{Price: 100, Size: 5}}, Asks: []mujica.BookLevel{{Price: 100.01, Size: 2}}}
view := func(c *ui.Context) {
mujica.Use(c, mujica.Settings{})
if price, side, ok := mujica.DepthLadder(c, &state, 100, book, mujica.DepthLadderOptions{TickSize: 0.01}).Clicked(); ok {
fmt.Println("place", side, "at", price)
}
}
ui.Render(view, 400, 300, 1)
```
## 参数
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| `s` | `*DepthLadderState` | 必填 | Offset 为相对最新价滚动的档数。 |
| `last` | `float64` | 必填 | 最新价。 |
| `book` | `OrderBookData` | 必填 | 盘口数据。 |
| `TickSize` | `float64` | 必填 | 最小变动价位,须为价格精度的整数倍,否则 panic。 |
| `Decimals / SizeDecimals` | `int` | 2 / 0 | 小数位。 |
| `Rows` | `int` | 15 | 显示的行数。 |
| `Disabled` | `bool` | false | 禁用。 |
## 状态
默认、悬停、聚焦、最新价行(底色、框线与菱形)、已滚动(显示回到最新价按钮)、禁用。
## 事件
`DepthLadderResult.Clicked()` 返回价格与方向(买量列为买入,卖量列为卖出)。
## 键盘操作
Tab 进入阶梯,方向键在单元格间移动,Enter/Space 下单;PageUp/PageDown 滚动半屏;滚轮逐档滚动。
## 限制
- 只构建可见行;按价位建立的数量索引只在数据变化时重建。
- 涨跌颜色由 `UseTrend(c, GreenUp|RedUp)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
+41
View File
@@ -0,0 +1,41 @@
# 169 SpreadIndicator
价差指示。
## 用途
显示卖一减买一的价差与占中间价的百分比;超过阈值或买卖倒挂时给出带图标的文字提示。
## 最小示例
```go
view := func(c *ui.Context) {
mujica.Use(c, mujica.Settings{})
mujica.SpreadIndicator(c, 99.95, 100.05, mujica.SpreadIndicatorOptions{WarnPercent: 0.5})
}
ui.Render(view, 400, 300, 1)
```
## 参数
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| `bid / ask` | `float64` | 必填 | 买一价与卖一价。 |
| `Decimals` | `int` | 2 | 价差小数位。 |
| `WarnPercent` | `float64` | 0 | 价差百分比达到即提示;0 不提示,负数 panic。 |
## 状态
正常、价差过大、倒挂。
## 事件
无。
## 键盘操作
不获取焦点;以状态角色读出。
## 限制
- 无。
+41
View File
@@ -0,0 +1,41 @@
# 170 BidAskBar
买卖力量条。
## 用途
以分段条对比买卖成交量,两端标出占比与数量。
## 最小示例
```go
view := func(c *ui.Context) {
mujica.Use(c, mujica.Settings{})
mujica.BidAskBar(c, 6234, 3820, mujica.BidAskBarOptions{})
}
ui.Render(view, 400, 300, 1)
```
## 参数
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| `bid / ask` | `float64` | 必填 | 买量与卖量,负数或 NaN panic。 |
| `Decimals` | `int` | 0 | 数量小数位。 |
| `Label` | `string` | 内置“Bid and ask volume” | 无障碍名称。 |
## 状态
默认;两者都为 0 时显示中性灰条与 50%。
## 事件
无。
## 键盘操作
不获取焦点;以计量角色读出买卖占比。
## 限制
- 涨跌颜色由 `UseTrend(c, GreenUp|RedUp)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
+52
View File
@@ -0,0 +1,52 @@
# 171 OrderEntry
下单面板。
## 用途
限价、市价、止损与条件限价单的录入:方向、类型、数量、价格、触发价与有效期;同步与调用方异步校验;预估金额;提交防重入。建立在 Form 之上。
## 最小示例
```go
var state mujica.OrderEntryState
view := func(c *ui.Context) {
mujica.Use(c, mujica.Settings{})
if order, ok := mujica.OrderEntry(c, &state, mujica.OrderEntryOptions{Symbol: "MUJC", Last: 100.2}).Submitted(); ok {
fmt.Println("place", order.Quantity)
state.EndSubmit("")
}
}
ui.Render(view, 400, 300, 1)
```
## 参数
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| `s` | `*OrderEntryState` | 必填 | Draft 为当前订单,Form 为表单状态。 |
| `Symbol` | `string` | 必填 | 代码,空值 panic。 |
| `Last` | `float64` | 0 | 最新价,用于市价预估和止损方向检查。 |
| `TickSize / LotSize` | `float64` | 0.01 / 1 | 价格与数量步长。 |
| `MaxQuantity` | `float64` | 0 | 数量上限,0 不限。 |
| `Initial` | `OrderDraft` | 买入限价 | 重置恢复的订单。 |
| `Validate` | `func(OrderDraft) string` | nil | 调用方同步规则。 |
| `Check` | `func(OrderDraft, uint64)` | nil | 异步检查(如可用资金),以 `s.Resolve(version, msg)` 回传;旧版本结果被丢弃。 |
| `Disabled` | `bool` | false | 禁用。 |
## 状态
默认、字段错误(失焦或提交后)、异步检查中、提交中(按钮加载)、表单错误、禁用。
## 事件
`OrderEntryResult.Submitted()` 返回通过全部校验的订单;处理完毕后调用 `s.EndSubmit(err)`。
## 键盘操作
Tab 依次经过方向、类型、各字段与按钮;数量与价格字段 ↑/↓ 按步长调整;提交失败聚焦第一个错误字段。
## 限制
- 止损单检查:买入触发价须高于最新价,卖出须低于。
- 数量字段的异步检查覆盖整张订单:任一字段变化都会让旧结果失效。
@@ -0,0 +1,47 @@
# 172 QuickTradeButtons
快速交易按钮。
## 用途
以预设数量一键市价买入或卖出;可配置在发送前就近确认。
## 最小示例
```go
quantity := 10.0
view := func(c *ui.Context) {
mujica.Use(c, mujica.Settings{})
if side, q, ok := mujica.QuickTradeButtons(c, &quantity, mujica.QuickTradeButtonsOptions{Symbol: "MUJC", Confirm: true}).Traded(); ok {
fmt.Println(side, q)
}
}
ui.Render(view, 400, 300, 1)
```
## 参数
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| `quantity` | `*float64` | 必填 | 当前数量,须为 Presets 之一,0 取第一项。 |
| `Symbol` | `string` | 必填 | 代码。 |
| `Presets` | `[]float64` | 1, 10, 100 | 数量预设。 |
| `Decimals` | `int` | 0 | 数量小数位。 |
| `Confirm` | `bool` | false | 发送前弹出确认,默认聚焦取消。 |
| `Disabled` | `bool` | false | 禁用。 |
## 状态
默认、悬停、按下、聚焦、确认中、禁用。
## 事件
`QuickTradeResult.Traded()` 返回方向与数量。
## 键盘操作
Tab 到达数量分段与买卖按钮;Enter/Space 触发;确认浮层中 Enter 默认取消,Escape 关闭。
## 限制
- 涨跌颜色由 `UseTrend(c, GreenUp|RedUp)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
+49
View File
@@ -0,0 +1,49 @@
# 173 PositionTable
持仓表。
## 用途
持仓列表:数量、成本、现价、市值、浮动盈亏与比例,每行提供平仓操作。基于 DataTable,以稳定行 ID 保存选择与排序。
## 最小示例
```go
var state mujica.DataTableState[string]
rows := []mujica.PositionRow{{ID: "p1", Symbol: "MUJC", Quantity: 100, AvgCost: 400, Price: 412.08}}
view := func(c *ui.Context) {
mujica.Use(c, mujica.Settings{})
if id, ok := mujica.PositionTable(c, &state, rows, mujica.PositionTableOptions{}).Acted(); ok {
fmt.Println("close", id)
}
}
ui.Render(view, 400, 300, 1)
```
## 参数
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| `s` | `*DataTableState[string]` | 必填 | 表格状态。 |
| `rows` | `[]PositionRow` | 必填 | ID 必须稳定。 |
| `Decimals` | `int` | 2 | 小数位。 |
| `Version` | `int` | 0 | 原地修改行时递增。 |
| `Status / Error` | `DataStatus / string` | Ready | 加载与失败状态。 |
| `Disabled` | `bool` | false | 禁用平仓。 |
## 状态
默认、排序、选中、加载、失败、空、禁用。
## 事件
`TableActionResult.Acted()` 返回要平仓的行 ID;`Table` 为 DataTable 事件。
## 键盘操作
沿用 DataTable 的键盘操作;Tab 到达各行的平仓按钮。
## 限制
- 只构建可见行。
- 涨跌颜色由 `UseTrend(c, GreenUp|RedUp)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
+48
View File
@@ -0,0 +1,48 @@
# 174 OrderTable
委托表。
## 用途
委托列表:方向、类型、价格、成交进度与状态,按状态筛选;进行中的委托提供撤单。基于 DataTable。
## 最小示例
```go
var state mujica.OrderTableState
rows := []mujica.OrderRow{{ID: "o1", Symbol: "MUJC", Side: mujica.SideBuy, Price: 99.5, Quantity: 100, Filled: 40, Status: mujica.OrderPartial}}
view := func(c *ui.Context) {
mujica.Use(c, mujica.Settings{})
if id, ok := mujica.OrderTable(c, &state, rows, mujica.OrderTableOptions{}).Acted(); ok {
fmt.Println("cancel", id)
}
}
ui.Render(view, 400, 300, 1)
```
## 参数
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| `s` | `*OrderTableState` | 必填 | Filter 为状态筛选,Table 为表格状态。 |
| `rows` | `[]OrderRow` | 必填 | Filled 不得超过 Quantity,否则 panic。 |
| `Decimals / QuantityDecimals` | `int` | 2 / 0 | 小数位。 |
| `Version` | `int` | 0 | 原地修改行时递增。 |
| `Status / Error` | `DataStatus / string` | Ready | 加载与失败状态。 |
| `Disabled` | `bool` | false | 禁用。 |
## 状态
全部、进行中、已成交、已关闭四种筛选;部分成交进度条;禁用。
## 事件
`TableActionResult.Acted()` 返回要撤销的委托 ID。
## 键盘操作
筛选分段用方向键切换;表格沿用 DataTable 键盘操作;Tab 到达撤单按钮。
## 限制
- 筛选只在数据或条件变化时执行。
@@ -0,0 +1,49 @@
# 175 TradeHistoryTable
成交记录表。
## 用途
成交记录:时间、代码、方向、价格、数量与手续费;按日期范围筛选;导出当前范围的记录交给调用方。
## 最小示例
```go
var state mujica.TradeHistoryTableState
rows := []mujica.FillRow{{ID: "f1", Time: time.Now(), Symbol: "MUJC", Side: mujica.SideBuy, Price: 400, Quantity: 10, Fee: 1.2}}
view := func(c *ui.Context) {
mujica.Use(c, mujica.Settings{})
if fills, ok := mujica.TradeHistoryTable(c, &state, rows, mujica.TradeHistoryTableOptions{}).Exported(); ok {
fmt.Println("export", len(fills))
}
}
ui.Render(view, 400, 300, 1)
```
## 参数
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| `s` | `*TradeHistoryTableState` | 必填 | Range 为日期范围,零值不筛选。 |
| `rows` | `[]FillRow` | 必填 | 成交记录。 |
| `Decimals / QuantityDecimals` | `int` | 2 / 0 | 小数位。 |
| `Version` | `int` | 0 | 原地修改行时递增。 |
| `Status / Error` | `DataStatus / string` | Ready | 加载与失败状态。 |
| `Disabled` | `bool` | false | 禁用。 |
## 状态
全部日期、指定范围、空范围、加载、失败、禁用。
## 事件
`TradeHistoryResult.Exported()` 返回导出请求时当前范围内的记录。
## 键盘操作
日期范围选择器与按钮按 Tab 顺序;表格沿用 DataTable 键盘操作。
## 限制
- 只回传数据,不生成文件:导出格式与写入由调用方负责。
- 日期按每条记录自身时区的日期比较。
+44
View File
@@ -0,0 +1,44 @@
# 176 PnLDisplay
盈亏显示。
## 用途
并列显示已实现、未实现与当日盈亏,带正负号、箭头与语义色;可切换隐私遮蔽。
## 最小示例
```go
hidden := false
view := func(c *ui.Context) {
mujica.Use(c, mujica.Settings{})
mujica.PnLDisplay(c, mujica.PnL{Realized: 1200.5, Unrealized: -340.2, Today: 88}, &hidden, mujica.PnLDisplayOptions{Currency: "$"})
}
ui.Render(view, 400, 300, 1)
```
## 参数
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| `pnl` | `PnL` | 必填 | Realized、Unrealized、Today。 |
| `hidden` | `*bool` | 必填 | 为 true 时以“••••”遮蔽。 |
| `Decimals` | `int` | 2 | 小数位。 |
| `Currency` | `string` | "" | 金额前缀,例如 "$"。 |
## 状态
正、负、零;已遮蔽。
## 事件
`ChoiceResult.Changed()` 在遮蔽切换时为 true。
## 键盘操作
Tab 到达遮蔽按钮,Enter/Space 切换。
## 限制
- 遮蔽时无障碍名称只读出“已隐藏”,不读出金额。
- 涨跌颜色由 `UseTrend(c, GreenUp|RedUp)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
+46
View File
@@ -0,0 +1,46 @@
# 177 LeverageSlider
杠杆滑块。
## 用途
在预设杠杆档位间选择草稿值,显示高风险与极高风险区间提示,按“确认”后才写入值。
## 最小示例
```go
leverage := 5.0
view := func(c *ui.Context) {
mujica.Use(c, mujica.Settings{})
if mujica.LeverageSlider(c, &leverage, mujica.LeverageSliderOptions{Warning: 10, Danger: 50}).Changed() {
fmt.Println("leverage", leverage)
}
}
ui.Render(view, 400, 300, 1)
```
## 参数
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| `value` | `*float64` | 必填 | 当前杠杆,须为 Levels 之一。 |
| `Levels` | `[]float64` | 1–100 八档 | 递增档位,至少两档。 |
| `Warning / Danger` | `float64` | 0 | 高风险与极高风险起点;Danger 须大于 Warning。 |
| `Label` | `string` | 内置“Leverage” | 名称。 |
| `Disabled` | `bool` | false | 禁用。 |
## 状态
默认、聚焦、拖动、高风险、极高风险、草稿未确认、禁用。
## 事件
`ChoiceResult.Changed()` 在确认写入时为 true。
## 键盘操作
Tab 聚焦滑块:←/↓ 与 →/↑ 逐档、Home/End 到两端;Tab 到达确认按钮。
## 限制
- 滑块命中区高 44 DIP;风险区间以色带、图标和文字共同表达。
+41
View File
@@ -0,0 +1,41 @@
# 178 MarginIndicator
保证金率指示。
## 用途
显示保证金率(维持保证金 / 权益)及其与警戒线、强平线的关系。
## 最小示例
```go
view := func(c *ui.Context) {
mujica.Use(c, mujica.Settings{})
mujica.MarginIndicator(c, 0.86, mujica.MarginIndicatorOptions{})
}
ui.Render(view, 400, 300, 1)
```
## 参数
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| `ratio` | `float64` | 必填 | 保证金率,0 以上。 |
| `Warning / Liquidation` | `float64` | 0.8 / 1 | 警戒与强平线;须 0 < Warning < Liquidation。 |
| `Label` | `string` | 内置“Margin ratio” | 名称。 |
## 状态
安全、追加保证金、强制平仓。
## 事件
无。
## 键盘操作
不获取焦点;以计量角色读出比率、状态与两条线。
## 限制
- 状态同时用图标、文字与颜色表达;两条线粗细不同,并在下方以文字标注。
+41
View File
@@ -0,0 +1,41 @@
# 179 RiskMeter
风险等级。
## 用途
分段刻度显示风险等级,当前段上方有菱形标记,并显示等级名称与说明。
## 最小示例
```go
view := func(c *ui.Context) {
mujica.Use(c, mujica.Settings{})
mujica.RiskMeter(c, 4, mujica.RiskMeterOptions{})
}
ui.Render(view, 400, 300, 1)
```
## 参数
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| `level` | `int` | 必填 | 从 1 开始,超出范围 panic。 |
| `Levels` | `[]RiskLevel` | 内置五级 | 各级名称与说明,至少两级。 |
| `Label` | `string` | 内置“Risk level” | 名称。 |
## 状态
各等级。
## 事件
无。
## 键盘操作
不获取焦点;以计量角色读出“第 n 级,共 N 级”和名称。
## 限制
- 颜色只辅助:位置标记与等级文字同时表达等级。
@@ -0,0 +1,52 @@
# 180 OrderConfirmDialog
下单确认对话框。
## 用途
以模态对话框展示下单摘要与风险提示,默认聚焦取消;可要求勾选确认后才能下单。
## 最小示例
```go
open := true
view := func(c *ui.Context) {
mujica.Use(c, mujica.Settings{})
r := mujica.OrderConfirmDialog(c, &open, mujica.OrderConfirmDialogOptions{
Lines: []mujica.OrderSummaryLine{{Label: "Symbol", Value: "MUJC"}, {Label: "Quantity", Value: "100"}},
Risk: "Leveraged products can lose more than the deposit.",
Acknowledge: "I understand the risk",
})
if r.Confirmed {
fmt.Println("send order")
}
}
ui.Render(view, 400, 300, 1)
```
## 参数
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| `open` | `*bool` | 必填 | 是否显示。 |
| `Lines` | `[]OrderSummaryLine` | 必填 | 摘要行,空值 panic。 |
| `Title` | `string` | 内置“Confirm order” | 标题。 |
| `Risk` | `string` | "" | 风险提示。 |
| `Acknowledge` | `string` | "" | 二次确认复选框文字;设置后须勾选才能下单。 |
| `ConfirmLabel` | `string` | 内置“Place order” | 确认按钮文字。 |
## 状态
打开、未勾选(下单按钮禁用)、已勾选。
## 事件
`AlertDialogResult.Confirmed` / `Canceled`;Escape 视为取消。
## 键盘操作
打开时焦点在取消上;Tab 在复选框与按钮间移动;Escape 取消。点击遮罩不关闭。
## 限制
- 每次打开都需重新勾选。