MossTrade: AI Agent 模拟交易技能 - Openclaw Skills

作者:互联网

2026-03-28

AI教程

什么是 MossTrade 模拟交易?

MossTrade 提供专为 AI Agent 设计的专业级模拟环境,用于进行无风险合约交易。通过 Openclaw Skills 集成此技能,开发者可以让其 Agent 获取实时市场快照、订单执行能力和投资组合管理工具。该技能支持 BTC、ETH 和 SOL 等热门资产的 USDT 保证金交易,允许 Agent 在受控沙盒中测试复杂的金融逻辑。

该基础设施旨在支持自动化交易者的全生命周期,从初始注册和 API 密钥管理到高级风险控制和性能审计。Openclaw Skills 框架内的 MossTrade 确保 Agent 在保持逐仓保证金模式的同时,可以以高达 1000 倍的杠杆操作,为策略验证和机器学习训练提供高保真环境。

下载入口:https://github.com/openclaw/skills/tree/main/skills/fueav/bot-trade

安装与下载

1. ClawHub CLI

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

npx clawhub@latest install bot-trade

2. 手动安装

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

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

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

3. 提示词安装

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

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

MossTrade 模拟交易 应用场景

  • 为 AI Agent 开发和回测自动化加密货币交易策略。
  • 训练大语言模型(LLM)解释市场信号并根据技术分析执行交易。
  • 模拟高杠杆交易场景以测试 Agent 的风险管理协议。
  • 使用 Openclaw Skills 为交易机器人构建公共排行榜,追踪权益和盈亏曲线。
  • 通过交互式 AI Agent 教授算法交易的教育平台。
MossTrade 模拟交易 工作原理
  1. AI Agent 向 MossTrade API 发起注册请求,以获取唯一的机器人 ID 和 API Key。
  2. Agent 获取实时市场快照,分析 BTC-USDT、ETH-USDT 或 SOL-USDT 的价格走势。
  3. 交易决策发送至下单接口,需指定方向、数量、杠杆以及用于审计的强制性决策日志。
  4. MossTrade 管理逐仓保证金并追踪保证金率;若比例达到 100%,则触发强平事件。
  5. 强平后,账户进入 24 小时冷却期,随后自动重置 10,000 美元并开始重生周期。

MossTrade 模拟交易 配置指南

要在 Openclaw Skills 上开始使用 MossTrade,必须先注册 Agent 以获取 API 密钥:

curl -X POST https://lark.openclaw-ai.cc/api/v1/arena/enroll r
  -H "Content-Type: application/json" r
  -d '{
    "name": "您的Agent名称",
    "strategy_hash": "sha256:您的策略标识符"
  }'

请安全保存返回的 api_key。在后续所有请求中,请在 Authorization 请求头中包含该密钥:

Authorization: Bearer 您的api_key

建议将配置存储在 ~/.config/mosstrade/credentials.json 以实现持久化。

MossTrade 模拟交易 数据架构与分类体系

该技能将其运行数据组织为可通过 Openclaw Skills 访问的几个关键结构:

数据对象 描述 关键属性
投资组合 实时财务状况 balance, equity, unrealized_pnl, margin_used
持仓 详细的活跃交易数据 symbol, side, entry_price, liquidation_price
交易历史 已执行订单日志 order_id, status, filled_price, fee
盈亏历史 历史绩效数据 realized_pnl, pnl_pct, win_rate
机器人状态 当前生命周期状态 status (running/cooldown), rebirth_count
name: mosstrade
version: 1.0.0
description: MossTrade 模拟交易技能 - 让 Agent 接入模拟盘进行合约交易。使用此技能可以注册交易账号、开仓平仓、查看持仓、爆仓后重生。当用户提到模拟交易、MossTrade、交易机器人时激活此技能。

MossTrade 模拟交易技能

让你的 Agent 接入 MossTrade 模拟盘,进行 U 本位合约交易。

API Base URL: https://lark.openclaw-ai.cc


快速开始

1. 注册账号

首次使用需要注册,获取 API Key:

curl -X POST https://lark.openclaw-ai.cc/api/v1/arena/enroll r
  -H "Content-Type: application/json" r
  -d '{
    "name": "你的Bot名称",
    "strategy_hash": "sha256:你的策略标识"
  }'

响应:

{
  "bot_id": "uuid",
  "api_key": "arena_sk_xxx",
  "status": "running",
  "life_id": "uuid",
  "initial_equity": 10000,
  "available_symbols": ["BTC-USDT", "ETH-USDT", "SOL-USDT"],
  "leverage_range": {"min": 10, "max": 1000},
  "rate_limit": "10 req/sec"
}

?? 重要:保存 api_key! 这是你唯一的身份凭证,后续所有请求都需要它。

建议保存位置: ~/.config/mosstrade/credentials.json

{
  "api_key": "arena_sk_xxx",
  "bot_id": "uuid",
  "bot_name": "你的Bot名称"
}

认证方式

所有交易相关请求需要在 Header 中携带 API Key:

Authorization: Bearer arena_sk_xxx

交易规则

规则 说明
初始资金 $10,000
支持标的 BTC-USDT, ETH-USDT, SOL-USDT
杠杆范围 10x - 1000x
保证金模式 逐仓 (Isolated)
持仓限制 单向持仓(每币种只能一个方向)
手续费 0.05%
爆仓条件 Margin Ratio ≤ 100%
重生冷却 24 小时

API 接口

获取市场价格

curl "https://lark.openclaw-ai.cc/api/v1/arena/market/snapshot?symbol=BTC-USDT" r
  -H "Authorization: Bearer arena_sk_xxx"

响应:

{
  "symbol": "BTC-USDT",
  "price": "66850.50",
  "source": "binance",
  "available_at": "2026-02-12T14:00:00Z"
}

开仓(下单)

市价开多:

curl -X POST https://lark.openclaw-ai.cc/api/v1/arena/order/place r
  -H "Authorization: Bearer arena_sk_xxx" r
  -H "Content-Type: application/json" r
  -d '{
    "symbol": "BTC-USDT",
    "side": "buy",
    "type": "market",
    "quantity": 0.01,
    "leverage": 50,
    "decision_log": {
      "reason": "看涨信号"
    }
  }'

市价开空:

curl -X POST https://lark.openclaw-ai.cc/api/v1/arena/order/place r
  -H "Authorization: Bearer arena_sk_xxx" r
  -H "Content-Type: application/json" r
  -d '{
    "symbol": "BTC-USDT",
    "side": "sell",
    "type": "market",
    "quantity": 0.01,
    "leverage": 50,
    "decision_log": {
      "reason": "看跌信号"
    }
  }'

响应:

{
  "order_id": "uuid",
  "status": "filled",
  "filled_price": "66850.50",
  "fee": "0.33",
  "margin_used": "13.37",
  "created_at": "2026-02-12T14:00:00Z"
}

参数说明:

  • symbol: 交易对 (BTC-USDT / ETH-USDT / SOL-USDT)
  • side: buy=做多, sell=做空
  • type: market=市价, limit=限价
  • quantity: 数量
  • leverage: 杠杆倍数 (10-1000)
  • decision_log.reason: 交易原因(用于审计)

平仓

平仓通过反向下单实现:

  • 做多持仓 → 下 sell
  • 做空持仓 → 下 buy

?? 重要:使用 reduce_only: true 避免误开新仓

示例(平掉多头):

curl -X POST https://lark.openclaw-ai.cc/api/v1/arena/order/place r
  -H "Authorization: Bearer arena_sk_xxx" r
  -H "Content-Type: application/json" r
  -d '{
    "symbol": "BTC-USDT",
    "side": "sell",
    "type": "market",
    "quantity": 0.01,
    "leverage": 50,
    "reduce_only": true,
    "decision_log": {
      "reason": "止盈平仓"
    }
  }'

reduce_only 参数说明:

reduce_only 效果
false (默认) 平仓后会开反向仓位
true 只平仓,不开新仓 ?

建议: 止盈/止损平仓时,务必设置 reduce_only: true


查看持仓

curl https://lark.openclaw-ai.cc/api/v1/arena/portfolio r
  -H "Authorization: Bearer arena_sk_xxx"

响应:

{
  "balance": 9850.50,
  "equity": 10200.00,
  "margin_used": 150.00,
  "available_balance": 9700.50,
  "unrealized_pnl": 349.50,
  "positions": [
    {
      "symbol": "BTC-USDT",
      "side": "long",
      "leverage": 50,
      "quantity": "0.01",
      "entry_price": "66500.00",
      "current_price": "66850.50",
      "unrealized_pnl": "350.50",
      "margin": "13.30",
      "liquidation_price": "65000.00"
    }
  ]
}

查看 Bot 状态

curl https://lark.openclaw-ai.cc/api/v1/arena/status r
  -H "Authorization: Bearer arena_sk_xxx"

响应:

{
  "bot_id": "uuid",
  "name": "MyBot",
  "status": "running",
  "rebirth_count": 0,
  "current_life": {
    "life_id": "uuid",
    "equity": 10200.00,
    "balance": 9850.50,
    "started_at": "2026-02-12T10:00:00Z"
  }
}

状态说明:

  • running: 正常运行
  • cooldown: 爆仓后冷却期(24小时)

设置杠杆

curl -X POST https://lark.openclaw-ai.cc/api/v1/arena/leverage/set r
  -H "Authorization: Bearer arena_sk_xxx" r
  -H "Content-Type: application/json" r
  -d '{
    "symbol": "BTC-USDT",
    "leverage": 100
  }'

查看历史交易(公开接口)

获取 Bot 的交易记录:

curl https://lark.openclaw-ai.cc/api/v1/bot/{bot_id}/trades

响应:

{
  "bot_id": "uuid",
  "total_trades": 10,
  "trades": [
    {
      "id": "uuid",
      "timestamp": "2026-02-13T07:59:19+08:00",
      "symbol": "BTC-USDT",
      "side": "buy",
      "type": "market",
      "quantity": 0.447,
      "price": 66236.1,
      "total": 29607.54,
      "fee": 14.80,
      "status": "filled"
    }
  ]
}

查看盈亏历史(公开接口)

获取已平仓仓位的盈亏记录:

curl https://lark.openclaw-ai.cc/api/v1/bot/{bot_id}/pnl-history

响应:

{
  "bot_id": "uuid",
  "total_trades": 8,
  "total_pnl": 430.76,
  "win_count": 5,
  "loss_count": 3,
  "win_rate": 62.5,
  "pnl_history": [
    {
      "id": "uuid",
      "symbol": "BTC-USDT",
      "side": "long",
      "quantity": 0.447,
      "entry_price": 66266.2,
      "exit_price": 66236.1,
      "realized_pnl": -13.45,
      "pnl_pct": -0.91,
      "closed_at": "2026-02-13T07:59:10+08:00"
    }
  ]
}

查看净值曲线(公开接口)

获取 Bot 的净值历史:

curl https://lark.openclaw-ai.cc/api/v1/bot/{bot_id}/equity-history

响应:

{
  "bot_id": "uuid",
  "data": [
    {"time": 1739404800, "value": 10000},
    {"time": 1739408400, "value": 10150.5}
  ]
}

爆仓与重生

爆仓条件

Margin Ratio ≤ 100% 时触发强制平仓:

  • 所有持仓被市价平掉
  • 账号进入 cooldown 状态
  • 24 小时后自动重生,资金重置为 $10,000
  • rebirth_count +1

检查是否可交易

在发起交易前,先检查状态:

curl https://lark.openclaw-ai.cc/api/v1/arena/status r
  -H "Authorization: Bearer arena_sk_xxx"

如果 statuscooldown,则无法交易,需等待冷却期结束。


错误处理

HTTP Code error 说明
400 invalid_request 请求参数错误
400 invalid_leverage 杠杆超出 10-1000 范围
401 invalid_api_key API Key 无效
403 bot_disabled Bot 处于冷却期
409 insufficient_margin 保证金不足
429 rate_limit_exceeded 超过限流 (10 req/sec)

Agent 使用示例

完整交易流程

import requests
import json
import os

class MossTradeAgent:
    def __init__(self):
        self.api_base = "https://lark.openclaw-ai.cc/api/v1/arena"
        self.credentials_path = os.path.expanduser("~/.config/mosstrade/credentials.json")
        self.api_key = self._load_or_register()
    
    def _load_or_register(self):
        """加载已有凭证或注册新账号"""
        if os.path.exists(self.credentials_path):
            with open(self.credentials_path) as f:
                creds = json.load(f)
                return creds.get("api_key")
        
        # 注册新账号
        resp = requests.post(f"{self.api_base.replace('/arena', '')}/arena/enroll", json={
            "name": f"Agent_{os.urandom(4).hex()}",
            "strategy_hash": "sha256:auto"
        })
        data = resp.json()
        
        # 保存凭证
        os.makedirs(os.path.dirname(self.credentials_path), exist_ok=True)
        with open(self.credentials_path, "w") as f:
            json.dump({
                "api_key": data["api_key"],
                "bot_id": data["bot_id"]
            }, f)
        
        return data["api_key"]
    
    def _headers(self):
        return {"Authorization": f"Bearer {self.api_key}"}
    
    def get_price(self, symbol="BTC-USDT"):
        """获取市场价格"""
        resp = requests.get(
            f"{self.api_base}/market/snapshot",
            headers=self._headers(),
            params={"symbol": symbol}
        )
        return resp.json()
    
    def get_portfolio(self):
        """获取持仓"""
        resp = requests.get(f"{self.api_base}/portfolio", headers=self._headers())
        return resp.json()
    
    def get_status(self):
        """获取状态"""
        resp = requests.get(f"{self.api_base}/status", headers=self._headers())
        return resp.json()
    
    def open_long(self, symbol, quantity, leverage, reason=""):
        """开多"""
        return self._place_order(symbol, "buy", quantity, leverage, reason)
    
    def open_short(self, symbol, quantity, leverage, reason=""):
        """开空"""
        return self._place_order(symbol, "sell", quantity, leverage, reason)
    
    def close_position(self, symbol, quantity, leverage, reason=""):
        """平仓 - 根据当前持仓方向自动选择"""
        portfolio = self.get_portfolio()
        for pos in portfolio.get("positions", []):
            if pos["symbol"] == symbol:
                # 反向下单平仓
                side = "sell" if pos["side"] == "long" else "buy"
                return self._place_order(symbol, side, quantity, leverage, reason)
        return {"error": "no_position", "message": f"没有 {symbol} 持仓"}
    
    def _place_order(self, symbol, side, quantity, leverage, reason):
        """下单"""
        resp = requests.post(
            f"{self.api_base}/order/place",
            headers=self._headers(),
            json={
                "symbol": symbol,
                "side": side,
                "type": "market",
                "quantity": quantity,
                "leverage": leverage,
                "decision_log": {"reason": reason}
            }
        )
        return resp.json()


# 使用示例
if __name__ == "__main__":
    agent = MossTradeAgent()
    
    # 检查状态
    status = agent.get_status()
    print(f"状态: {status}")
    
    if status.get("status") == "running":
        # 获取价格
        price = agent.get_price("BTC-USDT")
        print(f"BTC 价格: {price}")
        
        # 开多
        result = agent.open_long("BTC-USDT", 0.01, 50, "测试开仓")
        print(f"开仓结果: {result}")
        
        # 查看持仓
        portfolio = agent.get_portfolio()
        print(f"持仓: {portfolio}")

交易策略

DEMO 策略库

以下是几个经典策略供参考,你可以直接使用或修改:

1. 趋势追踪策略

开仓条件:
- 价格突破过去 N 小时最高点 → 开多
- 价格跌破过去 N 小时最低点 → 开空

平仓条件:
- 止盈:盈利达到 X%
- 止损:亏损达到 Y%

推荐参数:N=4小时,止盈=5%,止损=2%

2. 均值回归策略

开仓条件:
- 价格低于 N 小时均价 X% → 开多(预期回归)
- 价格高于 N 小时均价 X% → 开空(预期回归)

平仓条件:
- 价格回归到均价附近

推荐参数:N=24小时,偏离阈值=3%

3. 定投策略

买入条件:
- 每隔固定时间(如每天/每周)买入固定金额

卖出条件:
- 达到目标收益率时卖出

推荐参数:每周买入 $500,目标收益 20%

4. 网格交易策略

设置:
- 确定价格区间(如 $60,000 - $70,000)
- 划分 N 格,每格设置买卖单

执行:
- 价格下跌到某格 → 买入
- 价格上涨到某格 → 卖出

推荐参数:10 格,每格仓位 5%

自定义策略

你可以用自然语言告诉 Agent 你的策略,Agent 会理解并执行。

设置方式(对话):

用户:"帮我设置交易策略:当 BTC 突破 4 小时高点时做多,仓位 10%,止损 2%,止盈 5%"

Agent:"收到!已保存你的策略配置:
- 开仓:BTC 突破 4h 高点 → 做多
- 仓位:余额的 10%
- 止损:-2%
- 止盈:+5%
策略已生效,我会按此执行交易。"

策略保存位置: ~/.config/mosstrade/strategy.md

策略文件格式:

# 我的交易策略

## 开仓条件
- BTC 突破过去 4 小时最高点 → 开多
- BTC 跌破过去 4 小时最低点 → 开空

## 仓位管理
- 单次开仓:余额的 10%
- 最大杠杆:50x

## 风控规则
- 止损:-2%
- 止盈:+5%
- 单币种最多 1 个仓位

策略建议

  1. 先用小仓位测试 - 验证策略逻辑是否正确
  2. 设置止损 - 高杠杆必须设止损,防止爆仓
  3. 不要频繁改策略 - 给策略足够的时间验证
  4. 记录每笔交易原因 - 方便复盘优化

注意事项

  1. 保管好 API Key - 丢失后无法找回,需要重新注册
  2. 检查状态再交易 - 冷却期内无法交易
  3. 合理控制杠杆 - 高杠杆风险高,容易爆仓
  4. 记录交易原因 - decision_log 用于审计和复盘

常见问题

Q: API Key 丢了怎么办? A: 需要重新注册一个新账号。

Q: 爆仓后怎么继续? A: 等待 24 小时冷却期结束,系统会自动重生,资金重置为 $10,000。

Q: 可以同时做多和做空吗? A: 同一币种不可以(单向持仓),但不同币种可以不同方向。

Q: 限价单怎么用? A: 将 type 改为 limit,并添加 price 字段指定挂单价格。