vibetrading: 构建和部署加密 AI 交易策略 - Openclaw Skills

作者:互联网

2026-03-29

AI教程

什么是 vibetrading?

vibetrading 是一个功能强大、以开发者为中心的框架,专为在加密货币市场中创建自主交易代理而设计。通过提供一组标准化的沙箱函数和装饰器,它允许 Openclaw Skills 用户实现从策略构思到实时执行的无缝过渡。该框架支持 Hyperliquid 和 Paradex 等主要的去中心化和中心化交易所,确保用于本地回测的代码无需修改即可直接部署用于实时交易。

该框架简化了与交易所 API 交互、处理 WebSocket 连接和管理状态的复杂性。凭借对技术指标和风险管理模块的内置支持,vibetrading 使开发者能够专注于其 Openclaw Skills 的逻辑,而由框架处理数据检索和订单执行等繁重工作。

下载入口:https://github.com/openclaw/skills/tree/main/skills/crabbytt/vibetrading

安装与下载

1. ClawHub CLI

从源直接安装技能的最快方式。

npx clawhub@latest install vibetrading

2. 手动安装

将技能文件夹复制到以下位置之一

全局模式 ~/.openclaw/skills/ 工作区 /skills/

优先级:工作区 > 本地 > 内置

3. 提示词安装

将此提示词复制到 OpenClaw 即可自动安装。

请帮我使用 Clawhub 安装 vibetrading。如果尚未安装 Clawhub,请先安装(npm i -g clawhub)。

Install

vibetrading 应用场景

  • 通过 AI 代理使用自然语言描述自动化加密货币交易策略。
  • 在投入资金之前,对 RSI、MACD 或基于动量的策略进行历史业绩回测。
  • 将实时交易机器人部署到 Hyperliquid、Paradex、Lighter 和 Aster 等交易所。
  • 使用半凯利(half-Kelly)或波动率调节模型开发复杂的风险管理和仓位控制逻辑。
  • 并排比较多种交易策略的表现,以识别最稳健的 Openclaw Skills。
vibetrading 工作原理
  1. 使用 @vibe 装饰器将策略定义为 Python 函数,并指定执行间隔。
  2. 利用沙箱函数获取实时市场数据、技术指标和账户余额。
  3. 使用 long、short 和 reduce_position 等标准命令实现交易逻辑。
  4. 使用历史数据和滑点参数运行高保真回测,以验证策略表现。
  5. 通过安全的环境设置提供 API 凭据,将策略部署到实时交易所。

vibetrading 配置指南

通过 pip 安装核心包和特定交易所的依赖项:

pip install vibetrading
pip install "vibetrading[hyperliquid]"

通过创建包含交易所凭据的 .env.local 文件来配置您的环境,开始使用这些 Openclaw Skills:

# Hyperliquid 示例
HYPERLIQUID_API_KEY="0xYourWalletAddress"
HYPERLIQUID_API_SECRET="0xYourPrivateKey"

vibetrading 数据架构与分类体系

该技能将数据组织成结构化对象,用于市场分析和账户管理。市场数据遵循标准的 OHLCV 格式,而账户摘要提供实时保证金和仓位详情。

对象 描述 关键字段
OHLCV 数据 历史和实时价格柱 timestamp, open, high, low, close, volume
仓位摘要 当前活跃交易详情 asset, size, entry_price, pnl, leverage
账户摘要 浅包和保证金状态 available_margin, total_margin, withdrawable
交易指标 来自回测的绩效分析 total_return, sharpe_ratio, max_drawdown, win_rate
name: vibetrading
description: "Build, backtest, and deploy cryptocurrency trading strategies using the vibetrading Python framework. Use when: (1) generating trading strategies from natural language, (2) backtesting strategies on historical data, (3) deploying strategies to live exchanges (Hyperliquid, Paradex, Lighter, Aster), (4) comparing strategy performance, (5) working with crypto trading indicators, position sizing, or risk management. NOT for: general finance questions, non-crypto trading, or strategies outside the vibetrading framework."

vibetrading

Agent-first crypto trading framework. Strategies are Python functions decorated with @vibe that call sandbox functions (get_perp_price, long, short, etc.). Same code runs in backtest and live.

Install

pip install vibetrading                    # Core
pip install "vibetrading[hyperliquid]"     # + Hyperliquid live trading
pip install "vibetrading[dev]"             # + pytest, ruff

Core Workflow

1. Write a Strategy

import math
from vibetrading import vibe, get_perp_price, get_perp_position, get_perp_summary
from vibetrading import set_leverage, long, reduce_position, get_futures_ohlcv
from vibetrading.indicators import rsi

@vibe(interval="1h")
def my_strategy():
    price = get_perp_price("BTC")
    if math.isnan(price):
        return

    position = get_perp_position("BTC")
    if position and position.get("size", 0) != 0:
        pnl = (price - position["entry_price"]) / position["entry_price"]
        if pnl >= 0.03 or pnl <= -0.02:
            reduce_position("BTC", abs(position["size"]))
        return

    ohlcv = get_futures_ohlcv("BTC", "1h", 20)
    if ohlcv is None or len(ohlcv) < 15:
        return

    if rsi(ohlcv["close"]).iloc[-1] < 30:
        summary = get_perp_summary()
        margin = summary.get("available_margin", 0)
        if margin > 100:
            set_leverage("BTC", 3)
            qty = (margin * 0.1 * 3) / price
            if qty * price >= 15:
                long("BTC", qty, price, order_type="market")

2. Backtest

import vibetrading.backtest

results = vibetrading.backtest.run(code, interval="1h", slippage_bps=5)
m = results["metrics"]
# Keys: total_return, sharpe_ratio, sortino_ratio, calmar_ratio, max_drawdown,
#        win_rate, profit_factor, expectancy, number_of_trades, cagr, etc.

3. Deploy Live

import vibetrading.live

await vibetrading.live.start(
    code,
    exchange="hyperliquid",
    api_key="0xWalletAddress",
    api_secret="0xPrivateKey",
    interval="1m",
)

Strategy Rules

Every strategy must:

  • Import and use @vibe or @vibe(interval="1h") decorator
  • Guard against math.isnan(price) — prices are NaN before data loads
  • Check position before entering (avoid stacking)
  • Have both take-profit and stop-loss exits
  • Check margin > 50 and qty * price >= 15 before trading

Order types: "market" (fills immediately + slippage) or "limit" (fills at price).

Sandbox Functions

Data: get_perp_price(asset), get_spot_price(asset), get_futures_ohlcv(asset, interval, limit), get_spot_ohlcv(asset, interval, limit), get_funding_rate(asset), get_open_interest(asset), get_current_time(), get_supported_assets()

Account: get_perp_summary(){available_margin, total_margin, ...}, get_perp_position(asset){size, entry_price, pnl, leverage} or None, my_spot_balance(asset?), my_futures_balance()

Trading: long(asset, qty, price, order_type="market"), short(asset, qty, price, order_type="market"), buy(asset, qty, price), sell(asset, qty, price), reduce_position(asset, qty), set_leverage(asset, leverage)

Indicators

from vibetrading.indicators import sma, ema, rsi, bbands, atr, macd, stochastic, vwap

All take pandas Series, return pandas Series. Pure pandas — no dependencies.

Function Signature Returns
rsi rsi(close, period=14) Series (0-100)
bbands bbands(close, period=20, std=2.0) (upper, middle, lower)
macd macd(close, fast=12, slow=26, signal=9) (macd_line, signal, histogram)
atr atr(high, low, close, period=14) Series
stochastic stochastic(high, low, close, k=14, d=3) (%K, %D)

Position Sizing

from vibetrading.sizing import kelly_size, fixed_fraction_size, volatility_adjusted_size, risk_per_trade_size

  • kelly_size(win_rate, avg_win, avg_loss, balance, fraction=0.5) — half-Kelly default
  • risk_per_trade_size(balance, risk_pct, stop_distance, price) — risk-based

Templates

from vibetrading.templates import momentum, mean_reversion, grid, dca, multi_momentum
code = momentum()  # Returns valid strategy code string

AI Generation

import vibetrading.strategy

code = vibetrading.strategy.generate("BTC RSI oversold entry, 3x leverage", model="claude-sonnet-4-20250514")
result = vibetrading.strategy.validate(code)  # Static analysis
report = vibetrading.strategy.analyze(results, strategy_code=code)  # LLM analysis

Requires ANTHROPIC_API_KEY or OPENAI_API_KEY in environment.

Comparing Strategies

import vibetrading.compare

results = vibetrading.compare.run({"RSI": code1, "MACD": code2}, slippage_bps=5)
vibetrading.compare.print_table(results)
df = vibetrading.compare.to_dataframe(results)

Data Download

import vibetrading.tools
from datetime import datetime, timezone

data = vibetrading.tools.download_data(
    ["BTC", "ETH", "SOL"], exchange="binance", interval="1h",
    start_time=datetime(2025, 1, 1, tzinfo=timezone.utc),
    end_time=datetime(2025, 6, 1, tzinfo=timezone.utc),
)
results = vibetrading.backtest.run(code, data=data, slippage_bps=5)

Exchange Credentials

Store in .env.local (gitignored):

Exchange api_key api_secret Extra
Hyperliquid Wallet address 0x... Private key 0x...
Paradex StarkNet public key StarkNet private key account_address=
Lighter API key API secret
Aster API key API secret user_address=

Common Patterns

For detailed API docs, strategy patterns, and exchange-specific setup: see references/api-details.md.