必备产物
ZIP 根目录需包含以下两个文件
strategy_manifest.yaml
策略清单,描述元信息与参数
libstrategy.so
由 strategy-sdk 产出的共享库,可被 runner 加载
strategy.zip ├── strategy_manifest.yaml └── libstrategy.so
strategy_manifest.yaml 模板
library 字段与 ZIP 中 .so 文件名需一致
name: script
abi_version: 1
library: libstrategy.so
parameters:
- name: atr_length
type: int
default: 14
alias_to_runtime: atr_period
- name: start
type: float
default: 0.02
alias_to_runtime: psar_start
builtins:
- name: rsi_period
type: int
default: 14- name: 策略名称(前端默认显示)
- abi_version: 与 runner/SDK 约定的 ABI 版本(整数)
- library: .so 文件名(需与实际文件一致)
- parameters / builtins: 可配置参数,导入后会合并展示
- abi_version: 与 runner/SDK 约定的 ABI 版本(整数)
- library: .so 文件名(需与实际文件一致)
- parameters / builtins: 可配置参数,导入后会合并展示
生成共享库 .so
Strategy SDK
选择任意支持 C ABI 的语言编译为 .so
C/C++(示例)
# 单文件 gcc -O3 -fPIC -shared -o libstrategy.so strategy.c # 多文件 gcc -O3 -fPIC -c strategy.c -o strategy.o gcc -shared -o libstrategy.so strategy.o other.o
Go(c-shared)
GOOS=linux GOARCH=amd64 go build -buildmode=c-shared -o libstrategy.so .
注意:启用 -fPIC;目标架构需与 Runner 一致(如 x86_64 Linux);避免运行时缺失依赖。
ABI 接口规范(建议)
若你的 SDK 已有既定 ABI,请以实际为准
int strategy_abi_version(void);
int strategy_create(void** handle);
int strategy_destroy(void* handle);
int strategy_configure(void* handle, const char* params_json);
typedef struct {
const char* ts; // RFC3339
double open, high, low, close, volume;
} strategy_bar_t;
typedef struct {
int action; // 0=none,1=long_entry,2=long_exit,3=short_entry,4=short_exit
double qty; // optional
double price; // optional
const char* note;// optional
} strategy_signal_t;
int strategy_on_bars(void* handle, const strategy_bar_t* bars, int n, strategy_signal_t* out_signal);
int strategy_on_bar(void* handle, const strategy_bar_t* bar, strategy_signal_t* out_signal);
int strategy_reset(void* handle);- strategy_abi_version 应与 manifest.abi_version 一致或兼容。
- strategy_configure 入参 JSON 为前端合并的 parameters + builtins。
- 返回值:0 成功;负数为错误码(如 -1/-2)。
- strategy_configure 入参 JSON 为前端合并的 parameters + builtins。
- 返回值:0 成功;负数为错误码(如 -1/-2)。
打包与上传
zip strategy.zip strategy_manifest.yaml libstrategy.so
- 上传后端将保存 .so 至本地目录(默认 ./data/algorithms,支持 ALGO_STORAGE_DIR),并计算 sha256 与大小。
- 前端保存策略时会一并提交 so_object/checksum/so_size/abi_version。
- 前端保存策略时会一并提交 so_object/checksum/so_size/abi_version。