Maxxit Lazy Trader
Maxxit 懒人交易
通过 Maxxit 的懒人交易 API,在 Ostium、Aster DEX 和 Avantis DEX 执行永续合约交易。此技能支持通过编程接口实现自动化交易,用于开仓/平仓和管理风险。
内置策略脚本
该技能包含独立的 Python 策略脚本。当用户希望代理运行预定义的交易系统,而非手动指定每笔交易时,可使用这些脚本。

ema-strategy.py- 基于币安 K 线收盘价的趋势跟踪 EMA 交叉策略。
rsi-bollinger-strategy.py- 均值回归系统,等待价格突破布林带,并通过 RSI 确认信号进行再入场。
donchian-adx-strategy.py- 突破系统,仅在 ADX 确认强劲趋势行情时,交易唐奇安通道突破。
taker-strategy.py- 激进吃单者(订单流)高频交易策略。分析币安吃单买入/卖出比率,以检测激进的市场参与者并捕捉快速动量转换。mean-reversion-strategy.py- RSI + 布林带均值回归策略。一种利用价格衰竭点的技术方法,针对横盘或沉闷市场中的高频剥头皮交易进行了优化。breakout-strategy.py- 带有ATR过滤器的波动性突破策略。当价格突破标准差通道且ATR确认波动性和动量增强时,执行交易。vwap-strategy.py- VWAP交叉机构动量策略。使用成交量加权平均价格和指数移动平均线来确认机构趋势一致性,并通过成交量确认交易强度。
所有脚本:
- 直接从以下地址读取币安K线数据
https://api.binance.com/api/v3/klines - 使用
MAXXIT_API_URL和MAXXIT_API_KEY - 通过Maxxit程序化交易端点执行
- 在OpenClaw工作空间中维护每个交易对、每个交易场所的状态
调用示例:
python3 ema-strategy.py --symbol BTCUSDT --interval 5m --venue avantis
python3 rsi-bollinger-strategy.py --symbol ETHUSDT --interval 5m --venue ostium
python3 donchian-adx-strategy.py --symbol BTCUSDT --interval 15m --venue avantis
何时使用此技能
- 用户希望在Ostium上执行交易
- 用户希望在Aster DEX上执行交易
- 用户询问其懒人交易账户详情
- 用户想要查询其USDC/ETH余额
- 用户想要查看其持仓或投资组合情况
- 用户想要查看历史平仓记录或盈亏情况
- 用户想要了解可交易的品种/交易对
- 用户需要市场研究、市场概况或交易导向的研究简报
- 用户需要用于交易决策的完整市场快照
- 用户想要开立新的交易仓位(做多/做空)
- 用户想要平掉现有仓位
- 用户想要设置或修改止盈价位
- 用户想要设置或修改止损价位
- 用户想要获取当前代币/市场价格
- 用户提及"懒人交易"、"永续合约"、"永续"或"期货交易"
- 用户想要自动化其交易流程
- 用户想要跟单或复制其他交易者的仓位
- 用户想要探索其他OpenClaw智能体以学习经验
- 用户想要查看顶尖交易者正在进行的交易
- 用户想要寻找高影响力交易者进行策略复制
- 用户想要出售他们的交易信号作为阿尔法值
- 用户想要浏览或购买来自ZK验证交易者的无需信任的阿尔法值
- 用户想要生成其交易表现的ZK证明或将某个头寸标记为阿尔法值
- 用户提到"阿尔法市场"、"出售阿尔法"、"购买阿尔法"或"ZK证明"
技能维护
- 如果用户要求OpenClaw更新此技能,请运行:
npx clawhub@latest install maxxit-lazy-trading --force
⚠️ DEX路由规则(强制遵守)
- 如果不明确,请先询问交易场所:"您想在Ostium、Aster还是Avantis上进行交易?"
- 请在回复中明确说明当前使用的交易场所(例如:"正在使用Ostium..."、"正在使用Aster..."或"正在使用Avantis...")。
- 不要混合建议交易场所:
- 如果用户在Ostium上进行交易,则仅建议Ostium的端点/操作。
- 如果用户在Aster上进行交易,则仅建议Aster的端点/操作。
- 如果用户在Avantis上进行交易,仅建议Avantis的端点/操作。
- 不要询问网络澄清:
- Ostium默认使用主网,但如果用户明确要求Ostium测试网 / Arbitrum Sepolia,则遵循该要求并在
Ostium端点上传递isTestnet: true - 。在此设置中,Aster仅限测试网
- 。在此设置中,Avantis仅限主网
- (Base链)。因此,除非用户明确请求Ostium测试网,请勿
- Ostium默认使用主网,但如果用户明确要求Ostium测试网 / Arbitrum Sepolia,则遵循该要求并在
- 询问“主网还是测试网?”。
如果用户在对话中途切换交易场所,请确认切换,然后仅继续该场所的流程。
⚠️ 关键:API参数规则(调用任何端点前必读)所有必需的参数必须来自之前的API响应或明确的用户输入。如果缺少必需的参数值,你必须首先从相应的依赖端点获取。
参数依赖关系图
以下展示了每个必需参数的来源。在调用端点之前,务必先解析依赖关系。
| 参数 | 来源 | 获取来源端点 |
|---|---|---|
userAddress/address | /user-detailsresponse →user_wallet | GET /user-details |
agentAddress | /user-detailsresponse →ostium_agent_address | GET /user-details |
tradeIndex | /open-positionresponse →actualTradeIndex 或 /positions响应 →tradeIndex | POST /open-position或POST /positions |
pairIndex | /positions响应 →pairIndex 或 /symbols响应 → symbolid | POST /positions或GET /symbols |
entryPrice | /open-position响应 →entryPrice 或 /positions响应 →entryPrice | POST /open-position或POST /positions |
市场/交易对 | 用户指定代币或 /symbols响应 →交易对(例如ETH/USD) | 用户输入或GET /symbols |
方向 | 用户指定"做多"或"做空" | 用户输入(必填) |
保证金 | 用户指定USDC金额 | 用户输入(必填) |
杠杆 | 用户指定乘数 | 用户输入(必填) |
止盈百分比 | 用户指定(例如,0.30 = 30%) | 用户输入(必填) |
止损百分比 | 用户指定(例如,0.10 = 10%) | 用户输入(必填) |
地址(用于跟单交易) | /跟单交易者响应 →创建者钱包或钱包地址 | GET /copy-traders |
承诺(Alpha版) | /alpha/agents响应 →承诺 | GET /alpha/agents |
列表ID(Alpha版) | /alpha/listings响应 →listingId | GET /alpha/listings |
alpha,contentHash(Alpha) | /alpha/purchase阶段2 响应 →alpha,contentHash | GET /alpha/purchase+X-Paymentheader |
txHash(Alpha) | /alpha/pay响应 →txHash | POST /alpha/pay |
强制工作流规则
- 始终首先调用
/user-details以获取to get用户钱包(用作用户地址/地址)。将其缓存在会话中——它不会改变。 - 将
/user-details视为身份优先。对于有效的API密钥,它始终返回用户钱包,即使尚不存在延迟交易代理。 /user-details是稀疏的。它会省略为空、null或false的字段。缺失的字段意味着“不适用”,不应仅凭此就视为错误或配置缺失。- 仅当交易场所需要代理时才使用
ostium_agent_address。Ostium和Avantis需要它。Zerodha不需要。Aster只需要user_wallet,但aster_configured必须存在且为true。 - 切勿硬编码或猜测钱包地址。每个用户的地址都是唯一的,必须从
/user-details获取。 - 关于开仓:首先获取当前市场背景信息(通过
/api/lazy-trading/research、/api/lazy-trading/indian-stocks、/market-data或/price,视情况而定),将其展示给用户,获取明确确认以及交易参数(抵押品、杠杆、方向、止盈、止损),然后执行。- 市场格式规则(Ostium):
/symbols返回的交易对格式类似ETH/USD,但/open-position接口仅接受市场作为基础代币(例如ETH)。转换时请提取/之前的基础代币。
- 市场格式规则(Ostium):
- 关于开仓后设置止盈/止损:请使用
/open-position接口响应中的actualTradeIndex。如果您没有此信息(例如,仓位是早些时候开立的),请调用/positions接口以获取tradeIndex、pairIndex和entryPrice。 - 关于平仓:您需要
tradeIndex— 始终先调用/positions来查找用户指定的市场/头寸的正确索引。 - 向用户询问交易参数— 切勿假设抵押金额、杠杆、止盈百分比或止损百分比。提供默认值,但让用户确认或覆盖。
- 验证市场是否存在通过调用
/symbols来验证,如果您不确定某个代币是否在Ostium上可用,请在交易前进行此项操作。 - 对于Alpha消费者流程:遵循以下确切顺序:
/alpha/agents→/alpha/listings→/alpha/purchase(402) →/alpha/pay→/alpha/purchase(附带X-Payment) →/alpha/verify→/user-details→/alpha/execute. 永远不要跳过步骤。对于/alpha/verify,请原样传递从购买处收到的content对象——不要修改键或值。飞行前检查清单(每次API调用前在脑中运行)
认证
✅ Do I have the user's wallet address? → If not, call /user-details
✅ Does this flow require an agent address? → If yes, call /user-details and verify ostium_agent_address is present
✅ Does this endpoint need a tradeIndex? → If not in hand, call /positions
✅ Does this endpoint need entryPrice/pairIndex? → If not in hand, call /positions
✅ Did I ask the user for all trade parameters? → collateral, leverage, side, TP%, SL%
✅ Is the market/symbol valid? → If unsure, call /symbols to verify
✅ (Alpha) Do I have commitment? → If not, call /alpha/agents
✅ (Alpha) Do I have listingId? → If not, call /alpha/listings
✅ (Alpha) For /verify: Am I passing content exactly as received? → No modifications
✅ (Alpha) For /execute: Do I have agentAddress + userAddress? → Call /user-details
所有请求都需要一个以
lt_为前缀的API密钥。通过以下方式传递:请求头:
- X-API-KEY: lt_your_api_key
或: - Authorization: Bearer lt_your_api_key
市场调研工作流程
Market Research Workflow
当用户请求市场研究时,使用Maxxit市场研究端点,而不是从头开始撰写研究。
端点:
POST /api/lazy-trading/researchPOST /api/lazy-trading/indian-stocks用于印度股票研究查询
规则:
- 根据用户的询问构建
内容提示。 - 保留用户的资产、时间框架、策略和风险关注点。
- 如果用户表述模糊,请根据他们提供的上下文构建一个尽最大努力完成的交易研究查询,而不是编造一个不同的目标。
- 在相关情况下,优先选择询问市场结构、趋势、动量、支撑/阻力、催化剂和交易风险的提示。
- 设置
深度研究为true当用户要求深度研究、全面比较、详细的尽职调查风格分析,或明确希望进行更彻底的研究时。 - 设置
深度研究至错误用于标准市场摘要、快速交易简报或常规战术研究请求。 - 对于
POST /api/lazy-trading/indian-stocks,OpenClaw必须根据用户的查询决定请求选项,不应要求用户选择聊天模型、响应长度或思考层级。 - 始终发送
问题加上推断出的请求选项:聊天模型:分析型或战略型响应长度:简短、中等或者长期思考层级:仅在聊天模型为策略型
- 时包含此项
当用户需要交易计划、波段交易设置、多空想法、入场区域、止损位、目标位、本周时机或战术性仓位布局时,使用聊天模型:"策略型"。在策略模式下,自动包含思考层级- :
默认使用平衡 -
对于快速、轻量级的战术性询问,使用
浅层仅当用户明确要求一个更深入思考或更详细的策略答案时,使用 - 深度
使用聊天模型:"分析型"
- :
- Use
chat_model: "analytical"关于筛选、排名、基本面、估值、行业比较、资本支出周期受益者、盈利质量、资产负债表分析以及尽职调查式研究。请勿发送思维层级处于分析模式。 - 推断
回答长度根据用户的提问:- 使用
简短适用于快速解答、简洁的交易想法和直接的设置请求。 - 使用
中等作为默认设置,适用于常规研究请求。 - 使用
长篇适用于排名列表、详细比较、深度分析或多因素解释。
- 使用
- 如果用户的措辞同时包含分析和战术要素,请优先考虑主要交付内容。如果答案必须提供可操作的交易设置,请选择
战略;如果答案主要是筛选、排名、估值或基本面比较,请选择分析。 - 总结回复内容并格式化以增强可读性。
提示构建示例:
- 用户:"研究BTC以进行波段做多。"
- 查询:
分析BTC的波段做多设置。涵盖市场结构、动量、关键支撑/阻力位、可能的催化剂、失效水平以及主要交易风险。
- 查询:
- 用户:"给我今天ETH的市场研究。"
- 查询:
总结今日ETH的市场结构,包括趋势、动量、关键支撑/阻力位、重要催化剂以及日内持仓的交易风险。
- 查询:
- 用户:"在我做空之前研究SOL。"
- 查询:
分析SOL的潜在做空设置。涵盖当前市场结构、弱势信号、阻力位、需关注的下行水平、催化剂以及关键的挤压/失效风险。
- 查询:
示例调用:
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/research" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"content": "Analyze BTC for a swing-long setup. Cover market structure, momentum, key support/resistance, likely catalysts, invalidation levels, and major trading risks.",
"deepResearch": false
}'
印度股票示例:
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/indian-stocks" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"question": "Screen for Indian IT stocks with strong profit growth and low debt.",
"chat_model": "analytical",
"response_length": "medium"
}'
印度股票战术示例:
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/indian-stocks" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"question": "Which Indian banking stocks look strongest for a swing trade this week? Give long ideas only, with entry zone, stop loss, target range, and the reasoning behind each setup.",
"chat_model": "strategic",
"response_length": "short",
"thinking_level": "balanced"
}'
当讨论印度股票、NSE/BSE订单、持仓、目标、止损或投资组合价值时:
- 使用印度卢比作为默认单位
- 首选
₹在面向用户的响应中(例如,₹2,450、₹1.2 拉克)
API 端点
Ostium 程序化端点 (/api/lazy-trading/programmatic/*)
所有位于
/api/lazy-trading/programmatic/*下的端点均用于Ostium,除非明确以/aster/为前缀。
获取用户详情
获取懒人交易用户信息,包括钱包身份、代理状态、Telegram 连接和交易偏好。
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/user-details" \
-H "X-API-KEY: ${MAXXIT_API_KEY}"
响应:
{
"success": true,
"user_wallet": "0x...",
"lazy_trading_ready": true,
"agent": {
"id": "agent-uuid",
"name": "Lazy Trader - Username",
"venue": "ostium",
"status": "active"
},
"telegram_user": {
"id": 123,
"telegram_user_id": "123456789",
"telegram_username": "trader"
},
"deployment": {
"id": "deployment-uuid",
"status": "active",
"enabled_venues": ["ostium"]
},
"trading_preferences": {
"risk_tolerance": "medium",
"trade_frequency": "moderate"
},
"ostium_agent_address": "0x...",
"aster_configured": true
}
如果用户尚未设置懒人交易代理,/user-details仍然返回200与身份数据,例如:
{
"success": true,
"user_wallet": "0x..."
}
获取可用交易对
从Ostium交易所检索所有可用的交易对。使用此功能来发现您可以交易哪些交易对。
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/symbols" \
-H "X-API-KEY: ${MAXXIT_API_KEY}"
响应:
{
"success": true,
"symbols": [
{
"id": 0,
"symbol": "BTC/USD",
"group": "crypto",
"maxLeverage": 150
},
{
"id": 1,
"symbol": "ETH/USD",
"group": "crypto",
"maxLeverage": 100
}
],
"groupedSymbols": {
"crypto": [
{ "id": 0, "symbol": "BTC/USD", "group": "crypto", "maxLeverage": 150 },
{ "id": 1, "symbol": "ETH/USD", "group": "crypto", "maxLeverage": 100 }
],
"forex": [...]
},
"count": 45
}
获取账户余额
检索用户Ostium钱包地址的USDC和ETH余额。
⚠️ 依赖项:
地址字段是用户的Ostium钱包地址(user_wallet)。您必须首先从/user-details获取它——请勿硬编码或假设任何地址。
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/balance" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d "{"address": "0x..."}"
响应:
{
"success": true,
"address": "0x...",
"usdcBalance": "1000.50",
"ethBalance": "0.045"
}
获取投资组合持仓
获取用户Ostium交易账户的所有未平仓持仓。此端点至关重要——它返回交易索引,pairIndex, 以及entryPrice这些是平仓和设置止盈/止损所必需的。
⚠️ 依赖项:
address字段必须来自/user-details→user_wallet。切勿猜测。🔑 此端点提供了以下接口所需的值::
/close-position(需要tradeIndex),/set-take-profit(需要tradeIndex,pairIndex,entryPrice),/set-stop-loss(需要tradeIndex,pairIndex,entryPrice).
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/positions" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d "{"address": "0x..."}"
请求体:
{
"address": "0x..." // REQUIRED — from /user-details → user_wallet. NEVER guess this.
}
响应:
{
"success": true,
"positions": [
{
"market": "BTC",
"marketFull": "BTC/USD",
"side": "long",
"collateral": 100.0,
"entryPrice": 95000.0,
"leverage": 10.0,
"tradeId": "12345",
"tradeIndex": 2,
"pairIndex": "0",
"notionalUsd": 1000.0,
"totalFees": 2.50,
"stopLossPrice": 85500.0,
"takeProfitPrice": 0.0
}
],
"totalPositions": 1
}
从每个持仓中需要提取的关键字段:
tradeIndex— 用于/close-position,/set-take-profit,/set-stop-losspairIndex— 用于/set-take-profit,/set-stop-lossentryPrice— 用于/set-take-profit,/设置止损方向— 必需用于/设置止盈,/设置止损
### Get Position History
Get trading history for a wallet.
- `venue: "OSTIUM"` (default): uses Ostium history.
- `venue: "AVANTIS"`: returns normalized closed-trade history from Avantis `v2/history/portfolio/history`.
**Note:** The user's Ostium wallet address can be fetched from the `/api/lazy-trading/programmatic/user-details` endpoint (see Get Account Balance section above).
```bash
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/history" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"venue":"OSTIUM","address":"0x...","count":50}'
请求体:
{
"venue": "OSTIUM", // Optional: "OSTIUM" (default) or "AVANTIS"
"address": "0x...", // Required for OSTIUM; also accepted for AVANTIS as alias of userAddress
"count": 50 // Number of recent orders to retrieve (default: 50)
}
响应:
{
"success": true,
"history": [
{
"market": "ETH",
"side": "long",
"collateral": 50.0,
"leverage": 5,
"price": 3200.0,
"pnlUsdc": 15.50,
"profitPercent": 31.0,
"totalProfitPercent": 31.0,
"rolloverFee": 0.05,
"fundingFee": 0.10,
"executedAt": "2025-02-10T15:30:00Z",
"tradeId": "trade_123"
}
],
"count": 25,
"venue": "OSTIUM"
}
Avantis历史示例(相同/历史记录端点):
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/history" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"venue":"AVANTIS","userAddress":"0x...","count":50}'
返回标准化记录,例如:标识符,交易标识符(<交易对索引>:<交易索引>),市场,方向,抵押品USDC,持仓规模USDC,杠杆,入场价格,平仓价格,发送给交易员的USDC,总盈亏(USDC),平仓时间,时间戳.
开仓
在Ostium上开设一个新的永续期货仓位。
⚠️ 依赖项 — 在调用此端点之前,必须解决所有依赖项:
代理地址→ 来自/user-details→ostium_agent_address(切勿猜测)用户地址→ 来自/user-details→用户钱包(切勿猜测)市场→ 如果不确定代币是否存在,请通过/symbols端点进行验证
- 如果
/symbols返回ETH/USD,则向/open-position传递market: "ETH"(而非ETH/USD)方向、保证金、杠杆→明确询问用户,切勿自行假设📊 推荐的交易前流程:
- 调用
/api/lazy-trading/research以进行加密货币交易研究,或调用/market-data//price以获取当前市场状况- 向用户展示市场背景(价格、结构、动量、波动性,在可用时提供)
- 询问用户:“您想继续吗?请指定:抵押品(USDC)、杠杆、做多/做空”
- 仅在用户确认后 → 调用
/open-position🔐 验证说明:每笔交易均由 EigenAI 分析,以确保其与市场状况相符。用户可以在maxxit.ai/openclaw验证其所有交易的加密签名和推理过程
。🔑 保存响应
—actualTradeIndex和entryPrice
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/open-position" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"agentAddress": "0x...",
"userAddress": "0x...",
"market": "BTC",
"side": "long",
"collateral": 100,
"leverage": 10
}'
请求正文:
{
"agentAddress": "0x...", // REQUIRED — from /user-details → ostium_agent_address. NEVER guess.
"userAddress": "0x...", // REQUIRED — from /user-details → user_wallet. NEVER guess.
"market": "BTC", // REQUIRED — Base token only for Ostium (e.g. "ETH", not "ETH/USD"). Validate via /symbols if unsure.
"side": "long", // REQUIRED — "long" or "short". ASK the user.
"collateral": 100, // REQUIRED — Collateral in USDC. ASK the user.
"leverage": 10, // Optional (default: 10). ASK the user.
"deploymentId": "uuid...", // Optional — associated deployment ID
"signalId": "uuid...", // Optional — associated signal ID
"isTestnet": false // Optional. Set true only when user explicitly asks for Ostium testnet / Arbitrum Sepolia.
}
响应(重要——请保存这些值):
{
"success": true,
"orderId": "order_123",
"tradeId": "trade_abc",
"transactionHash": "0x...",
"txHash": "0x...",
"status": "OPEN",
"message": "Position opened successfully",
"actualTradeIndex": 2, // ← SAVE THIS — needed for /set-take-profit and /set-stop-loss
"entryPrice": 95000.0, // ← SAVE THIS — needed for /set-take-profit and /set-stop-loss
"reasoning": "Market sentiment is bullish...", // EigenAI trade alignment analysis
"llmSignature": "0x..." // Cryptographic signature for auditability
}
关闭仓位
在Ostium上平掉一个现有的永续期货仓位。
⚠️ 依赖项——在调用此端点前需先解决:
代理地址→ 来自/user-details→ostium_agent_address用户地址→ 来自/user-details→user_wallet交易索引→ 调用/positions接口先找到你想平掉的仓位,然后使用其交易索引切勿猜测
交易索引或交易ID。始终从/positions端点获取。
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/close-position" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"agentAddress": "0x...",
"userAddress": "0x...",
"market": "BTC",
"tradeId": "12345"
}'
请求正文:
{
"agentAddress": "0x...", // REQUIRED — from /user-details → ostium_agent_address. NEVER guess.
"userAddress": "0x...", // REQUIRED — from /user-details → user_wallet. NEVER guess.
"market": "BTC", // REQUIRED — Token symbol
"tradeId": "12345", // Optional — from /positions → tradeId
"actualTradeIndex": 2, // Highly recommended — from /positions → tradeIndex. NEVER guess.
"isTestnet": false // Optional. Set true only when user explicitly asks for Ostium testnet / Arbitrum Sepolia.
}
响应:
{
"success": true,
"result": {
"txHash": "0x...",
"market": "BTC",
"closePnl": 25.50
},
"closePnl": 25.50,
"message": "Position closed successfully",
"alreadyClosed": false
}
设置止盈
为 Ostium 上的现有仓位设置或更新止盈水平。
⚠️ 依赖项 — 调用前需要满足以下所有条件:
agentAddress→ 来自/user-details→ostium_agent_addressuserAddress→ 来自/user-details→user_wallettradeIndex→ 来自/open-position响应 →actualTradeIndex,或者从/positions→tradeIndexentryPrice→ 从/open-position响应 →entryPrice,或从/positions→entryPricepairIndex→ 从/positions→pairIndex,或从/symbols→ 符号idtakeProfitPercent→询问用户(默认值:0.30 = 30%)方向→ 从/positions→方向("做多"或"做空")如果您刚刚开仓:使用
实际交易索引和入场价格从/open-position响应中获取。如果仓位是之前开立的:调用/positions以获取交易索引、入场价格、交易对索引和方向.
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/set-take-profit" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"agentAddress": "0x...",
"userAddress": "0x...",
"market": "BTC",
"tradeIndex": 2,
"takeProfitPercent": 0.30,
"entryPrice": 90000,
"pairIndex": 0
}'
请求体:
{
"agentAddress": "0x...", // REQUIRED — from /user-details. NEVER guess.
"userAddress": "0x...", // REQUIRED — from /user-details. NEVER guess.
"market": "BTC", // REQUIRED — Token symbol
"tradeIndex": 2, // REQUIRED — from /open-position or /positions. NEVER guess.
"takeProfitPercent": 0.30, // Optional (default: 0.30 = 30%). ASK the user.
"entryPrice": 90000, // REQUIRED — from /open-position or /positions. NEVER guess.
"pairIndex": 0, // REQUIRED — from /positions or /symbols. NEVER guess.
"side": "long", // Optional (default: "long") — from /positions.
"isTestnet": false // Optional. Set true only when user explicitly asks for Ostium testnet / Arbitrum Sepolia.
}
响应:
{
"success": true,
"message": "Take profit set successfully",
"tpPrice": 117000.0
}
设置止损
为 Ostium 上的现有持仓设置或更新止损水平。
⚠️ 依赖项 — 与设置止盈相同。调用前需要以下所有参数:
代理地址→ 来自/user-details→ostium_agent_address用户地址→ 来自/user-details→user_wallet交易索引→ 来自/open-position响应 →actualTradeIndex,或者来自/positions交易索引入场价格→ 来自/开仓响应 →入场价格,或来自/持仓→入场价格配对索引→ 来自/持仓→配对索引,或来自/交易对→ 交易对标识符止损百分比→询问用户(默认: 0.10 = 10%)(default: 0.10 = 10%)方向→ 来自/持仓→方向("做多" 或 "做空")如果您刚刚开仓:使用
实际交易索引和入场价格从/开仓响应中获取。如果仓位是之前开立的:调用/持仓来获取交易索引、入场价格、交易对索引以及方向。
# Same dependency resolution as Set Take Profit (see above for full example)
# Step 1: Get addresses from /user-details
# Step 2: Get position details from /positions
# Step 3: Set stop loss with user-specified stopLossPercent
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/set-stop-loss" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"agentAddress": "0x...",
"userAddress": "0x...",
"market": "BTC",
"tradeIndex": 2,
"stopLossPercent": 0.10,
"entryPrice": 90000,
"pairIndex": 0,
"side": "long"
}'
请求体:
{
"agentAddress": "0x...", // REQUIRED — from /user-details. NEVER guess.
"userAddress": "0x...", // REQUIRED — from /user-details. NEVER guess.
"market": "BTC", // REQUIRED — Token symbol
"tradeIndex": 2, // REQUIRED — from /open-position or /positions. NEVER guess.
"stopLossPercent": 0.10, // Optional (default: 0.10 = 10%). ASK the user.
"entryPrice": 90000, // REQUIRED — from /open-position or /positions. NEVER guess.
"pairIndex": 0, // REQUIRED — from /positions or /symbols. NEVER guess.
"side": "long", // Optional (default: "long") — from /positions.
"isTestnet": false // Optional. Set true only when user explicitly asks for Ostium testnet / Arbitrum Sepolia.
}
获取所有市场数据
{
"success": true,
"message": "Stop loss set successfully",
"slPrice": 81000.0,
"liquidationPrice": 85500.0,
"adjusted": false
}
从Ostium检索完整的市场快照,包括所有交易品种及其当前指标。这对于通过单次请求进行全市场扫描或分析非常有用。
响应:
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/market-data" \
-H "X-API-KEY: ${MAXXIT_API_KEY}"
获取代币价格
{
"success": true,
"data": [
{
"id": 0,
"symbol": "BTC/USD",
"group": "crypto",
"maxLeverage": 150,
"metrics": {
"price": "95000.12345678",
"percent_change_24h": 2.45,
"volatility": 0.032,
"volume_24h": "45000000000.00000000",
"market_cap": "1850000000000.00000000"
},
"updated_at": "2026-02-14T08:30:00.000Z"
},
...
],
"count": 45
}
从Ostium价格源获取代币的当前市场价格。
查询参数:
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/price?token=BTC&isTestnet=false" \
-H "X-API-KEY: ${MAXXIT_API_KEY}"
参数
| 类型 | 必需 | 描述 | token |
|---|---|---|---|
字符串 | 是 | 要获取价格的代币符号(例如,BTC、ETH、SOL) | isTestnet |
布尔值 | 否 | 当用户明确请求时,使用Ostium测试网 / Arbitrum Sepolia | 响应: |
发现可跟单的交易者(跟单交易 — 第1步)
{
"success": true,
"token": "BTC",
"price": 95000.0,
"isMarketOpen": true,
"isDayTradingClosed": false
}
Discover Traders to Copy (Copy Trading — Step 1)
探索其他OpenClaw交易者及表现优异的交易者,以便进行潜在的跟单。这是第一步在跟单工作流程中——返回的钱包地址将用作地址参数,在/copy-trader-trades端点中使用。
⚠️ 依赖链:此端点提供了
/copy-trader-trades所需的钱包地址。您必须先调用此端点以获取交易者地址——切勿猜测或硬编码地址。🚫 禁止自我跟单:切勿使用您自己的
user_wallet从/user-details获取的地址作为跟单地址。
# Get all traders (OpenClaw + Leaderboard)
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/copy-traders" \
-H "X-API-KEY: ${MAXXIT_API_KEY}"
# Get only OpenClaw Traders (prioritized)
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/copy-traders?source=openclaw" \
-H "X-API-KEY: ${MAXXIT_API_KEY}"
# Get only Leaderboard traders with filters
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/copy-traders?source=leaderboard&minImpactFactor=50&minTrades=100" \
-H "X-API-KEY: ${MAXXIT_API_KEY}"
查询参数:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
来源 | 字符串 | 全部 | openclaw(仅限OpenClaw代理),排行榜(仅限顶级交易者),全部(两者) |
限制 | 整数 | 20 | 每个层级的最大结果数(最多100个) |
最小交易数 | 整数 | — | 最小交易数量过滤器(仅限排行榜) |
最小影响因子 | 浮点数 | — | 最小影响因子过滤器(仅限排行榜) |
响应:
{
"success": true,
"openclawTraders": [
{
"agentId": "3dbc322f-...",
"agentName": "OpenClaw Trader - 140226114735",
"creatorWallet": "0x4e7f1e29d9e1f81c3e9249e3444843c2006f3325",
"venue": "OSTIUM",
"status": "PRIVATE",
"isCopyTradeClub": false,
"performance": {
"apr30d": 0,
"apr90d": 0,
"aprSinceInception": 0,
"sharpe30d": 0
},
"deployment": {
"id": "dep-uuid",
"status": "ACTIVE",
"safeWallet": "0x...",
"isTestnet": true
}
}
],
"topTraders": [
{
"walletAddress": "0xabc...",
"totalVolume": "1500000.000000",
"totalClosedVolume": "1200000.000000",
"totalPnl": "85000.000000",
"totalProfitTrades": 120,
"totalLossTrades": 30,
"totalTrades": 150,
"winRate": 0.80,
"lastActiveAt": "2026-02-15T10:30:00.000Z",
"scores": {
"edgeScore": 0.82,
"consistencyScore": 0.75,
"stakeScore": 0.68,
"freshnessScore": 0.92,
"impactFactor": 72.5
},
"updatedAt": "2026-02-17T06:00:00.000Z"
}
],
"openclawCount": 5,
"topTradersCount": 20
}
后续步骤中要使用的关键字段:
openclawTraders[].creatorWallet→ 用作地址在/copy-trader-tradestopTraders[].walletAddress→ 用作address在/copy-trader-trades- 排除任何与您自身地址相同的地址
/user-details.user_wallet
获取交易员近期交易(跟单交易 — 步骤 2)
获取特定交易员地址的近期的链上交易。此操作实时查询 Ostium 子图以获取最新的交易数据。
⚠️ 依赖关系: 该
address参数必须来自/copy-traders端点响应:
- 对于 OpenClaw 交易员:使用
openclawTraders[]中的creatorWallet- 对于排行榜交易员:使用
walletAddress来自顶尖交易者[]切勿猜测或硬编码地址。始终先调用
/copy-traders。
# Step 1: Discover traders first
TRADER_ADDRESS=$(curl -s -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/copy-traders?source=openclaw" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" | jq -r '.openclawTraders[0].creatorWallet')
# Step 2: Fetch their recent trades
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/copy-trader-trades?address=${TRADER_ADDRESS}" \
-H "X-API-KEY: ${MAXXIT_API_KEY}"
# With custom lookback and limit
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/copy-trader-trades?address=${TRADER_ADDRESS}&hours=48&limit=50" \
-H "X-API-KEY: ${MAXXIT_API_KEY}"
查询参数:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
address | 字符串 | 必需 | 交易者钱包地址(来自/copy-traders) |
limit | 整数 | 20 | 最大返回交易数量(最多50) |
hours | 整数 | 24 | 回溯时间窗口(小时)(最大168 / 7天) |
响应:
{
"success": true,
"traderAddress": "0x4e7f1e29d9e1f81c3e9249e3444843c2006f3325",
"trades": [
{
"tradeId": "0x123...",
"side": "LONG",
"tokenSymbol": "BTC",
"pair": "BTC/USD",
"collateral": 500.00,
"leverage": 10.0,
"entryPrice": 95000.50,
"takeProfitPrice": 100000.00,
"stopLossPrice": 90000.00,
"timestamp": "2026-02-17T14:30:00.000Z"
}
],
"count": 5,
"lookbackHours": 24
}
交易字段说明:
| 字段 | 说明 |
|---|---|
side | "LONG"或"SHORT"—— 交易方向 |
tokenSymbol | 交易的代币(例如:BTC、ETH) |
pair | 完整的交易对标签(例如:BTC/USD) |
collateral | 用作保证金的USDC金额 |
leverage | 杠杆乘数(例如:10.0 = 10倍) |
entryPrice | 开仓价格 |
takeProfitPrice | 止盈价格(未设置则为空值) |
止损价格 | 止损价格(若未设置则为空) |
时间戳 | 交易开仓时间 |
下一步:在查看交易后,使用
/open-position来开设一个类似的仓位。你需要从/user-details中获取你自己的代理地址和用户地址。
信号格式示例
懒人交易系统处理自然语言交易信号。示例如下:
开仓
"做多ETH,5倍杠杆,入场价3200""做空BTC,10倍杠杆,止盈60000,止损68000""买入价值100 USDC的ETH永续合约"
带风险管理
"做多SOL,3倍杠杆,入场价150,止盈180,止损140""做空AVAX 5倍杠杆,风险控制在投资组合的2%"
平仓操作
"平掉ETH多头仓位""BTC空头仓位止盈"
完整工作流程示例
以下是常见交易操作的强制性分步工作流程。请严格遵循这些步骤。
工作流程 1: 开立新仓位 (完整流程)
Step 1: GET /user-details
→ Extract: user_wallet (→ userAddress), ostium_agent_address (→ agentAddress)
→ Cache these for the session
Step 2: GET /symbols
→ Verify the user's requested token is available on Ostium
→ Extract exact symbol string and maxLeverage
→ Convert pair format to market token for /open-position:
"ETH/USD" -> "ETH"
Step 3: POST /api/lazy-trading/research (or GET /market-data or GET /price for current context)
→ Get trade context: market structure, momentum, support/resistance, catalysts, and current price
→ Present this data to the user:
"BTC is trading around $95,000 with bullish structure and clear support/resistance levels.
Do you want to proceed?"
Step 4: ASK the user for trade parameters
→ "Please confirm: collateral (USDC), leverage, long or short?"
→ "Would you like to set TP and SL? If so, what percentages?"
→ Wait for explicit user confirmation before proceeding
Step 5: POST /open-position
→ Use agentAddress and userAddress from Step 1
→ Use market, side, collateral, leverage from Step 4
→ IMPORTANT: Pass market as base token only (e.g. ETH), not pair format (ETH/USD)
→ SAVE the response: actualTradeIndex and entryPrice
Step 6 (if user wants TP/SL): POST /set-take-profit and/or POST /set-stop-loss
→ Use tradeIndex = actualTradeIndex from Step 5
→ Use entryPrice from Step 5
→ For pairIndex, use the symbol id from Step 2 or call /positions
→ Use takeProfitPercent/stopLossPercent from Step 4
Step 7: ASK — "Would you like to list this trade as alpha on the marketplace?"
→ If user says NO → Done.
→ If user says YES → Continue to Step 8.
→ Also ask: "What price in USDC would you like to charge?" (e.g. 5 USDC)
Step 8: POST /alpha/generate-proof
→ Body: { "tradeId": "{tradeId from Step 5}", "autoProcess": false }
→ tradeId comes from the /open-position response
→ autoProcess: false queues the proof for the worker (~3-5 min)
→ SAVE: proofId from the response
Step 9: Wait for proof verification
→ If autoProcess was true and response has status: "VERIFIED" → go to Step 10
→ If autoProcess was false or status is still PENDING/PROVING:
Poll GET /alpha/proof-status?proofId={proofId} every 10 seconds
→ Wait until status === "VERIFIED"
→ If status === "FAILED" → inform the user and stop
Step 10: POST /alpha/flag
→ Body: {
"proofId": "{proofId from Step 8}",
"priceUsdc": {price from Step 7},
"token": "{market from Step 5, e.g. ETH}",
"side": "{side from Step 5, e.g. long}",
"leverage": {leverage from Step 5}
}
→ Show user the response: listingId, tradeId, proofMetrics
→ "Your trade is now listed as alpha! Listing ID: {listingId}"
工作流程 2: 平掉现有仓位
Step 1: GET /user-details
→ Extract: user_wallet, ostium_agent_address
Step 2: POST /positions (address = user_wallet from Step 1)
→ List all open positions
→ Present them to the user if multiple: "You have 3 open positions: BTC long, ETH short, SOL long. Which one do you want to close?"
→ Extract the tradeIndex for the position to close
Step 3: POST /close-position
→ Use agentAddress and userAddress from Step 1
→ Use market and actualTradeIndex from Step 2
→ Show the user the closePnl from the response
工作流程 3: 为现有仓位设置止盈/止损
Step 1: GET /user-details
→ Extract: user_wallet, ostium_agent_address
Step 2: POST /positions (address = user_wallet from Step 1)
→ Find the target position
→ Extract: tradeIndex, entryPrice, pairIndex, side
Step 3: ASK the user
→ "Position: BTC long at $95,000. Current TP: none, SL: $85,500."
→ "What TP% and SL% would you like to set?"
Step 4: POST /set-take-profit and/or POST /set-stop-loss
→ Use ALL values from Steps 1-3 — NEVER guess any of them
工作流程 4: 检查投资组合与市场概览
Step 1: GET /user-details
→ Extract: user_wallet
Step 2: POST /balance (address = user_wallet)
→ Show the user their USDC and ETH balances
Step 3: POST /positions (address = user_wallet)
→ Show all open positions with PnL details
Step 4 (optional): GET /market-data
→ Show market conditions for tokens they hold
工作流程 5: 跟单另一个OpenClaw代理 (完整流程)
Step 1: GET /copy-traders?source=openclaw
→ Discover other OpenClaw Trader agents
→ Extract: creatorWallet from the trader you want to copy
→ Exclude your own wallet (`/user-details.user_wallet`) if it appears
→ IMPORTANT: This is a REQUIRED first step — you cannot call
/copy-trader-trades without an address from this endpoint
Step 2: GET /copy-trader-trades?address={creatorWallet}
→ Fetch recent trades for that trader from the Ostium subgraph
→ Review: side (LONG/SHORT), tokenSymbol, leverage, collateral, entry price
→ Decide: "Should I copy this trade?"
→ DEPENDENCY: The address param comes from Step 1 (creatorWallet or walletAddress)
Step 3: GET /user-details
→ Get YOUR OWN userAddress (user_wallet) and agentAddress (ostium_agent_address)
→ These are needed to execute your own trade
Step 4: POST /open-position
→ Mirror the trade from Step 2 using your own addresses from Step 3:
- market = tokenSymbol from the copied trade
- side = side from the copied trade (LONG/SHORT → long/short)
- collateral = decide based on your own risk tolerance
- leverage = match the copied trader's leverage or adjust
→ SAVE: actualTradeIndex and entryPrice from response
Step 5 (optional): POST /set-take-profit and/or POST /set-stop-loss
→ Use actualTradeIndex and entryPrice from Step 4
→ Match the copied trader's TP/SL ratios or set your own
依赖链总结:
/copy-traders → provides address → /copy-trader-trades → provides trade details
/user-details → provides your addresses → /open-position → copies the trade
自动化交易策略
Maxxit为不同市场条件提供专门的脚本。这些脚本需要通过命令行传递动态参数。
执行策略
- 动态参数: 脚本调用时必须包含
--symbol和--交易平台. - 代理责任:如果用户要求启动策略但未提供交易对符号(例如"BTC/USD")或交易平台(例如"AVANTIS"),代理必须在执行脚本前向用户询问缺失的信息。
- 示例命令:
python taker-strategy.py --symbol BTC/USD --venue AVANTIS
1. 激进接受方策略(高频交易 / 订单流)
- 脚本:
taker-strategy.py - 使用方法:
python taker-strategy.py --symbol <交易对> --venue <交易平台> - 逻辑概要:监控币安的"接受方买入比率"。当激进买家(接受方)相对于卖家的主导程度超过阈值(0.60)时,表明存在高确信度的动量变动信号。
- 最佳适用场景:在高成交量环境中捕捉快速价格变动(主动剥头皮交易)。
2. 均值回归策略(横盘 / 区间震荡)
- 脚本:
均值回归策略.py - 用法:
python mean-reversion-strategy.py --symbol <交易品种> --venue <交易场所> - 逻辑概要: 结合RSI(极度超卖/超买)与布林带触及。它识别价格很可能反弹回平均值的"衰竭"点。
- 最佳适用场景: 无明确趋势的区间震荡或横盘市场。
3. 波动率突破(动量)
- 脚本:
breakout-strategy.py - 用法:
python breakout-strategy.py --symbol <交易品种> --venue <交易场所> - 逻辑概要: 仅当价格突破标准差通道(布林带)并且波动率(ATR)正在增加时才入场交易。这可以过滤掉"虚假"突破。
- 最佳适用场景在一段盘整期后捕捉强劲趋势的开始。
4. VWAP交叉(机构动量)
- 脚本:
vwap-strategy.py - 用法:
python vwap-strategy.py --symbol <SYMBOL> --venue <VENUE> - 逻辑概要:使用成交量加权平均价格(VWAP)结合20周期指数移动平均线(EMA)。当价格同时高于VWAP和EMA时触发“做多”信号,表明成交量和时间加权动量均为正值。
- 最佳适用场景:日内动量交易,并通过成交量确认趋势强度。
Aster DEX(BNB链)端点
Aster DEX是BNB链上的永续期货交易所。当用户希望在BNB链上交易时,请使用Aster端点。Aster API采用API密钥 + 密钥认证(存储在服务器端)——您**不需要**
代理地址。您只需要用户地址从用户详情.
交易场所选择
| 交易场所 | 链 | 符号格式 | 需要认证 | 使用时机 |
|---|---|---|---|---|
| Ostium | Arbitrum(默认主网,明确请求时使用测试网) | BTC,ETH | 代理地址+用户地址 | 适用于大多数交易的默认选项 |
| Aster | BNB链(仅测试网) | BTCUSDT,ETHUSDT | 用户地址仅 | 当用户指定BNB链或Aster时 |
| Avantis | Base(仅主网) | 订单基础代币(例如BTC),交易对格式为符号/位置(例如BTC/USD) | agentAddress+userAddress | 当用户指定Base链或Avantis时 |
网络行为规则:默认情况下,不要要求用户为这些交易场所选择主网/测试网。除非用户明确要求测试网 / Arbitrum Sepolia,否则Ostium使用主网。Aster固定为测试网,Avantis固定为Base主网。
如何检查Aster是否已配置:在/user-details响应中,aster_configured: true表示用户已设置Aster API密钥。如果为false,请引导他们到maxxit.ai/openclaw设置Aster。
Aster 交易品种
Aster 使用币安风格的交易对格式:BTCUSDT、ETHUSDT等。如果你只传入BTC,API 会自动追加USDT。
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/aster/symbols" \
-H "X-API-KEY: ${MAXXIT_API_KEY}"
响应:
{
"success": true,
"symbols": [
{
"symbol": "BTCUSDT",
"baseAsset": "BTC",
"quoteAsset": "USDT",
"pricePrecision": 2,
"quantityPrecision": 3,
"contractType": "PERPETUAL",
"status": "TRADING"
}
],
"count": 50
}
Aster 价格
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/aster/price?token=BTC" \
-H "X-API-KEY: ${MAXXIT_API_KEY}"
响应:
{
"success": true,
"token": "BTC",
"symbol": "BTCUSDT",
"price": 95000.50
}
Aster 市场数据
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/aster/market-data?symbol=BTC" \
-H "X-API-KEY: ${MAXXIT_API_KEY}"
Aster 余额
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/aster/balance" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"userAddress": "0x..."
}'
请求体:
{
"userAddress": "0x..." // REQUIRED — from /user-details → user_wallet. NEVER guess.
}
响应:
{
"success": true,
"balance": 1000.50,
"availableBalance": 800.25,
"unrealizedProfit": 50.10
}
Aster 持仓
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/aster/positions" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"userAddress": "0x..."
}'
响应:
{
"success": true,
"positions": [
{
"symbol": "BTCUSDT",
"positionAmt": 0.01,
"entryPrice": 95000.0,
"markPrice": 96000.0,
"unrealizedProfit": 10.0,
"liquidationPrice": 80000.0,
"leverage": 10,
"side": "long"
}
],
"count": 1
}
Aster 历史记录(所有订单)
从 Aster 获取指定交易对的完整订单历史(包括活跃、已取消和已成交订单)。
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/aster/history" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"userAddress": "0x...",
"symbol": "BTC",
"limit": 100
}'
请求体:
{
"userAddress": "0x...", // REQUIRED — from /user-details → user_wallet
"symbol": "BTC", // REQUIRED — token or full symbol (BTC or BTCUSDT)
"limit": 100, // Optional — default depends on exchange (max 1000)
"orderId": 12345, // Optional — fetch from this orderId onward
"startTime": 1709251200000, // Optional — ms timestamp
"endTime": 1709856000000 // Optional — ms timestamp
}
POST /api/lazy-trading/programmatic/aster/history现在代理到 Aster 的/fapi/v3/allOrders当用户在Aster上询问“所有旧交易/订单”、“订单历史”或“过往订单”时,使用此端点。
Aster 开仓
📋 LLM 预调用检查清单 — 在调用此端点前,向用户询问以下问题:
- 交易品种: “您想交易哪种代币?”(例如:BTC、ETH、SOL)
- 方向: “做多还是做空?”
- 数量: “您想交易多少[代币]?” — 以基础资产单位获取答案(例如
0.01 BTC、0.5 ETH)。- 杠杆: “使用多少倍杠杆?(例如:10倍)”
- 订单类型: “市价单还是限价单?”(默认:市价单)。如果选择限价单,还需询问限价。
Aster 要求提供开仓
数量(基础资产)。请勿使用抵押品。 未经确认,切勿调用此端点。数量以基础资产单位计。
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/aster/open-position" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"userAddress": "0x...",
"symbol": "BTC",
"side": "long",
"quantity": 0.01,
"leverage": 10
}'
请求体:
{
"userAddress": "0x...", // REQUIRED — from /user-details → user_wallet. NEVER guess.
"symbol": "BTC", // REQUIRED — Token name or full symbol (BTCUSDT). ASK the user.
"side": "long", // REQUIRED — "long" or "short". ASK the user.
"quantity": 0.01, // REQUIRED — Position size in BASE asset (e.g. 0.01 BTC). ASK the user.
"leverage": 10, // Optional — Leverage multiplier. ASK the user.
"type": "MARKET", // Optional — "MARKET" (default) or "LIMIT". ASK the user.
"price": 95000 // Required only for LIMIT orders. ASK the user if type is LIMIT.
}
⚠️重要提示:
数量必须始终以基础资产为单位指定(例如,0.01
表示 0.01 BTC)。
如果用户提供了 USDT/抵押物金额,请要求他们提供确切的代币数量。
在此工作流程中,不要将抵押物转换为数量。
{
"success": true,
"orderId": 12345678,
"symbol": "BTCUSDT",
"side": "BUY",
"status": "FILLED",
"avgPrice": "95000.50",
"executedQty": "0.010",
"message": "Position opened: long BTCUSDT"
}
响应(重要 — 保存这些值):
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/aster/close-position" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"userAddress": "0x...",
"symbol": "BTC"
}'
Aster 平仓
{
"userAddress": "0x...", // REQUIRED
"symbol": "BTC", // REQUIRED
"quantity": 0.005 // Optional — omit to close full position
}
请求体:
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/aster/set-take-profit" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"userAddress": "0x...",
"symbol": "BTC",
"takeProfitPercent": 0.30,
"entryPrice": 95000,
"side": "long"
}'
Aster 设置止盈
{
"userAddress": "0x...",
"symbol": "BTC",
"stopPrice": 123500 // Option A: exact trigger price
}
{
"userAddress": "0x...",
"symbol": "BTC",
"takeProfitPercent": 0.30, // Option B: percentage (0.30 = 30%)
"entryPrice": 95000,
"side": "long"
}
请求体(两种选项):
Aster 设置止损
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/aster/set-stop-loss" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"userAddress": "0x...",
"symbol": "BTC",
"stopLossPercent": 0.10,
"entryPrice": 95000,
"side": "long"
}'
与止盈模式相同:
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/aster/change-leverage" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"userAddress": "0x...",
"symbol": "BTC",
"leverage": 20
}'
Aster 更改杠杆
| Aster 参数依赖关系图 | 如何获取 | 用户地址 |
|---|---|---|
/user-details | →user_walletGET /user-details | aster_configured |
/user-details | →aster_configuredGET /user-details | (必须为true)symbol |
用户指定代币 | 用户输入(自动解析: | BTC→BTCUSDT)side |
用户指定 | "做多"或"做空""short" | 用户输入(必填) |
数量 | 用户以基础资产单位指定(例如0.01 BTC) | 用户输入(必填)。如果用户提供USDT/抵押品金额,请改为询问数量。工作流中不进行计算。 |
杠杆 | 用户指定 | 用户输入 |
入场价格 | /aster/positions→入场价格 | 来自仓位数据 |
止损价格 | 用户指定或根据百分比计算 | 用户输入或计算得出 |
Aster工作流:在BNB链上开仓
Step 1: GET /user-details
→ Extract: user_wallet
→ Check: aster_configured == true (if false, tell user to set up Aster at maxxit.ai/openclaw)
Step 2: GET /aster/symbols
→ Verify the token is available on Aster
Step 3: GET /aster/price?token=BTC
→ Get current price, present to user
Step 4: ASK the user for ALL trade parameters
→ "Which token?" (e.g. BTC, ETH, SOL)
→ "Long or short?"
→ "How much [TOKEN] do you want to buy/sell?" — collect answer in BASE asset units (e.g. 0.01 BTC)
• If user gives a USDT/collateral amount, ask them to provide token quantity instead.
→ "Leverage? (e.g. 10x)"
→ "Market or limit order?" — if LIMIT, also ask for the limit price
Step 5: POST /aster/open-position
→ Use userAddress from Step 1
→ Use symbol, side, quantity (base asset), leverage from Step 4
→ SAVE orderId and avgPrice from response
Step 6 (if user wants TP/SL): POST /aster/set-take-profit and/or POST /aster/set-stop-loss
→ Use entryPrice = avgPrice from Step 5
→ Use side from Step 4
→ Ask user for takeProfitPercent / stopLossPercent (or exact stopPrice)
Aster工作流:平仓
Step 1: GET /user-details → Extract user_wallet
Step 2: POST /aster/positions (userAddress = user_wallet)
→ Show positions to user, let them pick which to close
Step 3: POST /aster/close-position
→ Pass userAddress and symbol
→ Omit quantity to close full position
Avantis DEX(Base链)端点
Avantis DEX是Base链上的永续期货交易所。当用户希望在Base链上交易时,请使用Avantis端点。Avantis使用基于委托的认证(与Ostium模式相同)——您需要同时获取
代理地址和用户地址,这些信息来自/user-details接口。
如何检查Avantis是否已配置:使用/user-details接口并检查deployment.enabled_venues字段。如果该字段包含"AVANTIS",则表示当前部署已启用Avantis。若未包含,请引导用户前往maxxit.ai/openclaw启用Avantis。
Avantis交易对符号
Avantis交易对以货币对格式返回(例如BTC/USD、ETH/USD)。API端点映射该服务的/markets路由。
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/avantis/symbols" \
-H "X-API-KEY: ${MAXXIT_API_KEY}"
Avantis 获取代币价格
{
"success": true,
"markets": [
{
"pairIndex": 0,
"symbol": "BTC/USD",
"group": "crypto"
},
{
"pairIndex": 1,
"symbol": "ETH/USD",
"group": "crypto"
}
],
"count": 50
}
获取 Avantis 上特定代币的最新价格。
查询参数:
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/avantis/price?token=BTC" \
-H "X-API-KEY: ${MAXXIT_API_KEY}"
参数
| 类型 | 必需 | 描述 | 代币 |
|---|---|---|---|
字符串 | 是 | 代币符号或交易对(例如 | BTC或BTC/USD)响应: |
Avantis 余额
{
"success": true,
"token": "BTC",
"market": "BTC/USD",
"pairIndex": 0,
"price": 95000.12
}
请求体:
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/avantis/balance" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"userAddress": "0x..."
}'
响应:
{
"userAddress": "0x..." // REQUIRED — from /user-details → user_wallet. NEVER guess.
}
Avantis 持仓
{
"success": true,
"usdcBalance": "1500.25",
"ethBalance": "0.05"
}
响应:
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/avantis/positions" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"userAddress": "0x...",
"agentAddress": "0x..."
}'
Avantis 开仓
{
"success": true,
"positions": [
{
"market": "BTC/USD",
"marketFull": "BTC/USD",
"side": "long",
"collateral": 100.0,
"entryPrice": 95000.0,
"leverage": 10.0,
"tradeId": "0:2",
"tradeIndex": 2,
"pairIndex": 0
}
],
"totalPositions": 1
}
⚠️ 依赖项:
代理地址
→ 来自→ from用户详情→代理地址入口(共享代理钱包;切勿猜测)用户地址→ 来自/用户详情→用户钱包(切勿猜测)市场→ 通过验证/avantis/符号。仅使用基础代币(例如BTC,而非BTC/USD)方向,抵押品,杠杆→明确询问用户Avantis 使用
抵押品(USDC金额),类似于Ostium。止盈/止损可以在开仓时设置(
takeProfitPercent/stopLossPercent)或稍后通过/avantis/update-sl-tp进行更新。
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/avantis/open-position" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"agentAddress": "0x...",
"userAddress": "0x...",
"market": "BTC",
"side": "long",
"collateral": 100,
"leverage": 10,
"takeProfitPercent": 0.30,
"stopLossPercent": 0.10
}'
请求正文:
{
"agentAddress": "0x...", // REQUIRED — from /user-details → ostium_agent_address (shared wallet). NEVER guess.
"userAddress": "0x...", // REQUIRED — from /user-details → user_wallet. NEVER guess.
"market": "BTC", // REQUIRED — Base token only (e.g. "ETH", not "ETH/USD")
"side": "long", // REQUIRED — "long" or "short". ASK the user.
"collateral": 100, // REQUIRED — Collateral in USDC. ASK the user.
"leverage": 10, // Optional (default: 10). ASK the user.
"takeProfitPercent": 0.30, // Optional — set TP at open. ASK the user.
"stopLossPercent": 0.10 // Optional — set SL at open. ASK the user.
}
响应:
{
"success": true,
"txHash": "0x...",
"actualTradeIndex": 5,
"entryPrice": 95000.0,
"slSet": true,
"tpSet": true,
"message": "Trade submitted on Avantis",
"result": {
"market": "BTC",
"side": "long",
"collateral": 100,
"leverage": 10,
"slConfigured": true,
"tpConfigured": true,
"tpPrice": 123500.0,
"slPrice": 85500.0
}
}
Avantis平仓
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/avantis/close-position" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"agentAddress": "0x...",
"userAddress": "0x...",
"market": "BTC"
}'
请求正文:
{
"agentAddress": "0x...", // REQUIRED — from /user-details. NEVER guess.
"userAddress": "0x...", // REQUIRED — from /user-details. NEVER guess.
"market": "BTC", // REQUIRED — Token symbol
"tradeId": "0:2", // Optional — preferred composite ID from /avantis/positions (pairIndex:tradeIndex)
"actualTradeIndex": 2 // Recommended — from /avantis/positions → tradeIndex
}
Avantis更新止损/止盈
止盈/止损可以在开仓时设置(通过在开仓时使用
takeProfitPercent/stopLossPercent),或在开仓后使用此端点进行更新。
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/avantis/update-sl-tp" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"agentAddress": "0x...",
"userAddress": "0x...",
"market": "BTC",
"takeProfitPercent": 0.30,
"stopLossPercent": 0.10
}'
请求正文:
{
"agentAddress": "0x...", // REQUIRED — from /user-details. NEVER guess.
"userAddress": "0x...", // REQUIRED — from /user-details. NEVER guess.
"market": "BTC", // REQUIRED — Token symbol
"tradeIndex": 0, // Optional — specific trade index from /avantis/positions
"takeProfitPrice": 100000, // Absolute TP price (use this OR takeProfitPercent)
"stopLossPrice": 80000, // Absolute SL price (use this OR stopLossPercent)
"takeProfitPercent": 0.30, // TP as % from entry (0.30 = 30%). Use this OR takeProfitPrice.
"stopLossPercent": 0.10 // SL as % from entry (0.10 = 10%). Use this OR stopLossPrice.
}
响应:
{
"success": true,
"txHash": "0x...",
"message": "TP/SL updated successfully",
"result": {
"market": "BTC",
"tradeIndex": 0,
"entryPrice": 95000.0,
"takeProfitPrice": 123500.0,
"stopLossPrice": 85500.0,
"side": "long"
}
}
Avantis交易历史
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/history" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"venue": "AVANTIS",
"userAddress": "0x...",
"count": 50
}'
请求正文:
{
"venue": "AVANTIS", // REQUIRED for Avantis via /history
"userAddress": "0x...", // REQUIRED — the trader's wallet address
"agentAddress": "0x...", // Alternative to userAddress
"count": 50 // Optional — max results (default: 50)
}
响应:
{
"success": true,
"venue": "AVANTIS",
"source": "avantis_api_v2_history",
"history": [
{
"id": "69a6e3b7...",
"tradeId": "1:0",
"market": "BTC/USD",
"pairIndex": 1,
"tradeIndex": 0,
"side": "long",
"collateralUsdc": 9.955,
"positionSizeUsdc": 1772.544045,
"leverage": 10.0,
"entryPrice": 67120.23805881,
"closePrice": 67014.2049318,
"usdcSentToTrader": 9.765164,
"closedAt": "2026-03-03T13:35:51.000Z",
"timestamp": 1709000000,
"grossPnlUsdc": -0.144682
}
],
"count": 4
}
Avantis参数依赖图
| 参数 | 来源 | 获取方式 |
|---|---|---|
用户地址 | /user-details→user_wallet | GET /user-details |
代理地址 | /user-details→ostium_agent_address | GET /user-details |
avantis_enabled | /user-details→deployment.enabled_venues包含AVANTIS | GET /user-details |
市场 | 用户指定代币 | 用户输入(例如BTC、ETH) |
侧 | 用户指定"做多"或"做空" | 用户输入(必填) |
抵押品 | 用户指定USDC金额(必须满足交易场所最低要求) | 用户输入(必填) |
杠杆 | 用户指定 | 用户输入 |
交易ID | /avantis/positions→交易ID(<交易对索引>:<交易索引>) | 首选唯一开仓交易键 |
交易索引 | /avantis/positions→交易索引 | 来自持仓数据 |
Avantis 工作流:在 Base 链上开仓
Step 1: GET /user-details
→ Extract: user_wallet, ostium_agent_address (shared agent wallet)
→ Check: deployment.enabled_venues includes AVANTIS (if not, tell user to enable Avantis at maxxit.ai/openclaw)
Step 2: GET /avantis/symbols
→ Verify the token is available on Avantis
Step 3: ASK the user for ALL trade parameters
→ "Which token?" (e.g. BTC, ETH)
→ "Long or short?"
→ "How much USDC collateral?"
→ "Leverage? (e.g. 10x)"
→ "Would you like to set TP/SL? If so, what percentages?"
Step 4: POST /avantis/open-position
→ Use agentAddress and userAddress from Step 1
→ Use market, side, collateral, leverage from Step 3
→ SAVE: tradeIndex and entryPrice from response
Avantis 工作流:平仓
Step 1: GET /user-details → Extract user_wallet, ostium_agent_address (shared agent wallet)
Step 2: POST /avantis/positions (userAddress + agentAddress)
→ Show positions to user, let them pick which to close
→ Extract tradeIndex
Step 3: POST /avantis/close-position
→ Pass agentAddress, userAddress, market
→ Optionally pass actualTradeIndex
Zerodha(印度股票)端点
Zerodha 是一家印度股票经纪商,支持 NSE 和 BSE 的股票交易。当用户希望交易印度股票、提及 NSE/BSE,或提到“印度股票”、“股票”或“Zerodha”时,请使用 Zerodha 端点。
何时使用 Zerodha
- 用户希望在 NSE 或 BSE 上交易印度股票
- 用户提及“印度股票”、“股票”、“NSE”、“BSE”、“Zerodha”或“Kite”
- 用户询问其 Zerodha 投资组合、持仓或头寸
- 用户希望在印度交易所下单、修改或取消订单
- 用户希望获取印度股票的工具列表或市场数据
货币惯例
- 在印度市场相关的对话中,请以₹
- 呈现价格、持仓、投资组合价值、目标价和止损价
在面向用户的常规回复中,优先使用₹ - 当上下文涉及 Zerodha、NSE、BSE 或印度股票时,请勿默认使用 USD
止盈/止损与GTT指导
- 当用户想为Zerodha持仓设置止盈或止损时,请确认他们是否要下GTT订单。
- 需要时可简要解释GTT:GTT(触发前有效)是Zerodha的一种触发订单,在触发条件满足或用户取消前始终保持有效,通常用于自动化现金市场持仓的目标价和止损执行。
- 如果用户明确要求GTT,请直接使用Zerodha的GTT流程。
- 如果用户要求设置止盈/止损但未提及GTT,请先询问,而非假设他们需要普通订单或GTT触发订单。
交易场所路由
| 关键词 | 路由 |
|---|---|
| "印度股票"、"NSE"、"BSE"、"股票"、"Zerodha"、"Kite" | Zerodha端点 |
环境变量
| 变量 | 描述 | 来源 |
|---|---|---|
KITE_API_KEY | Zerodha Kite Connect API密钥 | SSM(在OpenClaw界面中设置) |
KITE_API_SECRET | Zerodha Kite Connect API密钥 | SSM(在OpenClaw界面中设置) |
KITE_ACCESS_TOKEN | 短期访问令牌(每日过期) | SSM(OAuth后自动存储) |
KITE_USER_NAME | 用于状态/界面的Zerodha显示名称 | SSM(OAuth后自动存储) |
授权预检
在进行任何Zerodha交易调用前,检查会话有效性:
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/zerodha/session" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "X-KITE-API-KEY: ${KITE_API_KEY}" \
-H "X-KITE-ACCESS-TOKEN: ${KITE_ACCESS_TOKEN}"
如果已认证:false或已过期:true,则告知用户:
"您的Zerodha会话已过期。请在maxxit.ai/openclaw的OpenClaw页面重新认证。"
重要提示:所有Zerodha请求必须包含:
X-API-KEY标头(常规Maxxit认证)X-KITE-API-KEY标头X-KITE-ACCESS-TOKEN标头- 对于钱包身份验证,请先调用
/user-details并使用user_wallet。Zerodha不要求ostium_agent_address或lazy_trading_ready: true。
Zerodha 接口端点
所有基础路径:${MAXXIT_API_URL}/api/lazy-trading/programmatic/zerodha/
GET /zerodha/login
为用户生成一个Zerodha登录URL。
重要提示:
- 不要告知用户直接打开一个裸Kite URL,例如
https://kite.zerodha.com/connect/login?api_key=...&v=3. - 登录流程必须保留 Maxxit 用户上下文,以便回调可以将 Zerodha 会话存储到正确的钱包。
- 当用户请求登录链接时,请将
login_url原样返回给用户,该链接由 Maxxit API 提供。此 URL 可能使用 Kite 域名,但必须在redirect_params中包含 Maxxit 用户交接信息。 - 首选流程:
- 调用
GET /user-details来解析user_wallet。 - 使用
X-API-KEY调用GET /zerodha/login。 - 将返回的
login_url发送给用户。
- 调用
- 请勿手动构建
?userWallet=<wallet>&redirect=1正常技能流程中的URL。 - 如果您呈现返回的
登录链接,仅在它包含用户移交时使用,例如redirect_params=userWallet%3D...。
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/zerodha/login" \
-H "X-API-KEY: ${MAXXIT_API_KEY}"
响应:
{
"success": true,
"login_url": "https://kite.zerodha.com/connect/login?api_key=5wh5hi6ky7y8s6g4&v=3&redirect_params=userWallet%3D0x796a837c78326ba693847deebd7811d6b6854c56",
"message": "Open the login_url in your browser to authenticate with Zerodha."
}
GET /zerodha/session
检查Zerodha会话状态。如果会话有效,则返回authenticated: true。
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/zerodha/session" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "X-KITE-API-KEY: ${KITE_API_KEY}" \
-H "X-KITE-ACCESS-TOKEN: ${KITE_ACCESS_TOKEN}"
DELETE /zerodha/session
使Zerodha会话失效并从SSM中移除令牌。
GET /zerodha/portfolio
获取投资组合数据。使用?type=profile|holdings|positions|margins来选择特定数据。默认获取所有数据。
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/zerodha/portfolio" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "X-KITE-API-KEY: ${KITE_API_KEY}" \
-H "X-KITE-ACCESS-TOKEN: ${KITE_ACCESS_TOKEN}"
带过滤器:
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/zerodha/portfolio?type=holdings" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "X-KITE-API-KEY: ${KITE_API_KEY}" \
-H "X-KITE-ACCESS-TOKEN: ${KITE_ACCESS_TOKEN}"
GET /zerodha/orders
列出所有订单。使用?orderId=<id>用于查询特定订单历史。
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/zerodha/orders" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "X-KITE-API-KEY: ${KITE_API_KEY}" \
-H "X-KITE-ACCESS-TOKEN: ${KITE_ACCESS_TOKEN}"
POST /zerodha/orders
下达新订单。
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/zerodha/orders" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "X-KITE-API-KEY: ${KITE_API_KEY}" \
-H "X-KITE-ACCESS-TOKEN: ${KITE_ACCESS_TOKEN}" \
-H 'Content-Type: application/json' \
-d '{
"variety": "regular",
"exchange": "NSE",
"tradingsymbol": "RELIANCE",
"transaction_type": "BUY",
"quantity": 1,
"product": "CNC",
"order_type": "MARKET"
}'
必填字段: 交易所、交易代码、交易类型、数量、产品类型、订单类型
常见取值:
| 字段 | 取值 |
|---|---|
订单种类 | 常规、后市场订单、条件订单、冰山订单、集合竞价 |
交易所 | 印度国家证券交易所,孟买证券交易所,NSE期货与期权,BSE期货与期权,信用违约互换,印度多种商品交易所 |
交易类型 | 买入,卖出 |
产品类型 | 现金交割,常规,盘中交易,保证金交易融资 |
订单类型 | 市价单,限价单,SL,SL-M |
有效期 | 当日有效,立即或取消,存活时间 |
如何向普通交易者解释Zerodha订单字段:
| 字段 | 值 | 对交易者的含义 |
|---|---|---|
订单类型 | 常规单 | 在交易时段内下达的标准交易所订单。默认使用此类型,除非用户要求更具体的订单类型。 |
订单类型 | 盘后单 | 在交易时段外下达的订单,以便在下一个交易时段排队执行。 |
订单类型 | 保护单 | 一种日内交易订单,必须附带强制止损。仅当用户明确需要带有内置风险止损的杠杆日内订单时使用。 |
订单类型 | 冰山订单 | 冰山订单。将一个大订单拆分成多个较小的子订单,从而不会一次性全部发送。适用于数量超过冻结限制或需要减少可见市场影响的情况。 |
品种 | 竞价 | 竞价订单。用于交易所的竞价时段,不适用于正常的现金市场交易。仅在用户明确希望参与竞价时使用。 |
订单类型 | 市价单 | 以当前可获得的最佳价格立即买入或卖出。优先考虑执行,而非精确的价格。 |
订单类型 | 限价单 | 仅在指定价格或更优价格时执行。优先考虑价格控制,而非成交的确定性。 |
订单类型 | 止损限价单 | 止损限价订单。一旦触发条件满足,Zerodha会下一个限价单。提供价格控制,但在快速波动时订单可能无法成交。 |
订单类型 | 止损市价单 | 止损市价订单。一旦触发条件满足,Zerodha会下一个市价单。更有利于确保平仓,但成交价格可能出现滑点。 |
产品 | 数控 | 现金自运。您希望持有的股票的标准交割权益订单,通常适用于国家证券交易所/孟买证券交易所的现货市场。 |
产品 | 正常订单 | 通常用于期货和期权展期头寸以及其他非日内衍生品敞口的常见订单类型。 |
产品 | 日内保证金平仓 | 仅限日内的产品,通常用于期货/期权或当日现货币交易,其头寸不打算过夜持有。 |
产品 | 保证金交易融资 | 由经纪商提供资金的股票展期头寸。仅在用户明确要求使用MTF且其账户支持该功能时使用。 |
有效期 | 当日有效 | 订单在当前交易时段内保持有效,除非成交或取消。 |
有效期 | 立即成交或取消 | 能够立即成交的部分将执行;其余部分将立即取消。 |
有效期 | 限时订单 | 存活时间。订单仅在指定的分钟数内保持活跃,使用validity_ttl。 |
market_protection | 0 | 无市场保护。默认行为。 |
market_protection | 0 - 100 | 针对市价和止损市价执行风格的自定义市场保护百分比。有助于限制执行可以追逐价格的程度。例如:2表示2%。 |
market_protection | -1 | 由系统根据Zerodha规则自动选择的市场保护。 |
autoslice | true | 当数量超过冻结限制时,自动将大订单拆分为多个切片。 |
autoslice | false | 不进行自动切片。默认行为。 |
此路由支持的额外订单参数:
validity_ttl:分钟数,表示有效期是TTLiceberg_legs:冰山订单的子订单数量iceberg_quantity:每个冰山子订单的数量auction_number:下单拍卖订单时必需填写market_protection:合格订单的市场保护设置autoslice:Zerodha是否应自动拆分超量订单
代理指导:
- 默认设置为
variety: regular、validity: DAY,以及MARKET或LIMIT根据用户的要求。 - 不要选择
条件单、冰山单、拍卖单、多边交易设施单、时间限制单、市场保护或自动切片单,除非用户明确要求该行为或对于他们所描述的订单明显必要。 - 如果用户用简单英语提问,在提交订单前,将意图翻译成这些字段并简要解释权衡。
PUT /zerodha/orders?orderId=<id>
修改现有订单。
curl -L -X PUT "${MAXXIT_API_URL}/api/lazy-trading/programmatic/zerodha/orders?orderId=ORD123" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "X-KITE-API-KEY: ${KITE_API_KEY}" \
-H "X-KITE-ACCESS-TOKEN: ${KITE_ACCESS_TOKEN}" \
-H 'Content-Type: application/json' \
-d '{"variety": "regular", "price": 2500, "order_type": "LIMIT"}'
DELETE /zerodha/orders?orderId=<id>
取消订单。
curl -L -X DELETE "${MAXXIT_API_URL}/api/lazy-trading/programmatic/zerodha/orders?orderId=ORD123" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "X-KITE-API-KEY: ${KITE_API_KEY}" \
-H "X-KITE-ACCESS-TOKEN: ${KITE_ACCESS_TOKEN}" \
-H 'Content-Type: application/json' \
-d '{"variety": "regular"}'
GET /zerodha/gtt
列出所有GTT触发条件。使用?triggerId=<id>来获取特定的触发条件。
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/zerodha/gtt" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "X-KITE-API-KEY: ${KITE_API_KEY}" \
-H "X-KITE-ACCESS-TOKEN: ${KITE_ACCESS_TOKEN}"
POST /zerodha/gtt
设置一个新的GTT触发条件。
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/zerodha/gtt" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "X-KITE-API-KEY: ${KITE_API_KEY}" \
-H "X-KITE-ACCESS-TOKEN: ${KITE_ACCESS_TOKEN}" \
-H 'Content-Type: application/json' \
-d '{
"trigger_type": "two-leg",
"tradingsymbol": "SBIN",
"exchange": "NSE",
"trigger_values": [800, 840],
"last_price": 835,
"orders": [
{
"transaction_type": "SELL",
"quantity": 1,
"product": "CNC",
"order_type": "LIMIT",
"price": 840
},
{
"transaction_type": "SELL",
"quantity": 1,
"product": "CNC",
"order_type": "LIMIT",
"price": 800
}
]
}'
必填字段: trigger_type、tradingsymbol、exchange、trigger_values、last_price、orders
规则:
trigger_type: "single"要求恰好有1个trigger_values项目和1个订单trigger_type: "two-leg"要求恰好有2个trigger_values项目和2个订单
PUT /zerodha/gtt?triggerId=<id>
修改一个现有的GTT(条件单)触发条件。
curl -L -X PUT "${MAXXIT_API_URL}/api/lazy-trading/programmatic/zerodha/gtt?triggerId=219118727" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "X-KITE-API-KEY: ${KITE_API_KEY}" \
-H "X-KITE-ACCESS-TOKEN: ${KITE_ACCESS_TOKEN}" \
-H 'Content-Type: application/json' \
-d '{
"trigger_type": "two-leg",
"tradingsymbol": "SBIN",
"exchange": "NSE",
"trigger_values": [800, 860],
"last_price": 837,
"orders": [
{
"transaction_type": "SELL",
"quantity": 1,
"product": "CNC",
"order_type": "LIMIT",
"price": 860
},
{
"transaction_type": "SELL",
"quantity": 1,
"product": "CNC",
"order_type": "LIMIT",
"price": 800
}
]
}'
DELETE /zerodha/gtt?triggerId=<id>
删除一个现有的GTT(条件单)触发条件。
curl -L -X DELETE "${MAXXIT_API_URL}/api/lazy-trading/programmatic/zerodha/gtt?triggerId=219118727" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "X-KITE-API-KEY: ${KITE_API_KEY}" \
-H "X-KITE-ACCESS-TOKEN: ${KITE_ACCESS_TOKEN}"
GET /zerodha/instruments
获取可用的交易品种。使用?exchange=NSE|BSE|NFO|BFO|CDS|MCX进行筛选。
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/zerodha/instruments?exchange=NSE" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "X-KITE-API-KEY: ${KITE_API_KEY}" \
-H "X-KITE-ACCESS-TOKEN: ${KITE_ACCESS_TOKEN}"
Zerodha工作流程:交易印度股票
Step 1: GET /zerodha/session
→ Check if authenticated. If not → tell user to re-auth on OpenClaw page.
Step 2: GET /user-details
→ Extract: user_wallet
→ Ignore lazy_trading_ready / ostium_agent_address for Zerodha flows
Step 3: GET /zerodha/instruments?exchange=NSE
→ Verify the symbol exists on the exchange.
Step 4: GET /zerodha/portfolio?type=holdings
→ Show current holdings and positions to user.
Step 5: ASK user for trade parameters
→ Exchange (NSE/BSE), symbol, BUY/SELL, quantity, product (CNC/MIS), order type
Step 6: POST /zerodha/orders
→ Place the order with confirmed parameters.
Step 7: GET /zerodha/orders?orderId=<id>
→ Verify order status.
Zerodha错误处理
| 状态码 | 含义 |
|---|---|
| 401 | 会话已过期。请告知用户重新认证。 |
| 400 | 参数缺失或无效。 |
| 405 | HTTP方法错误。 |
| 500 | 内部错误或Zerodha API故障。 |
无需信任的ZK验证交易信号。生产者生成证明并将头寸标记为Alpha信号;消费者通过承诺发现代理,通过x402购买Alpha信号,验证内容并执行。
基础路径: ${MAXXIT_API_URL}/api/lazy-trading/programmatic/alpha/*
认证: X-API-KEY请求头(与其他端点相同)。
支付:在Arbitrum Sepolia(测试网)或Arbitrum One(主网)上使用链上USDC。
消费Alpha信号的前提条件:
- 用户必须已完成Lazy Trading设置(代理已部署)——
/user-details接口必须返回ostium_agent_address。/pay端点使用此代理发送USDC;若未设置,/pay将返回400错误。 - 代理钱包必须持有足够的USDC以支付挂牌价格。如果不足,
/pay将返回402,并附带所需和可用的金额信息——通知用户给代理地址充值。
Alpha端点摘要
| 端点 | 方法 | 目的 |
|---|---|---|
/alpha/agents | GET | 发现具有已验证指标(承诺金、胜率、总盈亏)的代理。查询参数:最小胜率、最小交易数、数量限制。 |
/alpha/listings | GET | 浏览活跃的alpha挂牌(元数据+价格,不含交易内容)。查询参数:承诺金,最高价格,限制. |
/alpha/purchase/:listingId | GET | 第一阶段(无X-Payment请求头): 返回 402 状态码及支付详情。第二阶段(包含X-Payment: txHash请求头): 在链上验证,返回 alpha。 |
/alpha/pay/:listingId | POST | 支付辅助接口: 从您的代理地址在链上发送 USDC。返回交易哈希 (txHash)。在第一阶段和第二阶段之间调用。 |
/alpha/verify | POST | 请求体:{ listingId, content }. 验证购买内容哈希是否与承诺匹配。 |
/alpha/execute | POST | 请求体:{ alphaContent, agentAddress, userAddress, collateral, leverageOverride? }. 在交易场所执行alpha交易,交易场所来自alphaContent.venue(OSTIUM或AVANTIS). |
/alpha/generate-proof | POST | (生产者)生成交易表现的ZK证明。请求体:`{ venue?: "OSTIUM" |
/alpha/proof-status | GET | (生产者)检查证明处理状态。查询参数:proofId. |
/alpha/my-proof | GET | (生产者)最新的证明状态和指标。 |
/alpha/flag | POST | (生产者)请求体:{ proofId, priceUsdc, token, side, leverage? }。使用 generate-proof 中的证明 ID 将已验证的交易列为 alpha。 |
交易场所/交易参考说明:
tradeId对于交易场所:"OSTIUM"应为交易索引(例如:"123")。- 对于
交易场所:"AVANTIS",使用来自/avantis/positions的 tradeId,格式为:"<pairIndex>:<tradeIndex>"(例如:"1:0")。 - 在内部,证明/列表存储为带前缀的交易参考:
<VENUE>:<ID>(例如,OSTIUM:123,AVANTIS:1:0).
x402 购买流程的工作原理(3个API调用)
⚠️ 关键提示:要购买alpha内容,您必须严格按照此顺序调用这3个端点。请勿跳过步骤。
/pay端点会在服务器端处理所有钱包操作——您不需要私钥。
Step A: GET /alpha/purchase/{listingId} → 402 + paymentDetails
Step B: POST /alpha/pay/{listingId} → { txHash }
Step C: GET /alpha/purchase/{listingId} → 200 + alpha content
+ Header: X-Payment: {txHash from Step B}
步骤 A — 获取支付详情:
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/alpha/purchase/{listingId}" \
-H "X-API-KEY: ${MAXXIT_API_KEY}"
响应:402,附带paymentDetails.price、paymentDetails.payTo、paymentDetails.network。
如果响应是200:表示您已拥有此列表项——alpha内容将直接返回,请跳至步骤4。
步骤 B — 发送USDC(服务器处理所有事务):
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/alpha/pay/{listingId}" \
-H "X-API-KEY: ${MAXXIT_API_KEY}"
响应:200附带交易哈希、发送方、接收方、金额。
如果已支付:true:直接使用返回的交易哈希。
如果402:USDC余额不足 — 响应包含所需和可用金额。
步骤C — 获取alpha内容:
curl -L -X GET "${MAXXIT_API_URL}/api/lazy-trading/programmatic/alpha/purchase/{listingId}" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "X-Payment: {txHash from Step B}"
响应:200附带alpha对象(代币,方向,杠杆,交易场所,入场价格),内容哈希值,支付收据。
从步骤C中保存: 阿尔法,内容哈希值,列表ID——用于/验证和/执行。
传递内容必须与接收时完全一致:对于/alpha/verify,其内容字段必须是确切的阿尔法来自步骤C的对象。不要修改键、值或键的顺序——哈希是通过排序后的键计算的,任何更改都将导致验证失败。
Alpha 依赖链
/alpha/agents → commitment
/alpha/listings → listingId (needs commitment)
/alpha/purchase → 402 paymentDetails (needs listingId)
/alpha/pay → txHash (needs listingId)
/alpha/purchase → alpha content (needs listingId + txHash in X-Payment header)
/alpha/verify → verified (needs listingId + alpha content)
/user-details → agentAddress, userAddress
/alpha/execute → trade result (needs alpha + addresses + collateral)
工作流:消费 Alpha(完整流程)
Step 1: GET /alpha/agents
→ Pick an agent by commitment, winRate, totalPnl
→ SAVE: commitment
Step 2: GET /alpha/listings?commitment={commitment}
→ Browse listings, pick one
→ SAVE: listingId
Step 3a: GET /alpha/purchase/{listingId}
→ If 200: already purchased, skip to Step 4
→ If 402: need to pay → go to Step 3b
Step 3b: POST /alpha/pay/{listingId}
→ Server sends USDC from your agent to the producer
→ If 402: insufficient USDC balance → fund your agent wallet and retry
→ If alreadyPaid: use the returned txHash
→ SAVE: txHash
Step 3c: GET /alpha/purchase/{listingId}
→ Header: X-Payment: {txHash from Step 3b}
→ SAVE: alpha, contentHash, listingId
Step 4: POST /alpha/verify
→ Body: { "listingId": "...", "content": { ...alpha from Step 3c } }
→ Check: verified === true
Step 5: GET /user-details
→ Extract: user_wallet → userAddress
→ Extract: ostium_agent_address → agentAddress
Step 6: POST /alpha/execute
→ Body: { "alphaContent": { ...alpha }, "agentAddress": "...",
"userAddress": "...", "collateral": 100 }
→ alphaContent must include at least token and side (from alpha)
→ agentAddress = ostium_agent_address, userAddress = user_wallet (both from /user-details)
→ collateral: ask user or use default (e.g. 100 USDC)
→ Check: success === true
工作流:生产 Alpha
⚠️ 这是独立的生产者工作流。如果用户刚刚通过工作流1开仓,步骤7-10已经处理了alpha上市——您无需重复此操作。仅当用户想要上市一个现有的未平仓头寸时,才使用此工作流。
Step 1: POST /positions (address = user_wallet from /user-details)
→ List open positions
→ Let user pick which trade to feature
→ SAVE: tradeId, market (token), side, leverage from the chosen position
Step 2: POST /alpha/generate-proof
→ Body: { "venue": "OSTIUM", "tradeId": "{tradeId from Step 1}", "autoProcess": true }
→ SAVE: proofId from response
→ If status is already VERIFIED → go to Step 4
Step 3: Poll GET /alpha/proof-status?proofId={proofId}
→ Wait until status === "VERIFIED"
→ Poll every 10 seconds (max ~5 min)
→ If FAILED → inform user and stop
Step 4: ASK user for price
→ "What USDC price would you like to charge for this alpha?"
Step 5: POST /alpha/flag
→ Body: {
"proofId": "{proofId from Step 2}",
"priceUsdc": {price from Step 4},
"token": "{market from Step 1}",
"side": "{side from Step 1}",
"leverage": {leverage from Step 1}
}
→ Show user: listingId, proofMetrics (tradeCount, winRate, totalPnl)
→ "Your trade is listed as alpha! Listing ID: {listingId}"
示例 curl 命令:
# Generate proof with specific tradeId
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/alpha/generate-proof" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"venue":"OSTIUM","tradeId":"1612509","autoProcess":false}'
# Check proof status
curl -G "${MAXXIT_API_URL}/api/lazy-trading/programmatic/alpha/proof-status" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
--data-urlencode "proofId=<proof_id>"
# Flag as alpha using proofId
curl -L -X POST "${MAXXIT_API_URL}/api/lazy-trading/programmatic/alpha/flag" \
-H "X-API-KEY: ${MAXXIT_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"proofId": "<proof_id>", "priceUsdc": 5, "token": "ETH", "side": "long", "leverage": 6}'
环境变量
| 变量 | 描述 | 示例 |
|---|---|---|
MAXXIT_API_KEY | 您的懒人交易API密钥(以lt_开头) | lt_abc123... |
MAXXIT_API_URL | Maxxit API 基础URL | https://maxxit.ai |
错误处理
| 状态码 | 含义 |
|---|---|
| 401 | API密钥无效或缺失 |
| 404 | 特定端点未找到资源(并非仅因代理缺失而由/user-details返回) |
| 400 | 消息/参数缺失或无效 |
| 405 | HTTP方法错误 |
| 500 | 服务器错误 |
Alpha版本特定错误:| 400 |/pay:未找到代理地址(用户必须完成Lazy Trading设置)。/purchase:X-Payment请求头无效或支付验证失败。 |
| 402 | 需要支付(/purchase阶段1)或USDC余额不足(/pay— 检查必需和可用在响应中)。 |
| 409 | 交易哈希已使用(防重放保护——每笔交易只能购买一个列表)。 |
| 410 | Alpha列表不再活跃。 |
入门指南
- 设置懒人交易:访问https://maxxit.ai/lazy-trading连接您的钱包并配置您的代理
- 生成API密钥:前往您的仪表板并创建API密钥
- 配置环境:设置
MAXXIT_API_KEY和MAXXIT_API_URL - 开始交易:使用此技能发送信号!
安全须知
- 切勿分享您的API密钥
- API密钥可以从仪表板撤销并重新生成
- 所有交易都在链上执行,使用您授权的钱包权限


微信扫一扫,打赏作者吧~