输入

使用 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.*() 调用以:

  1. 提取元数据 — 标题、类型、默认值、约束(最小值/最大值/步长/选项)
  2. 生成 UI 控件 — 在指标设置面板中渲染适当的表单控件
  3. 传递运行时值 — 当用户更改参数时,指标会使用更新后的值重新运行

输入参数会从你的代码中静态提取。为获得最佳效果,请将 input.*() 调用保留在脚本顶层——避免将其放入条件分支或循环中。