#indicator #udf #time-series #kapacitor #influxdata #sockets #unix-socket

bin+lib kapacitor-multi-indicator-batch-udf

Kapacitor 多指标批量 UDF

2 个版本

新版本 0.1.1 2024 年 8 月 15 日
0.1.0 2024 年 8 月 15 日

#482 in 异步

Download history 161/week @ 2024-08-10

每月 161 次下载

MIT 许可证

34KB
648

Kapacitor 多指标批量 UDF

概述

此项目实现了一个用于 Kapacitor 的用户自定义函数 (UDF),提供了多个金融指标的批量处理功能。目前,它支持指数移动平均 (EMA) 和简单移动平均 (SMA) 计算,并且可以轻松扩展以支持其他指标。

功能

  • 时间序列数据的批量处理
  • 支持多个指标(EMA 和 SMA)
  • 与 Kapacitor 使用 Unix 套接字通信
  • 使用 async-std 进行异步处理
  • 每个指标的可配置选项

要求

  • Rust 1.70 或更高版本
  • Kapacitor 1.6 或更高版本

安装

  1. 克隆仓库

    git clone https://github.com/suitable-name/kapacitor-udf-indicator-batch-rs
    cd kapacitor-multi-indicator-udf
    
  2. 构建/安装项目

    cargo build --release
    

    sudo cargo install --path . --root /usr/local
    

用法

  1. 启动 UDF 服务器

    ./target/release/kapacitor-multi-indicator-udf
    

    默认情况下,服务器监听 /tmp/indicator-batch.sock。您可以使用 -s--socket 选项指定不同的套接字路径

    ./target/release/kapacitor-multi-indicator-udf -s /path/to/custom/socket.sock
    
  2. 配置 Kapacitor 以使用此 UDF。将以下内容添加到您的 Kapacitor 配置文件中

    [udfs]
      [udfs.functions]
        [udfs.functions.indicator]
          socket = "/tmp/kapacitor-multi-indicator-udf"
          timeout = "10s"
    
  3. 在您的 TICKscripts 中使用 UDF

     batch
         |query('''
             SELECT "EUR"
             FROM "stocks"."autogen"."ticker_data"
         ''')
             .period(1d)
             // Process one day's worth of data
             .every(1d)
             // Run the batch every day
             .offset(0s)
             // Start from the earliest data available
             .groupBy('ticker')
         @indicators()
             .type('EMA')
             .field('last_price')
             .as('last_price_ema')
             .period(14)
             .ticker_field('ticker')
         |influxDBOut()
             .database('stocks')
             .retentionPolicy('autogen')
             .measurement('Stocks_EMA_batch')
             .tag('kapacitor', 'true')
    

配置选项

  • type:要计算的指标类型(EMASMA
  • period:指标计算周期
  • field:用于计算的数据中的字段名称
  • as:用于输出中计算指标值的字段名称
  • ticker_field:包含数据点的交易或符号的字段名称

开发

以调试日志运行

RUST_LOG=debug ./target/release/kapacitor-multi-indicator-udf

贡献

欢迎贡献!请随意提交拉取请求。

许可证

本项目采用MIT许可证 - 详细信息请参阅LICENSE文件。

依赖项

~14–27MB
~389K SLoC