[TOC]

En el último video, desarrollamos una estrategia de media móvil dual con ClawdBot/OpenClaw. Muchos espectadores aún no estaban satisfechos y preguntaron en la sección de comentarios: ¿Puede la IA analizar las condiciones del mercado, tomar sus propias decisiones y ejecutar órdenes por sí misma? Hoy abordaremos este objetivo final y crearemos un sistema de trading con IA totalmente automatizado.
A algunos amigos les preocupa que permitir que la IA comercie directamente sea demasiado arriesgado, por eso diseñamos una arquitectura más segura:ClawdBot como el cerebroEs responsable de recopilar datos, analizar noticias y generar señales comerciales;Plataforma de cuantificación de inventores (FMZ) como una herramienta de dos manosSe encarga de recibir señales, ejecutar transacciones y gestionar el control de riesgos. Esto aprovecha las capacidades analíticas de la IA, proporciona las garantías de seguridad de una plataforma profesional y permite la monitorización y la revisión en tiempo real.

Antes de empezar, analicemos el sistema completo. El sistema consta de…extremo del cerebroyFin de la ejecuciónCompuesto por dos componentes principales, vinculados a través de solicitudes HTTP, formando un circuito cerrado completo de comercio cuantitativo de IA:

El núcleo de ClawdBot es su manual de instrucciones, que es esencialmente un manual de usuario detallado para la IA, que define claramente sus pasos operativos, criterios de evaluación y acciones a realizar. Veamos la estructura de este manual de instrucciones:
Primero, dígale a la IA qué datos clave necesita leer al abrir la página de la moneda de destino:
【操作指令】
1. 自动化打开浏览器新标签页
2. 导航至目标币种页面:https://www.coingecko.com/en/coins/bitcoin
3. 等待页面完全加载
【需要读取的数据】
- BTC当前价格
- 24小时交易量
【需要读取的新闻】
- 滚动页面找到 "News" 区域
- 读取最新的3-5条新闻标题和摘要
- 将所有新闻整合为一条信息汇总
- 判断整体情绪(利好/利空/中性)
A continuación, defina criterios comerciales claros, especificando en qué circunstancias comprar y en qué circunstancias vender:
【买入条件】
□ 新闻情绪整体正面(利好消息主导)
□ 交易量放大显示市场活跃
□ 综合判断市场处于上升趋势
【卖出条件】
□ 新闻情绪整体负面(利空消息主导)
□ 市场出现明显风险信号
【观望条件】
□ 新闻情绪中性或混杂
□ 市场方向不明确
La IA es necesaria para generar datos en formato JSON estándar. Este es el protocolo de comunicación principal entre ClawdBot y la plataforma del inventor, lo que garantiza un análisis preciso de los datos.
{
"coin": "BTC",
"timestamp": "2024-01-15T14:00:00.000Z",
"current_price": 42500.00,
"volume_24h": "25,000,000,000",
"news_summary": "ETF资金持续流入,机构增持意愿强烈",
"news_sentiment": "positive",
"trade_decision": "买入",
"decision_reason": "新闻情绪积极,交易量放大,适合建仓"
}
Por último, indique a la IA que envíe la señal JSON a la plataforma del inventor y registre las operaciones locales para su futura revisión:
【发送信号】
执行HTTP POST请求:
URL: https://www.fmz.com/api/v1?method=pub&robot={实盘ID}&channel={UUID}
- 实盘ID:发明者平台上对应机器人的唯一数字标识,用于精准指定接收信号的目标交易机器人。
- UUID:通用唯一识别码,作为自定义频道唯一标识,是ClawdBot与FMZ的通信密钥,请勿泄露,避免恶意操作。
【记录日志】
将每次操作的时间、币种、决策、信号发送状态等信息追加到本地 tradediary.csv 文件,便于后续策略复盘与优化。
Por supuesto, esta guía se ha perfeccionado mediante múltiples pruebas. Una vez que las pruebas sean exitosas, podemos empaquetarla en una habilidad y configurarla para que se ejecute automáticamente como una tarea programada.


Una vez establecidas las capacidades de toma de decisiones impulsadas por IA, la tarea actual de la plataforma del inventor es desarrollar un código de soporte para implementar todo el proceso de recepción de señales, ejecución de transacciones y gestión del control de riesgos.
Primero, defina los elementos de configuración principales para gestionar centralmente los parámetros de transacciones, monitoreo y control de riesgos. El UUID debe ser coherente con el especificado en las directrices de ClawdBot.
const CONFIG = {
TRADE_AMOUNT: 0.01, // 每次固定交易数量
CHECK_INTERVAL: 3000, // 信号监听与风控检查间隔(毫秒)
UUID: "自定义UUID", // 与ClawdBot一致的频道标识,作为通信密钥
STOP_LOSS_PERCENT: 5, // 止损/踏空保护比例(%)
};
Integrado en la plataforma FMZGetChannelDataLa función escucha un canal UUID específico y recupera la señal JSON enviada por la IA. Un detalle importante es que se utiliza una marca de tiempo para determinar si la señal se ha procesado, lo que evita que se ejecute repetidamente debido a problemas de red o plataforma, lo que evita transacciones erróneas.
function receiveSignal() {
try {
const res = GetChannelData(CONFIG.UUID);
if (res === null || res === "") {
return null;
}
const signal = typeof res === 'string' ? JSON.parse(res) : res;
// 校验信号格式,确保核心字段完整
if (!signal.coin || !signal.trade_decision) {
Log("❌ 信号格式无效,核心字段缺失");
return null;
}
// 检查时间戳是否已处理(信号去重核心逻辑)
if (isSignalProcessed(signal.timestamp)) {
return null;
}
Log(`📥 收到新信号: ${signal.coin} - ${signal.trade_decision}`);
return signal;
} catch (e) {
Log(`❌ 获取信号失败: ${e.message}`);
return null;
}
}
Analizar el contenido central de la señal, basándose entrade_decisionEl campo ejecuta la operación de compra/venta correspondiente. Antes de comprar, verifica si el saldo de USDT es suficiente; antes de vender, verifica si el saldo de la moneda de destino es suficiente para evitar el fallo de la transacción por saldo insuficiente.
function executeBuy(signal, reason) {
const symbol = signal.coin + "_USDT"; // 拼接交易对,如BTC_USDT
exchange.SetCurrency(symbol); // 指定当前交易对
const account = _C(exchange.GetAccount); // 获取账户实时资产
const ticker = _C(exchange.GetTicker); // 获取币种实时行情
const currentPrice = ticker.Last; // 获取最新成交价
// 资金充足性检查
const requiredBalance = currentPrice * CONFIG.TRADE_AMOUNT;
if (account.Balance < requiredBalance) {
Log(`❌ 余额不足,需要 USDT $${requiredBalance.toFixed(2)},当前仅 $${account.Balance.toFixed(2)}`);
return false;
}
// 执行市价买入(-1表示市价,按当前市场价格成交)
const orderId = exchange.Buy(-1, CONFIG.TRADE_AMOUNT * currentPrice);
if (orderId) {
addTradeRecord({
coin: signal.coin,
action: "买入",
price: currentPrice,
amount: CONFIG.TRADE_AMOUNT,
reason: reason
});
Log(`✅ ${signal.coin} 市价买入成功,成交价格: $${currentPrice.toFixed(2)}`);
return true;
}
Log(`❌ ${signal.coin} 买入失败,未生成订单ID`);
return false;
}
function executeSell(signal, reason) {
try {
const symbol = signal.coin + "_USDT";
exchange.SetCurrency(symbol);
const account = _C(exchange.GetAccount);
const ticker = _C(exchange.GetTicker);
const currentPrice = ticker.Last;
// 目标币种充足性检查
if (account.Stocks < CONFIG.TRADE_AMOUNT) {
Log(`❌ ${signal.coin} 余额不足,需要 ${CONFIG.TRADE_AMOUNT}枚,当前仅 ${account.Stocks.toFixed(6)}枚`);
return false;
}
// 执行市价卖出
const orderId = exchange.Sell(-1, CONFIG.TRADE_AMOUNT);
if (orderId) {
// 添加交易记录至平台
addTradeRecord({
coin: signal.coin,
action: "卖出",
price: currentPrice,
amount: CONFIG.TRADE_AMOUNT,
reason: reason || signal.decision_reason,
timestamp: new Date().toISOString()
});
Log(`✅ ${signal.coin} 市价卖出成功 - 成交价格: $${currentPrice.toFixed(2)}, 成交数量: ${CONFIG.TRADE_AMOUNT}`);
return true;
} else {
Log(`❌ ${signal.coin} 卖出失败,未生成订单ID`);
return false;
}
} catch (e) {
Log(`❌ 卖出异常: ${e.message}`);
return false;
}
}
El código establece un porcentaje fijo de stop loss. Cuando el precio de mercado alcanza la línea de stop loss preestablecida, se ejecuta automáticamente una operación inversa.Detener la pérdidayDetener la pérdida si pierde una oportunidadDos escenarios fundamentales para el control integral de los riesgos transaccionales:
function checkStopLoss() {
const latestTrade = getLatestTradeRecord(); // 获取最新一笔交易记录
if (!latestTrade) return { triggered: false }; // 无交易记录则跳过风控检查
const ticker = _C(exchange.GetTicker);
const currentPrice = ticker.Last;
const tradePrice = latestTrade.price; // 最新交易的成交价格
const priceChangePercent = ((currentPrice - tradePrice) / tradePrice) * 100; // 价格涨跌幅百分比
// 场景一:买入后价格下跌触发亏损止损,限制最大亏损
if (latestTrade.action === "买入") {
const stopLossPrice = tradePrice * (1 - CONFIG.STOP_LOSS_PERCENT / 100); // 计算止损价格
if (currentPrice <= stopLossPrice) {
Log(`🔴 亏损止损触发!当前跌幅: ${priceChangePercent.toFixed(2)}%,触发${CONFIG.STOP_LOSS_PERCENT}%止损线`);
return {
triggered: true,
action: "卖出",
reason: `止损卖出:跌幅触发${CONFIG.STOP_LOSS_PERCENT}%止损线,当前跌幅${priceChangePercent.toFixed(2)}%`
};
}
}
// 场景二:卖出后价格上涨触发踏空止损,避免错过大幅上涨行情
if (latestTrade.action === "卖出") {
const stopLossPrice = tradePrice * (1 + CONFIG.STOP_LOSS_PERCENT / 100); // 计算踏空保护价格
if (currentPrice >= stopLossPrice) {
Log(`🟢 踏空止损触发!当前涨幅: ${priceChangePercent.toFixed(2)}%,触发${CONFIG.STOP_LOSS_PERCENT}%保护线`);
return {
triggered: true,
action: "买入",
reason: `踏空止损:涨幅触发${CONFIG.STOP_LOSS_PERCENT}%保护线,当前涨幅${priceChangePercent.toFixed(2)}%`
};
}
}
return { triggered: false };
}
El núcleo de toda la estrategia es un bucle infinito, que se ejecuta mediante…El control de riesgos es lo primeroEl principio es procesar los controles de stop loss, el procesamiento de señales de IA y las actualizaciones del panel en ese orden, garantizando que el control de riesgos sea siempre la máxima prioridad:
function main() {
initialize(); // 初始化:创建交易记录、仪表板等
Log("🚀 现货自动交易机器人启动,开始监听AI信号...");
while (true) { // 无限循环,持续运行
// 1. 检查止损(优先级最高),触发则立即执行
const stopLossInfo = checkStopLoss();
if (stopLossInfo.triggered) {
executeStopLoss(stopLossInfo);
}
// 2. 获取并处理AI信号,无信号则跳过
const signal = receiveSignal();
if (signal) {
processSignal(signal);
}
// 3. 实时更新可视化仪表板
displayDashboard();
// 4. 按预设间隔等待,进入下一轮检查
Sleep(CONFIG.CHECK_INTERVAL);
}
}
Realizar operaciones no es lo suficientemente intuitivo, por lo que también creamos un panel visual con cuatro tablas de datos principales. Este panel muestra la información de la cuenta, el control de riesgos, las señales y los registros de operaciones en un solo lugar, ofreciendo una visión general clara del estado operativo del sistema.
| Nombre de la tabla | Mostrar contenido |
|---|---|
| 💰 Resumen de beneficios | Cantidad de moneda inicial/actual, saldo en USDT, capital total de la cuenta, monto de ganancias/pérdidas y porcentaje de ganancias/pérdidas |
| 🛡️ Monitoreo de stop loss | Último tipo de transacción, precio de la transacción, cambio de precio actual, distancia desde la línea de stop-loss, estado actual del control de riesgo. |
| 🤖 Señal de IA actual | Moneda de destino, precio en tiempo real, resumen de noticias, evaluación de sentimientos, decisiones comerciales de IA y lógica detrás de esas decisiones. |
| 📋 Registros de transacciones | La hora, el tipo de operación, el precio de la transacción y el motivo de las últimas 10 transacciones. |

Una vez que las instrucciones de ClawdBot se depuran correctamente y el código de la plataforma del inventor pasa las pruebas, el sistema puede ejecutarse de forma totalmente automática: en el backend de ClawdBot, las instrucciones escritas se empaquetan en un solo…Skill(Plantilla de operación de IA reutilizable) y configurarTareas programadas(Por ejemplo, si se ejecuta cada 10 minutos), el sistema recopilará datos automáticamente, los analizará, tomará decisiones y enviará señales con la frecuencia establecida. La plataforma del inventor escuchará y ejecutará las transacciones en tiempo real, sin necesidad de supervisión manual.

Es importante recordar que el trading cuantitativo siempre implica riesgo de mercado y que las decisiones de IA no son del todo precisas. Por favor, preste atención a los siguientes puntos antes de operar:
Repasemos los logros de hoy: Hemos construido con éxito un conjuntoSistema de comercio cuantitativo totalmente automatizado con IA de extremo a extremoEl núcleo consta de dos módulos principales: ClawdBot, que actúa como cerebro, responsable de la recopilación de datos de mercado, el análisis del sentimiento de las noticias y la generación de decisiones comerciales; y la plataforma cuantitativa Inventor, que actúa como ejecutor, responsable de la recepción de señales, la automatización del trading, la gestión del control de riesgos y la monitorización visual. Ambas partes logran un intercambio de datos estandarizado a través de una interfaz HTTP, lo que permite una automatización total del trading sin necesidad de monitorización manual.
Más importante aún, esta arquitectura ofrece una gran escalabilidad: los registros de transacciones se pueden enviar a la IA para su revisión y optimización, y las habilidades de ClawdBot se pueden iterar continuamente, añadiendo más fuentes de datos (como datos contractuales e informes de investigación del sector) y una lógica de toma de decisiones más refinada. Por supuesto, el modelo actual es relativamente básico y solo proporciona un marco y un enfoque práctico para el trading cuantitativo basado en IA.
Si tienes mejores ideas de optimización o nuevas solicitudes de funciones, ¡no dudes en compartirlas en la sección de comentarios!
Código de referencia: https://www.fmz.com/strategy/526322