wasm_plugin_sdk 参考

Rust WASM 扩展使用 C-ABI 导出,仅支持 i32 参数与返回值。价格与百分比需定点编码(×10000)。

定点编码规则

rust
encoded = (value × 10000) as i32
decoded = encoded as f64 / 10000.0

示例:价格 152.35 → 1_523_500,百分比 2% → 20_000,RSI 50.5 → 505_000。

生命周期函数

函数说明
plugin_activate(ctx: i32) -> i32插件激活,由 export_plugin! 宏生成
plugin_deactivate(ctx: i32) -> i32插件停用

元数据函数

函数说明示例
get_version() -> i32版本号 major×10000+minor×100+patch100 = v0.1.0
get_indicator_count() -> i32支持的指标数量11

技术指标函数

参数与返回值均为定点编码(×10000),除非注明为整数。

函数参数返回
calculate_smasum×10000, period(整数)SMA×10000
calculate_ema_multiplierperiod(整数)乘数×10000
calculate_ema_stepprice×10000, prev_ema×10000, multiplier×10000新EMA×10000
calculate_rsiavg_gain×10000, avg_loss×10000RSI×10000 (0–1000000)
calculate_macd_signalmacd×10000, prev_signal×10000, period(整数)信号线×10000
calculate_bollinger_widthstd_dev×10000, num_std×10000带宽×10000
calculate_std_devsum_sq_dev×10000, count(整数)标准差×10000
calculate_atrprev_atr×10000, true_range×10000, period(整数)ATR×10000
calculate_true_rangehigh×10000, low×10000, prev_close×10000TR×10000
fibonacci_levelhigh×10000, low×10000, level_index(0–4)回撤价格×10000

Fibonacci 索引:0=23.6%, 1=38.2%, 2=50%, 3=61.8%, 4=78.6%

风险管理函数

函数参数返回
calculate_position_sizebalance×10000, risk%×10000, entry×10000, stop×10000仓位数量×10000
calculate_risk_rewardentry×10000, stop×10000, take_profit×10000比率×10000
calculate_max_drawdownpeak×10000, trough×10000回撤%×10000
calculate_pnlentry×10000, exit×10000, quantity×10000, is_long(0/1)盈亏×10000

宿主调用示例

dart
// 计算 SMA(3) for [100, 102, 104]
// sum = 306 × 10000 = 3_060_000
final sma = await wasmLoader.callPluginFunction(
  'com.tradingai.ta_calculator', 'calculate_sma', [3060000, 3]
);
// sma = 1_020_000 → 102.00

参考

extensions/ta_calculator_plugin:完整实现;packages/wasm_plugin_sdk:SDK 源码。