输入
使用 input 命名空间定义可配置的指标参数
input 命名空间让你可以定义用户可以在 UI 中配置的参数,而无需编辑代码。TradingGoose 会根据你的 input.*() 调用自动生成设置面板。
输入类型
| 函数 | 返回 | 描述 |
|---|---|---|
input.int(defval, title, minval?, maxval?, step?) | number | 整数输入,可选范围和步长 |
input.float(defval, title, minval?, maxval?, step?) | number | 浮点数输入 |
input.bool(defval, title) | boolean | 开关/复选框 |
input.string(defval, title) | string | 文本输入 |
input.color(defval, title) | string | 颜色选择器(十六进制字符串) |
input.source(defval, title) | series | 数据源选择器(收盘价、开盘价、最高价、最低价等) |
input.timeframe(defval, title) | string | 时间周期选择器 |
input.price(defval, title) | number | 价格水平输入 |
input.time(defval, title) | number | 时间戳输入 |
input.session(defval, title) | string | 交易时段输入 |
input.symbol(defval, title) | string | 交易代码输入 |
input.text_area(defval, title) | string | 多行文本输入 |
input.enum(defval, title, options) | T | 从选项列表中选择的下拉选择器 |
示例
数值输入
// Integer with range constraints
const length = input.int(14, 'RSI Length', 1, 200, 1);
// Float with step
const multiplier = input.float(2.0, 'StdDev Multiplier', 0.1, 10.0, 0.1);布尔值和字符串
const showSignals = input.bool(true, 'Show Signals');
const customLabel = input.string('Buy', 'Signal Label');数据源选择
// Let users choose which price data to calculate on
const src = input.source(close, 'Source');
const sma = ta.sma(src, 20);枚举(下拉菜单)
const maType = input.enum('SMA', 'MA Type', ['SMA', 'EMA', 'WMA', 'HMA']);
let ma;
switch (maType) {
case 'EMA': ma = ta.ema(close, length); break;
case 'WMA': ma = ta.wma(close, length); break;
case 'HMA': ma = ta.hma(close, length); break;
default: ma = ta.sma(close, length);
}颜色输入
const bullColor = input.color('#00FF00', 'Bull Color');
const bearColor = input.color('#FF0000', 'Bear Color');
plot(close, 'Close', { color: close > open ? bullColor : bearColor });输入如何工作
当 TradingGoose 加载你的指标时,它会解析所有 input.*() 调用以:
- 提取元数据 — 标题、类型、默认值、约束(最小值/最大值/步长/选项)
- 生成 UI 控件 — 在指标设置面板中渲染适当的表单控件
- 传递运行时值 — 当用户更改参数时,指标会使用更新后的值重新运行
输入参数会从你的代码中静态提取。为获得最佳效果,请将 input.*() 调用保留在脚本顶层——避免将其放入条件分支或循环中。