WIP components (as built)
This commit is contained in:
112 files changed
+3607
-1241
No files matched your search
@@ -0,0 +1,42 @@
|
||||
# 141 CandlestickChart
|
||||
|
||||
## 用途
|
||||
|
||||
K 线;涨跌色可配置(红涨或绿涨);缩放平移;万根级只绘可见区。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
at := time.Date(2026, 10, 5, 9, 0, 0, 0, time.UTC)
|
||||
candles := []mujica.Candle{
|
||||
{Time: at, Open: 100, High: 103, Low: 99, Close: 102, Volume: 1200},
|
||||
{Time: at.Add(time.Hour), Open: 102, High: 104, Low: 100, Close: 101, Volume: 1600},
|
||||
{Time: at.Add(2 * time.Hour), Open: 101, High: 105, Low: 100, Close: 104, Volume: 900},
|
||||
}
|
||||
var window mujica.MarketView
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.CandlestickChart(c, candles, &window, mujica.CandlestickOptions{Frame: mujica.ChartFrame{Label: "BTC", Height: 200}})
|
||||
}
|
||||
ui.Render(view, 640, 400, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`candles` 按时间递增;`MarketView.Count=0` 显示 120 根,`End=0` 跟随最新。`Frame.Height=0` 为 240 DIP。`Type` 控制形态,`Decimals=0` 为两位。涨跌配色通过 `UseTrend` 设置。
|
||||
|
||||
## 状态
|
||||
|
||||
图表通过 Frame 显示默认、加载、空数据、错误和重试;祖先 Disabled 阻止输入;浅深主题沿用窗口设置。
|
||||
|
||||
## 事件
|
||||
|
||||
ChartResult.Point 提供读数索引;Changed 表示读数变化;Retried 表示重试。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 聚焦图表;方向键移动数据读数并朗读;Home/End 到首尾;Escape 清除读数。行情主图通过 +/- 缩放、Shift+左右方向键平移。
|
||||
|
||||
## 限制
|
||||
|
||||
数据由调用方提供;更新数据时替换切片,缓存按切片身份失效。行情读取、交易及持久化由调用方负责。
|
||||
@@ -0,0 +1,42 @@
|
||||
# 142 OHLCChart
|
||||
|
||||
## 用途
|
||||
|
||||
美国线;与 K 线共用数据接口。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
at := time.Date(2026, 10, 5, 9, 0, 0, 0, time.UTC)
|
||||
candles := []mujica.Candle{
|
||||
{Time: at, Open: 100, High: 103, Low: 99, Close: 102, Volume: 1200},
|
||||
{Time: at.Add(time.Hour), Open: 102, High: 104, Low: 100, Close: 101, Volume: 1600},
|
||||
{Time: at.Add(2 * time.Hour), Open: 101, High: 105, Low: 100, Close: 104, Volume: 900},
|
||||
}
|
||||
var window mujica.MarketView
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.OHLCChart(c, candles, &window, mujica.CandlestickOptions{Frame: mujica.ChartFrame{Label: "BTC", Height: 200}})
|
||||
}
|
||||
ui.Render(view, 640, 400, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
与 CandlestickChart 共用 Candle、MarketView 和 CandlestickOptions;函数将 Type 设置为 ChartOHLC。
|
||||
|
||||
## 状态
|
||||
|
||||
图表通过 Frame 显示默认、加载、空数据、错误和重试;祖先 Disabled 阻止输入;浅深主题沿用窗口设置。
|
||||
|
||||
## 事件
|
||||
|
||||
ChartResult.Point 提供读数索引;Changed 表示读数变化;Retried 表示重试。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 聚焦图表;方向键移动数据读数并朗读;Home/End 到首尾;Escape 清除读数。行情主图通过 +/- 缩放、Shift+左右方向键平移。
|
||||
|
||||
## 限制
|
||||
|
||||
数据由调用方提供;更新数据时替换切片,缓存按切片身份失效。行情读取、交易及持久化由调用方负责。
|
||||
@@ -0,0 +1,43 @@
|
||||
# 143 HeikinAshiChart
|
||||
|
||||
## 用途
|
||||
|
||||
平均 K 线;由调用方 OHLC 计算;与原 K 线可切换。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
at := time.Date(2026, 10, 5, 9, 0, 0, 0, time.UTC)
|
||||
candles := []mujica.Candle{
|
||||
{Time: at, Open: 100, High: 103, Low: 99, Close: 102, Volume: 1200},
|
||||
{Time: at.Add(time.Hour), Open: 102, High: 104, Low: 100, Close: 101, Volume: 1600},
|
||||
{Time: at.Add(2 * time.Hour), Open: 101, High: 105, Low: 100, Close: 104, Volume: 900},
|
||||
}
|
||||
var window mujica.MarketView
|
||||
raw := false
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.HeikinAshiChart(c, candles, &window, &raw, mujica.CandlestickOptions{Frame: mujica.ChartFrame{Label: "BTC", Height: 200}})
|
||||
}
|
||||
ui.Render(view, 640, 400, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`raw=false` 显示 Heikin-Ashi;`raw=true` 显示原始数据。辅助函数 `HeikinAshi` 从调用方 OHLC 计算平滑序列。
|
||||
|
||||
## 状态
|
||||
|
||||
图表通过 Frame 显示默认、加载、空数据、错误和重试;祖先 Disabled 阻止输入;浅深主题沿用窗口设置。
|
||||
|
||||
## 事件
|
||||
|
||||
ChartResult.Point 提供读数索引;Changed 表示读数变化;Retried 表示重试。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 聚焦图表;方向键移动数据读数并朗读;Home/End 到首尾;Escape 清除读数。行情主图通过 +/- 缩放、Shift+左右方向键平移。
|
||||
|
||||
## 限制
|
||||
|
||||
数据由调用方提供;更新数据时替换切片,缓存按切片身份失效。行情读取、交易及持久化由调用方负责。
|
||||
@@ -0,0 +1,37 @@
|
||||
# 144 LineQuoteChart
|
||||
|
||||
## 用途
|
||||
|
||||
分时图;昨收基线;均价线;盘前盘后分段。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
at := time.Date(2026, 10, 5, 9, 0, 0, 0, time.UTC)
|
||||
points := []mujica.QuotePoint{{Time: at, Price: 101, Volume: 100}, {Time: at.Add(time.Hour), Price: 103, Volume: 200}}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.LineQuoteChart(c, points, mujica.LineQuoteChartOptions{Frame: mujica.ChartFrame{Label: "BTC", Height: 200}, PrevClose: 100, RegularOpen: at.Add(30 * time.Minute), RegularClose: at.Add(45 * time.Minute)})
|
||||
}
|
||||
ui.Render(view, 640, 400, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`PrevClose` 为必填正数;RegularOpen、RegularClose 成对提供,零值展示同一时段。均价使用 Price × Volume 累计。
|
||||
|
||||
## 状态
|
||||
|
||||
图表通过 Frame 显示默认、加载、空数据、错误和重试;祖先 Disabled 阻止输入;浅深主题沿用窗口设置。
|
||||
|
||||
## 事件
|
||||
|
||||
ChartResult.Point 提供读数索引;Changed 表示读数变化;Retried 表示重试。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 聚焦图表;方向键移动数据读数并朗读;Home/End 到首尾;Escape 清除读数。行情主图通过 +/- 缩放、Shift+左右方向键平移。
|
||||
|
||||
## 限制
|
||||
|
||||
数据由调用方提供;更新数据时替换切片,缓存按切片身份失效。行情读取、交易及持久化由调用方负责。
|
||||
@@ -0,0 +1,42 @@
|
||||
# 145 VolumeChart
|
||||
|
||||
## 用途
|
||||
|
||||
成交量柱;涨跌着色;与主图共享时间轴。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
at := time.Date(2026, 10, 5, 9, 0, 0, 0, time.UTC)
|
||||
candles := []mujica.Candle{
|
||||
{Time: at, Open: 100, High: 103, Low: 99, Close: 102, Volume: 1200},
|
||||
{Time: at.Add(time.Hour), Open: 102, High: 104, Low: 100, Close: 101, Volume: 1600},
|
||||
{Time: at.Add(2 * time.Hour), Open: 101, High: 105, Low: 100, Close: 104, Volume: 900},
|
||||
}
|
||||
var window mujica.MarketView
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.VolumeChart(c, candles, &window, mujica.VolumeChartOptions{Frame: mujica.ChartFrame{Label: "Volume"}})
|
||||
}
|
||||
ui.Render(view, 640, 400, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
传入与主图相同的 MarketView 共享时间窗口;Frame.Height 默认 120;Sync 与 SyncID 可关联光标。
|
||||
|
||||
## 状态
|
||||
|
||||
图表通过 Frame 显示默认、加载、空数据、错误和重试;祖先 Disabled 阻止输入;浅深主题沿用窗口设置。
|
||||
|
||||
## 事件
|
||||
|
||||
ChartResult.Point 提供读数索引;Changed 表示读数变化;Retried 表示重试。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 聚焦图表;方向键移动数据读数并朗读;Home/End 到首尾;Escape 清除读数。行情主图通过 +/- 缩放、Shift+左右方向键平移。
|
||||
|
||||
## 限制
|
||||
|
||||
数据由调用方提供;更新数据时替换切片,缓存按切片身份失效。行情读取、交易及持久化由调用方负责。
|
||||
@@ -0,0 +1,37 @@
|
||||
# 146 DepthChart
|
||||
|
||||
## 用途
|
||||
|
||||
买卖深度累计面积;中间价;悬停读数。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
bids := []mujica.DepthLevel{{Price: 99, Size: 10}, {Price: 98, Size: 20}}
|
||||
asks := []mujica.DepthLevel{{Price: 101, Size: 15}, {Price: 102, Size: 25}}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.DepthChart(c, bids, asks, mujica.DepthChartOptions{Frame: mujica.ChartFrame{Label: "BTC", Height: 200}})
|
||||
}
|
||||
ui.Render(view, 640, 400, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
买盘价格递减,卖盘递增,Size 为正数;最优买价小于最优卖价。Decimals 默认两位。
|
||||
|
||||
## 状态
|
||||
|
||||
图表通过 Frame 显示默认、加载、空数据、错误和重试;祖先 Disabled 阻止输入;浅深主题沿用窗口设置。
|
||||
|
||||
## 事件
|
||||
|
||||
ChartResult.Point 提供读数索引;Changed 表示读数变化;Retried 表示重试。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 聚焦图表;方向键移动数据读数并朗读;Home/End 到首尾;Escape 清除读数。行情主图通过 +/- 缩放、Shift+左右方向键平移。
|
||||
|
||||
## 限制
|
||||
|
||||
数据由调用方提供;更新数据时替换切片,缓存按切片身份失效。行情读取、交易及持久化由调用方负责。
|
||||
@@ -0,0 +1,36 @@
|
||||
# 147 VolumeProfile
|
||||
|
||||
## 用途
|
||||
|
||||
价格分布成交量;价值区与控制点。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
bins := []mujica.ProfileBin{{Low: 99, High: 100, Volume: 30}, {Low: 100, High: 101, Volume: 80}, {Low: 101, High: 102, Volume: 40}}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.VolumeProfile(c, bins, mujica.VolumeProfileOptions{Frame: mujica.ChartFrame{Label: "BTC", Height: 200}})
|
||||
}
|
||||
ui.Render(view, 640, 400, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
ProfileBin 按价格递增排列;Volume 非负。ValueArea 默认 0.7;VolumeProfileOf 可按 OHLC 区间生成分布。
|
||||
|
||||
## 状态
|
||||
|
||||
图表通过 Frame 显示默认、加载、空数据、错误和重试;祖先 Disabled 阻止输入;浅深主题沿用窗口设置。
|
||||
|
||||
## 事件
|
||||
|
||||
ChartResult.Point 提供读数索引;Changed 表示读数变化;Retried 表示重试。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 聚焦图表;方向键移动数据读数并朗读;Home/End 到首尾;Escape 清除读数。行情主图通过 +/- 缩放、Shift+左右方向键平移。
|
||||
|
||||
## 限制
|
||||
|
||||
数据由调用方提供;更新数据时替换切片,缓存按切片身份失效。行情读取、交易及持久化由调用方负责。
|
||||
@@ -0,0 +1,38 @@
|
||||
# 148 MultiChartLayout
|
||||
|
||||
## 用途
|
||||
|
||||
1、2、4、6 宫格多图;独立品种与周期;布局切换不丢状态。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
state := mujica.MultiChartState{Count: 2}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.MultiChartLayout(c, &state, mujica.MultiChartLayoutOptions{Height: 200}, func(i int, cell *mujica.ChartCell) {
|
||||
mujica.TextInput(c, &cell.Symbol, mujica.TextInputOptions{Label: "Symbol"})
|
||||
})
|
||||
}
|
||||
ui.Render(view, 640, 400, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
Count 支持 1、2、4、6,零值为 1;Cells 保存六个独立品种、周期与窗口;Active 指向可见单元。Height 默认 480。
|
||||
|
||||
## 状态
|
||||
|
||||
浅深主题沿用窗口设置;交互组件遵循祖先 Disabled;调用方持有选择及展开状态。
|
||||
|
||||
## 事件
|
||||
|
||||
ChoiceResult.Changed() 表示选择变化。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 进入布局组,方向键移动焦点,Space 切换;Tab 进入各图表独立操作。
|
||||
|
||||
## 限制
|
||||
|
||||
数据由调用方提供;更新数据时替换切片,缓存按切片身份失效。行情读取、交易及持久化由调用方负责。
|
||||
@@ -0,0 +1,44 @@
|
||||
# 149 ChartSync
|
||||
|
||||
## 用途
|
||||
|
||||
多图十字光标与时间范围同步;可逐图解除。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
at := time.Date(2026, 10, 5, 9, 0, 0, 0, time.UTC)
|
||||
candles := []mujica.Candle{
|
||||
{Time: at, Open: 100, High: 103, Low: 99, Close: 102, Volume: 1200},
|
||||
{Time: at.Add(time.Hour), Open: 102, High: 104, Low: 100, Close: 101, Volume: 1600},
|
||||
{Time: at.Add(2 * time.Hour), Open: 101, High: 105, Low: 100, Close: 104, Volume: 900},
|
||||
}
|
||||
var window mujica.MarketView
|
||||
var sync mujica.ChartSync
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
sync.Link(c, "price")
|
||||
mujica.CandlestickChart(c, candles, &window, mujica.CandlestickOptions{Frame: mujica.ChartFrame{Label: "BTC", Height: 200}, Sync: &sync, SyncID: "price"})
|
||||
}
|
||||
ui.Render(view, 640, 400, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
Count、Start、End 保存共享时间窗口;不同周期按时间边界映射;Cursor 保存时间光标;Unlinked 按稳定图表 ID 解联。通过 CandlestickOptions 或 VolumeChartOptions 的 Sync 接入。
|
||||
|
||||
## 状态
|
||||
|
||||
浅深主题沿用窗口设置;交互组件遵循祖先 Disabled;调用方持有选择及展开状态。
|
||||
|
||||
## 事件
|
||||
|
||||
ChoiceResult.Changed() 表示选择变化;ChartSync.Link 返回 ChoiceResult。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 聚焦 Link 开关,Space 切换关联;图表方向键移动同步光标。
|
||||
|
||||
## 限制
|
||||
|
||||
数据由调用方提供;更新数据时替换切片,缓存按切片身份失效。行情读取、交易及持久化由调用方负责。
|
||||
@@ -0,0 +1,36 @@
|
||||
# 150 TimeRangeSelector
|
||||
|
||||
## 用途
|
||||
|
||||
1D、5D、1M、3M、YTD、1Y、5Y、自定义;键盘导航。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
value := mujica.MarketRange{Preset: mujica.Range1M}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.TimeRangeSelector(c, &value, mujica.TimeRangeSelectorOptions{})
|
||||
}
|
||||
ui.Render(view, 640, 400, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
MarketRange.Preset 默认 Range1D;Custom 保存 DateRange。Today 零值跟随系统日期,Bounds 使用调用方时间和时区。
|
||||
|
||||
## 状态
|
||||
|
||||
浅深主题沿用窗口设置;交互组件遵循祖先 Disabled;调用方持有选择及展开状态。
|
||||
|
||||
## 事件
|
||||
|
||||
ChoiceResult.Changed() 表示选择变化。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 进入预设组,左右方向键移动焦点,Space 选择;自定义日期通过 DateRangePicker 键盘操作。
|
||||
|
||||
## 限制
|
||||
|
||||
数据由调用方提供;更新数据时替换切片,缓存按切片身份失效。行情读取、交易及持久化由调用方负责。
|
||||
@@ -0,0 +1,37 @@
|
||||
# 151 IntervalSelector
|
||||
|
||||
## 用途
|
||||
|
||||
1m 至 1M 周期;分组;收藏周期。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
value := mujica.Interval("1h")
|
||||
favorites := []mujica.Interval{"1m", "1h", "1D"}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.IntervalSelector(c, &value, &favorites, mujica.IntervalSelectorOptions{})
|
||||
}
|
||||
ui.Render(view, 640, 400, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
value 为 Intervals 中的周期;favorites 保存收藏列表;Disabled 禁用选择与收藏。
|
||||
|
||||
## 状态
|
||||
|
||||
浅深主题沿用窗口设置;交互组件遵循祖先 Disabled;调用方持有选择及展开状态。
|
||||
|
||||
## 事件
|
||||
|
||||
ChoiceResult.Changed() 表示选择变化。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 进入收藏组,方向键移动焦点,Space 选择;Tab 遍历弹层周期和收藏按钮,Enter 激活,Escape 关闭。
|
||||
|
||||
## 限制
|
||||
|
||||
数据由调用方提供;更新数据时替换切片,缓存按切片身份失效。行情读取、交易及持久化由调用方负责。
|
||||
@@ -0,0 +1,36 @@
|
||||
# 152 ChartTypeSwitcher
|
||||
|
||||
## 用途
|
||||
|
||||
K 线、美国线、折线、面积、平均 K 线切换。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
value := mujica.ChartCandles
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.ChartTypeSwitcher(c, &value, mujica.ChartTypeSwitcherOptions{})
|
||||
}
|
||||
ui.Render(view, 640, 400, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
ChartType 默认 ChartCandles;支持 ChartOHLC、ChartLine、ChartArea、ChartHeikinAshi;Disabled 禁用操作。
|
||||
|
||||
## 状态
|
||||
|
||||
浅深主题沿用窗口设置;交互组件遵循祖先 Disabled;调用方持有选择及展开状态。
|
||||
|
||||
## 事件
|
||||
|
||||
ChoiceResult.Changed() 表示选择变化。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 进入分组,左右方向键移动焦点,Space 选择。
|
||||
|
||||
## 限制
|
||||
|
||||
数据由调用方提供;更新数据时替换切片,缓存按切片身份失效。行情读取、交易及持久化由调用方负责。
|
||||
@@ -0,0 +1,43 @@
|
||||
# 153 IndicatorOverlay
|
||||
|
||||
## 用途
|
||||
|
||||
主图叠加 MA、EMA、BOLL、VWAP;参数可配;计算由调用方或内置辅助函数。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
at := time.Date(2026, 10, 5, 9, 0, 0, 0, time.UTC)
|
||||
candles := []mujica.Candle{
|
||||
{Time: at, Open: 100, High: 103, Low: 99, Close: 102, Volume: 1200},
|
||||
{Time: at.Add(time.Hour), Open: 102, High: 104, Low: 100, Close: 101, Volume: 1600},
|
||||
{Time: at.Add(2 * time.Hour), Open: 101, High: 105, Low: 100, Close: 104, Volume: 900},
|
||||
}
|
||||
var window mujica.MarketView
|
||||
overlays := []mujica.IndicatorOverlay{{Kind: mujica.IndicatorMA, Params: []float64{2}}}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.CandlestickChart(c, candles, &window, mujica.CandlestickOptions{Frame: mujica.ChartFrame{Label: "BTC", Height: 200}, Overlays: overlays})
|
||||
}
|
||||
ui.Render(view, 640, 400, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
Kind 支持 MA、EMA、BOLL、VWAP;Params 为 nil 使用默认参数;Values 可覆盖内置计算,长度等于 candles,NaN 表示缺测。
|
||||
|
||||
## 状态
|
||||
|
||||
图表通过 Frame 显示默认、加载、空数据、错误和重试;祖先 Disabled 阻止输入;浅深主题沿用窗口设置。
|
||||
|
||||
## 事件
|
||||
|
||||
ChartResult.Point 提供读数索引;Changed 表示读数变化;Retried 表示重试。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 聚焦图表;方向键移动数据读数并朗读;Home/End 到首尾;Escape 清除读数。行情主图通过 +/- 缩放、Shift+左右方向键平移。
|
||||
|
||||
## 限制
|
||||
|
||||
数据由调用方提供;更新数据时替换切片,缓存按切片身份失效。行情读取、交易及持久化由调用方负责。
|
||||
@@ -0,0 +1,43 @@
|
||||
# 154 IndicatorPane
|
||||
|
||||
## 用途
|
||||
|
||||
副图 MACD、RSI、KDJ、OBV;多副图堆叠与高度调整。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
at := time.Date(2026, 10, 5, 9, 0, 0, 0, time.UTC)
|
||||
candles := []mujica.Candle{
|
||||
{Time: at, Open: 100, High: 103, Low: 99, Close: 102, Volume: 1200},
|
||||
{Time: at.Add(time.Hour), Open: 102, High: 104, Low: 100, Close: 101, Volume: 1600},
|
||||
{Time: at.Add(2 * time.Hour), Open: 101, High: 105, Low: 100, Close: 104, Volume: 900},
|
||||
}
|
||||
var window mujica.MarketView
|
||||
panes := mujica.IndicatorPanes{Panes: []mujica.IndicatorPaneSpec{{Kind: mujica.IndicatorRSI, Params: []float64{2}}}}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.IndicatorPane(c, candles, &window, &panes, mujica.IndicatorPaneOptions{Height: 200, Label: "BTC"})
|
||||
}
|
||||
ui.Render(view, 640, 400, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
Panes 为 MACD、RSI、KDJ、OBV 配置;Sizes 保存高度比例;Height 默认每副图 140 DIP,最小高度覆盖标题、图例、读数和 40 DIP 绘图区;Label 为无障碍名称前缀;Status、Error、Empty 设置等尺寸占位。
|
||||
|
||||
## 状态
|
||||
|
||||
浅深主题沿用窗口设置;交互组件遵循祖先 Disabled;调用方持有选择及展开状态。
|
||||
|
||||
## 事件
|
||||
|
||||
IndicatorPaneResult.Removed 为移除索引,默认 -1;Resized 表示高度调整完成;Point、Pane 为活跃读数和副图索引,PointChanged 表示读数变化。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 聚焦图表;方向键移动数据读数并朗读;Home/End 到首尾;Escape 清除读数。主图与副图通过 +/- 缩放、Shift+左右方向键平移。
|
||||
|
||||
## 限制
|
||||
|
||||
数据由调用方提供;更新数据时替换切片,缓存按切片身份失效。行情读取、交易及持久化由调用方负责。
|
||||
@@ -0,0 +1,37 @@
|
||||
# 155 IndicatorSelector
|
||||
|
||||
## 用途
|
||||
|
||||
指标搜索、添加、移除、参数编辑。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
var overlays []mujica.IndicatorOverlay
|
||||
var panes mujica.IndicatorPanes
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.IndicatorSelector(c, &overlays, &panes, mujica.IndicatorSelectorOptions{})
|
||||
}
|
||||
ui.Render(view, 640, 400, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
overlays 与 panes 均由调用方持有;添加默认参数,可搜索、移除和编辑。Disabled 关闭面板并阻止编辑。
|
||||
|
||||
## 状态
|
||||
|
||||
浅深主题沿用窗口设置;交互组件遵循祖先 Disabled;调用方持有选择及展开状态。
|
||||
|
||||
## 事件
|
||||
|
||||
ChoiceResult.Changed() 表示选择变化。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 聚焦按钮,Enter 打开;Tab 到搜索和参数字段;方向键步进参数;Escape 关闭。
|
||||
|
||||
## 限制
|
||||
|
||||
数据由调用方提供;更新数据时替换切片,缓存按切片身份失效。行情读取、交易及持久化由调用方负责。
|
||||
@@ -0,0 +1,43 @@
|
||||
# 156 DrawingTools
|
||||
|
||||
## 用途
|
||||
|
||||
趋势线、水平线、斐波那契、矩形、文字标注;选中、移动、删除、撤销。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
at := time.Date(2026, 10, 5, 9, 0, 0, 0, time.UTC)
|
||||
candles := []mujica.Candle{
|
||||
{Time: at, Open: 100, High: 103, Low: 99, Close: 102, Volume: 1200},
|
||||
{Time: at.Add(time.Hour), Open: 102, High: 104, Low: 100, Close: 101, Volume: 1600},
|
||||
{Time: at.Add(2 * time.Hour), Open: 101, High: 105, Low: 100, Close: 104, Volume: 900},
|
||||
}
|
||||
var window mujica.MarketView
|
||||
drawings := mujica.DrawingTools{Tool: mujica.ToolTrendLine}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.CandlestickChart(c, candles, &window, mujica.CandlestickOptions{Frame: mujica.ChartFrame{Label: "BTC", Height: 200}, Drawings: &drawings})
|
||||
}
|
||||
ui.Render(view, 640, 400, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
Items 保存时间和价格锚点;Tool 默认选择工具;Text 为文字标注内容;Locked 阻止编辑;Selected、Delete、Undo、Clear 管理画线。
|
||||
|
||||
## 状态
|
||||
|
||||
图表通过 Frame 显示默认、加载、空数据、错误和重试;祖先 Disabled 阻止输入;浅深主题沿用窗口设置。
|
||||
|
||||
## 事件
|
||||
|
||||
ChartResult.Point 提供读数索引;Changed 表示读数变化;Retried 表示重试。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
聚焦图表后方向键移动读数;Enter 在当前读数放置锚点,双点工具按两次 Enter;Alt+Enter 循环选择画线;点击放置锚点;Alt+方向键移动选中画线;Delete/Backspace 删除;Command/Ctrl+Z 撤销;Escape 取消。
|
||||
|
||||
## 限制
|
||||
|
||||
数据由调用方提供;更新数据时替换切片,缓存按切片身份失效。行情读取、交易及持久化由调用方负责。 图形锚点使用已有 Candle 时间。
|
||||
@@ -0,0 +1,36 @@
|
||||
# 157 DrawingToolbar
|
||||
|
||||
## 用途
|
||||
|
||||
画线工具栏;当前工具;锁定与清除;键盘快捷键提示。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
var drawings mujica.DrawingTools
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.DrawingToolbar(c, &drawings, mujica.DrawingToolbarOptions{Horizontal: true})
|
||||
}
|
||||
ui.Render(view, 640, 400, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
传入 DrawingTools;Horizontal=true 横向,默认纵向;工具名称附快捷键提示。
|
||||
|
||||
## 状态
|
||||
|
||||
浅深主题沿用窗口设置;交互组件遵循祖先 Disabled;调用方持有选择及展开状态。
|
||||
|
||||
## 事件
|
||||
|
||||
ChoiceResult.Changed() 表示选择变化。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 进入工具栏;方向键移动焦点,Enter 激活;Alt+1 至 Alt+6 选择工具。
|
||||
|
||||
## 限制
|
||||
|
||||
数据由调用方提供;更新数据时替换切片,缓存按切片身份失效。行情读取、交易及持久化由调用方负责。
|
||||
@@ -0,0 +1,44 @@
|
||||
# 158 CompareSymbol
|
||||
|
||||
## 用途
|
||||
|
||||
叠加对比品种;百分比归一;序列颜色与移除。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
at := time.Date(2026, 10, 5, 9, 0, 0, 0, time.UTC)
|
||||
candles := []mujica.Candle{
|
||||
{Time: at, Open: 100, High: 103, Low: 99, Close: 102, Volume: 1200},
|
||||
{Time: at.Add(time.Hour), Open: 102, High: 104, Low: 100, Close: 101, Volume: 1600},
|
||||
{Time: at.Add(2 * time.Hour), Open: 101, High: 105, Low: 100, Close: 104, Volume: 900},
|
||||
}
|
||||
var window mujica.MarketView
|
||||
symbols := []mujica.CompareSymbol{{Name: "ETH", Closes: []float64{20, 21, 23}}}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.CompareLegend(c, &symbols)
|
||||
mujica.CandlestickChart(c, candles, &window, mujica.CandlestickOptions{Frame: mujica.ChartFrame{Label: "BTC", Height: 200}, Compare: &symbols})
|
||||
}
|
||||
ui.Render(view, 640, 400, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
Name 为稳定品种名称;Closes 与主图逐根对齐,正数或 NaN;CompareLegend 提供形状图例和移除。
|
||||
|
||||
## 状态
|
||||
|
||||
图表通过 Frame 显示默认、加载、空数据、错误和重试;祖先 Disabled 阻止输入;浅深主题沿用窗口设置。
|
||||
|
||||
## 事件
|
||||
|
||||
ChartResult.Point 提供读数索引;Changed 表示读数变化;Retried 表示重试。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 聚焦图表;方向键移动数据读数并朗读;Home/End 到首尾;Escape 清除读数。行情主图通过 +/- 缩放、Shift+左右方向键平移。
|
||||
|
||||
## 限制
|
||||
|
||||
数据由调用方提供;更新数据时替换切片,缓存按切片身份失效。行情读取、交易及持久化由调用方负责。
|
||||
@@ -0,0 +1,47 @@
|
||||
# 159 PriceAlertLine
|
||||
|
||||
## 用途
|
||||
|
||||
价格预警线;拖动调整;触发回调;不自行通知。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
at := time.Date(2026, 10, 5, 9, 0, 0, 0, time.UTC)
|
||||
candles := []mujica.Candle{
|
||||
{Time: at, Open: 100, High: 103, Low: 99, Close: 102, Volume: 1200},
|
||||
{Time: at.Add(time.Hour), Open: 102, High: 104, Low: 100, Close: 101, Volume: 1600},
|
||||
{Time: at.Add(2 * time.Hour), Open: 101, High: 105, Low: 100, Close: 104, Volume: 900},
|
||||
}
|
||||
var window mujica.MarketView
|
||||
alerts := []mujica.PriceAlertLine{{ID: "take-profit", Price: 105}}
|
||||
triggered := ""
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.CandlestickChart(c, candles, &window, mujica.CandlestickOptions{Frame: mujica.ChartFrame{Label: "BTC", Height: 200}, Alerts: &alerts, OnAlert: func(alert mujica.PriceAlertLine, last mujica.Candle) {
|
||||
triggered = alert.ID
|
||||
}})
|
||||
ui.Text(c, triggered)
|
||||
}
|
||||
ui.Render(view, 640, 400, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
ID 为唯一非空字符串;Price 为有限价格;Label 可选。CandlestickOptions.Alerts 接入主图;OnAlert 接收预警和最新 Candle。
|
||||
|
||||
## 状态
|
||||
|
||||
图表通过 Frame 显示默认、加载、空数据、错误和重试;祖先 Disabled 阻止输入;浅深主题沿用窗口设置。
|
||||
|
||||
## 事件
|
||||
|
||||
ChartResult.Point 提供读数索引;Changed 表示读数变化;Retried 表示重试。 OnAlert 在最新收盘价格跨线时触发一次;拖动直接更新 Alerts。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
聚焦图表后方向键查看价格;PageUp/PageDown 选择预警线;Alt+上下方向键按价格精度步进;拖动预警线调整价格。
|
||||
|
||||
## 限制
|
||||
|
||||
数据由调用方提供;更新数据时替换切片,缓存按切片身份失效。行情读取、交易及持久化由调用方负责。 百分比对比模式展示归一后的品种曲线,预警使用价格模式。
|
||||
@@ -0,0 +1,35 @@
|
||||
# 160 CandleCountdown
|
||||
|
||||
## 用途
|
||||
|
||||
当前 K 线收盘倒计时;随周期变化;隐藏时停止计时重绘。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.CandleCountdown(c, "1h", mujica.CandleCountdownOptions{Location: time.UTC})
|
||||
}
|
||||
ui.Render(view, 640, 400, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
interval 为 Intervals 中的周期;Location 默认 UTC;Now 零值读取帧时钟,指定值冻结时间。
|
||||
|
||||
## 状态
|
||||
|
||||
随周期和时间更新;指定 Now 显示冻结读数;移出可见区域停止安排计时帧。
|
||||
|
||||
## 事件
|
||||
|
||||
返回 Element;时间由帧时钟或调用方指定。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
展示型组件;周期由调用方选择控件调整。
|
||||
|
||||
## 限制
|
||||
|
||||
数据由调用方提供;更新数据时替换切片,缓存按切片身份失效。行情读取、交易及持久化由调用方负责。
|
||||
Reference in new issue
Block a user