Merge branch 'worktree-agent-a3c9c595e531146d2'
This commit is contained in:
105 files changed
+6042
-1
No files matched your search
@@ -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)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
|
||||
@@ -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)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
|
||||
@@ -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)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
|
||||
@@ -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)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
|
||||
@@ -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)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
|
||||
@@ -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)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
|
||||
@@ -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)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
|
||||
@@ -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)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
|
||||
@@ -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。 |
|
||||
|
||||
## 状态
|
||||
|
||||
正常、价差过大、倒挂。
|
||||
|
||||
## 事件
|
||||
|
||||
无。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
不获取焦点;以状态角色读出。
|
||||
|
||||
## 限制
|
||||
|
||||
- 无。
|
||||
@@ -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)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
|
||||
@@ -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)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
|
||||
@@ -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)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
|
||||
@@ -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 键盘操作。
|
||||
|
||||
## 限制
|
||||
|
||||
- 只回传数据,不生成文件:导出格式与写入由调用方负责。
|
||||
- 日期按每条记录自身时区的日期比较。
|
||||
@@ -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)` 按窗口设置,默认绿涨红跌;方向同时用箭头与正负号表达,不只靠颜色。
|
||||
@@ -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;风险区间以色带、图标和文字共同表达。
|
||||
@@ -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” | 名称。 |
|
||||
|
||||
## 状态
|
||||
|
||||
安全、追加保证金、强制平仓。
|
||||
|
||||
## 事件
|
||||
|
||||
无。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
不获取焦点;以计量角色读出比率、状态与两条线。
|
||||
|
||||
## 限制
|
||||
|
||||
- 状态同时用图标、文字与颜色表达;两条线粗细不同,并在下方以文字标注。
|
||||
@@ -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 取消。点击遮罩不关闭。
|
||||
|
||||
## 限制
|
||||
|
||||
- 每次打开都需重新勾选。
|
||||
Reference in new issue
Block a user