Cuando Alpha Arena, el sistema de comercio de inteligencia artificial, fue lanzado, fue un gran éxito. Los novatos pensaron que era una buena oportunidad para empezar a cuantificar, los expertos pensaron que era simple, pero también quisieron probar el agua.
Sin embargo, con la llegada del mercado bajista, la multitud se calmó de repente. Los amigos que antes compartían ganancias diariamente bajaron de tono, y se cree que experimentaron algo llamado “una pérdida que la IA no puede salvar”.
Después de un tiempo, los problemas se revelaron:
El problema más importante es que el stop loss no se activa a tiempo. La estrategia de la versión original solo realiza una verificación cada 3 minutos, y en la rápida caída de la moneda, 3 minutos son suficientes para pasar de una pequeña pérdida a una gran pérdida.
Ya sea que se trate de monedas relativamente estables como BTC o monedas pequeñas de gran volatilidad, el sistema usa el mismo conjunto de parámetros y no tiene ningún tipo de orientación.
El sistema no aprende de las transacciones históricas. Si hoy se pierde en una moneda, mañana se utilizará la misma estrategia para operar con esa moneda, y no se ajustará en absoluto.
El usuario sólo puede ver las señales de compra y venta, pero no tiene idea de la lógica de juicio de la IA y no sabe cómo ajustar si hay problemas.
La idea de la optimización: En la versión original, toda la lógica se comprime en un gatillo de 3 minutos, que incluye análisis de datos, generación de señales, ejecución de operaciones y monitoreo de riesgos. Esto hace que el control de riesgos dependa completamente del ciclo de la estrategia principal y la respuesta sea muy retrasada.
La solución es dividir el sistema en dos disparadores independientes:
El código clave es:
// 风控触发器的核心逻辑
function monitorPosition(coin) {
// 获取实时价格和持仓信息
const pos = exchange.GetPositions().find(p => p.Symbol.includes(coin));
const ticker = exchange.GetTicker();
const currentPrice = ticker.Last;
// 检查止盈止损条件
const exitPlan = _G(`exit_plan_${coin}_USDT.swap`);
if (exitPlan?.profit_target && exitPlan?.stop_loss) {
const shouldTP = isLong ? currentPrice >= exitPlan.profit_target : currentPrice <= exitPlan.profit_target;
const shouldSL = isLong ? currentPrice <= exitPlan.stop_loss : currentPrice >= exitPlan.stop_loss;
// 立即执行平仓
if (shouldTP || shouldSL) {
return closePosition(coin, pos, shouldTP ? "止盈" : "止损");
}
}
}
Con esta mejora, el control de riesgo se reduce de un máximo de 3 minutos de retardo a un máximo de 1 minuto, lo que reduce significativamente la pérdida de puntos de deslizamiento en un entorno de alta volatilidad en el círculo monetario.
La idea de la optimización: La versión original era una transacción “anónima” para cada moneda, sin recordar el rendimiento histórico. La nueva versión construye un sistema completo de análisis de historia de transacciones para que la IA pueda aprender y optimizar de la experiencia pasada.
El diseño central incluye:
El código clave es:
// 历史表现驱动的风险调整
function calculateRiskAllocation(baseRisk, performance, confidence) {
let finalRisk = baseRisk;
// 基于历史表现调整
if (performance.totalTrades >= 10) {
if (performance.winRate > 70 && performance.profitLossRatio > 1.5) {
finalRisk *= 1.3; // 表现优秀,增加30%资金
} else if (performance.winRate < 40 || performance.profitLossRatio < 1.0) {
finalRisk *= 0.6; // 表现较差,减少40%资金
}
}
// 基于方向偏好调整
const historicalBias = calculateDirectionBias(performance);
if (goingWithBias) finalRisk *= 1.1;
else if (goingAgainstBias) finalRisk *= 0.8;
return Math.max(200, Math.min(1500, finalRisk));
}
La idea de la optimización: La versión original utiliza un stop loss fijo del 1-2% y tiene un mal efecto en diferentes monedas de volatilidad. La nueva versión introduce el indicador ATR (Average True Rate) para calcular la distancia de stop loss en función de la dinámica de la volatilidad real del mercado.
El código clave es:
// ATR动态止损计算
function calculateDynamicStop(entryPrice, isLong, marketData) {
const atr14 = marketData.longer_term_4hour.atr_14;
const currentPrice = marketData.current_price;
const atrRatio = atr14 / currentPrice;
// 动态调整止损距离
let stopDistance = Math.max(0.025, atrRatio * 2); // 最小2.5%
if (atrRatio > 0.05) stopDistance = Math.min(0.05, atrRatio * 2.5); // 高波动放宽
return isLong ? entryPrice * (1 - stopDistance) : entryPrice * (1 + stopDistance);
}
La idea de la optimización: La versión original solo puede procesar monedas, la nueva versión admite análisis en paralelo de monedas múltiples, logrando una distribución inteligente de fondos y gestión de riesgos. El sistema analizará todas las monedas al mismo tiempo, priorizando y distribuyendo riesgos según el rendimiento histórico y las señales técnicas.
El código clave es:
// 多币种决策处理
function processMultipleCoins(coinList, marketDataMap, performanceMap) {
const decisions = [];
coinList.forEach(coin => {
const performance = performanceMap[coin] || { totalTrades: 0 };
const technicalSignal = analyzeTechnicals(marketDataMap[coin]);
// 综合历史表现和技术分析
const decision = {
coin: coin,
signal: technicalSignal.signal,
confidence: technicalSignal.confidence,
risk_usd: calculateRiskAllocation(baseRisk, performance, technicalSignal.confidence),
historical_bias: performance.longWinProfit > performance.shortWinProfit * 1.5 ? "LONG" :
performance.shortWinProfit > performance.longWinProfit * 1.5 ? "SHORT" : "BALANCED",
justification: `技术面:${technicalSignal.reason};历史:${performance.winRate || 0}%胜率`
};
decisions.push(decision);
});
return decisions;
}
La idea de la optimización: La versión original del proceso de toma de decisiones es completamente de caja negra, la nueva versión crea un panel multidimensional, que incluye tablas de análisis de señales de AI, monitoreo de posiciones en tiempo real, estadísticas de rendimiento histórico, indicadores de estrategia general, etc., para que toda la información se muestre de manera transparente.
El efecto de la optimización de pérdidas:
El efecto de la historia:
Transparencia en las decisiones:
Esta optimización resuelve principalmente algunos de los problemas más centrales de la versión original: el retraso en el congelamiento, la falta de capacidad de aprendizaje y la falta de transparencia en la toma de decisiones. Aunque aún no es perfecto, al menos permite que el sistema evolucione de un simple ejecutor de indicadores técnicos a un asistente de operaciones que aprende y optimiza.
Lo más importante es probar una idea: encontrar problemas, analizar problemas, resolver problemas. En un mercado que cambia rápidamente, los sistemas que pueden mejorar continuamente son los más valiosos.