Skip to content

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

33 Commits

Folders and files

Repository files navigation

Trading Monitor

Servicio .NET 10 LTS para monitorear mercado cripto, hacer analisis tecnico multi-temporal, revisar noticias/reportes configurables, pedir un resumen opcional a OpenAI, emitir propuestas de entrada/salida y auditar ejecuciones automaticas seguras.

Por defecto ejecuta en modo Paper: simula entradas y salidas y las registra en SQL Server sin mover dinero real. El modo Live existe, pero queda bloqueado hasta configurar llaves de exchange sin retiro, limites y confirmaciones explicitas.

Que hace

  • Consulta velas publicas con proveedores encadenados: Binance, Binance US, Coinbase Exchange, Kraken, Yahoo Finance FX y Alpha Vantage FX opcional.
  • Monitorea Crypto y Forex por separado: BTC/ETH/SOL/XRP/ADA y pares como EUR/USD, GBP/USD, USD/JPY, USD/MXN, EUR/MXN, GBP/JPY y EUR/GBP.
  • Calcula EMA 9/20/50/200, RSI, MACD, Bollinger Bands, ATR, ADX, VWAP, volumen relativo, soporte y resistencia.
  • Evalua coincidencia multi-temporal para LONG o SHORT.
  • Lee noticias RSS, reportes macro/regulatorios configurables y clasifica sentimiento basico por palabras clave.
  • Usa OpenAI como analista de investigacion opcional para resumir contexto reciente.
  • Genera una propuesta con score, zona de entrada, ganancia objetivo, ganancia extra, perdida maxima, razones, riesgos y vigencia.
  • Convierte cada propuesta en una instruccion operativa: comprar ahora, vigilar, mantener posicion viva o vender cuando el beneficio neto administrado supere el umbral configurado.
  • Remarca solo las oportunidades de alta conviccion: score alto, varias temporalidades, riesgo controlado y poco ruido de riesgos. Ninguna senal se presenta como garantia.
  • Calcula cuanto podrias ganar o perder si pusieras el monto configurado en cada oportunidad.
  • En modo administrado, lanza alertas de salida cuando el PnL neto despues de comisiones supera el objetivo, por defecto 5%, y el movimiento empieza a perder fuerza o alcanza salida rapida.
  • Puede volver al modo clasico de salida por objetivo, stop y vencimiento desactivando Risk:ManagedProfitExitEnabled.
  • Evita mandar senales repetidas dentro de una ventana configurable.
  • Guarda historial, salidas, salud de fuentes e investigacion en SQL Server local: base TradingMarket.
  • Guarda auditoria de ejecucion automatica en dbo.trade_executions: omitida, bloqueada, simulada, validada o real enviada.
  • Registra errores y eventos con Serilog en logs/.
  • Incluye dashboard web con reportes de trader, fuentes monitoreadas, noticias capturadas, PnL realizado y PnL hipotetico por monto.

Si una fuente falla, el servicio no se apaga: registra el fallo en data_sources y sigue con los demas proveedores disponibles.

Tres fuentes de señales: Propias, Ajenas y Traders

El sistema genera y clasifica cada señal con un OriginKind (Propias, Ajenas, Traders), visible en /aprendizaje-ia:

  • Propias: el motor principal (TradingSignalEngine) con analisis tecnico multi-temporal, mas un ciclo de auto-aprendizaje (MarketMonitorWorker.EvaluateLearningAsync) que revisa el historial cerrado por simbolo/lado/horizonte y sube o baja la confianza de señales parecidas segun el resultado real. Evoluciona con cada cierre: entre mas datos reales acumula, mas ajusta el puntaje.
  • Ajenas: un ensemble independiente (ExternalAiSignalEngine) de tres estrategias publicas y conocidas -Ichimoku Kinko Hyo, un canal de volatilidad estilo Supertrend, y reversion a la media con Bandas de Bollinger- que corre en paralelo al motor propio y solo publica señal cuando al menos 2 de los 3 modelos coinciden. Esto reproduce el tipo de señal que muchos productos comerciales de "IA de trading" generan, sin necesitar copiar o hacer ingenieria inversa de ningun modelo propietario especifico (no es factible ni verificable hacerlo de forma automatica, y probablemente violaria los terminos de servicio de esos productos).
  • Traders: sigue posiciones reales, actualmente abiertas, de los traders mejor rankeados por ROI en el leaderboard publico de Binance Futures (BinanceLeaderboardTraderSignalProvider), usando los mismos endpoints publicos y sin autenticacion que usa el sitio web de Binance. Es un endpoint no documentado/no oficial que puede cambiar sin aviso; si falla, el sistema simplemente sigue sin señales de traders en ese ciclo.

Activa o desactiva cada fuente en configuracion:

  • TradingMonitor:ExternalAiSignalsEnabled (Ajenas).
  • TraderSignals:Enabled / TraderSignals:BinanceLeaderboardEnabled (Traders).
  • El aprendizaje Propio siempre esta activo; es parte del ciclo principal del Worker.

Wallet autonomo (crypto y forex)

/wallet guarda capital y posiciones por mercado (crypto/forex). Cuando AutoTradingEnabled esta activo (global y por simbolo), el Worker ejecuta automaticamente las señales que pasan todos los filtros de riesgo:

  • En modo Paper (por defecto), cada entrada y salida debita/acredita el wallet de forma atomica (IWalletRepository.ApplyFillAsync), asi que el capital disponible refleja posiciones reales simuladas, no un numero estatico editado a mano.
  • En modo Live/Test para cripto, SafeTradeExecutionService valida saldo real en Binance antes de comprar, respeta KillSwitchEnabled, MaxOpenPositions y MaxDailyNotional, y exige la variable de entorno TRADING_MONITOR_LIVE_CONFIRM=I_ACCEPT_LIVE_RISK ademas de AllowLiveOrders=true y UseTestOrderEndpoint=false.
  • Forex real todavia no tiene un broker conectado (se necesitaria integrar OANDA, Interactive Brokers u otro con sus propias llaves); mientras tanto Forex se mantiene siempre en modo Paper aunque ExchangeExecution:Mode este en Live/Test, para no intentar mandar ordenes que ningun bróker real va a recibir.

Reportes y notificaciones por fuente

  • /aprendizaje-ia: comparativa lado a lado de Propias/Ajenas/Traders con win rate, señales totales, neto realizado, mejor/peor simbolo y "lo que aprendio" cada fuente.
  • /reportes?VistaReporte=propio|ia|traders y /cartera?VistaSimulador=propio|ia|traders: detalle y simulacion de portafolio por fuente (ya existian; ahora "ia" y "traders" tienen datos reales de ExternalAiSignalEngine y BinanceLeaderboardTraderSignalProvider).
  • Email y Telegram (Notifications:Email, Notifications:Telegram) avisan cada entrada y salida con simbolo, score, precios, ganancia/perdida y motivo; configura los secretos via PasswordEnvironmentVariable/BotTokenEnvironmentVariable (variables de entorno), igual que Binance/OpenAI.

Ejecutar

dotnet run --project src/Trading.Monitor.Worker

Abrir dashboard web

dotnet run --project src/Trading.Monitor.Web --urls http://localhost:5088

Luego abre:

http://localhost:5088

Ejecutar con Docker

La forma mas comoda de correr todo junto es Docker Compose. Esto levanta:

  • trading-monitor-web: dashboard web en http://localhost:5088.
  • trading-monitor-worker: monitor automatico 24/7.
  • trading-monitor-sqlserver: SQL Server local para SSMS en localhost,14333.
  • ./logs/web y ./logs/worker: registros Serilog.

Primero puedes crear tu archivo de variables:

Copy-Item .env.example .env

Reemplaza SQLSERVER_SA_PASSWORD en .env por una contrasena local fuerte antes de iniciar Compose. La solucion no incorpora una contrasena predeterminada.

Si tu antivirus o proxy inspecciona HTTPS y Docker muestra errores de certificado, copia docker-compose.override.example.yml a docker-compose.override.yml y define LOCAL_CA_CERT_PATH con la ruta a su certificado raiz PEM. El override y el certificado local deben permanecer fuera de Git.

Tu llave real de OpenAI debe vivir en .env.local como OPENAI_API_KEY=.... Ese archivo esta ignorado por Git y Docker Compose lo pasa al contenedor del worker sin copiarlo dentro de la imagen.

Para SSMS con Docker:

Servidor: localhost,14333
Autenticacion: SQL Server Authentication
Usuario: sa
Password: valor de SQLSERVER_SA_PASSWORD
Base: TradingMarket

Para SSMS con tu SQL Server local instalado:

Servidor: localhost
Autenticacion: Windows Authentication
Base: TradingMarket

Si levantas la app con Docker, los datos vivos quedan primero en localhost,14333. Para copiarlos a la base localhost que ya ves con Windows Authentication en SSMS:

.\scripts\Sync-TradingMarketToLocalSql.ps1

Ese script crea las tablas faltantes en TradingMarket, limpia la copia local y trae oportunidades, fuentes, eventos, noticias y traders desde la base de Docker.

Luego construye y levanta los servicios:

docker compose up --build -d

Abre el dashboard:

http://localhost:5088

Paginas principales:

  • http://localhost:5088/: resumen ejecutivo.
  • http://localhost:5088/acciones: entradas, salidas, ganancia objetivo, perdida maxima y calculos por monto.
  • http://localhost:5088/acciones?Mercado=forex: operaciones Forex vivas.
  • http://localhost:5088/posiciones?Mercado=forex: seguimiento Forex sin salida fija.
  • http://localhost:5088/api/operaciones-vivas?capital=1000: JSON del tablero vivo.
  • http://localhost:5088/api/grafico-vivo?symbol=BTCUSDT&interval=1m&capital=1000: velas 1m y niveles de entrada, ganancia y perdida maxima.
  • http://localhost:5088/api/grafico-vivo?mercado=forex&symbol=EURUSD&interval=1m&capital=1000: velas Forex y lectura viva.
  • http://localhost:5088/api/exchange/status: estado seguro de integracion con exchange.
  • http://localhost:5088/reportes: reportes por simbolo, dia, win rate y PnL.
  • http://localhost:5088/conexiones: salud de exchanges, noticias, reportes e IA.
  • http://localhost:5088/logs: visor local de logs Serilog.

Ver logs:

docker compose logs -f worker
docker compose logs -f web

Apagar:

docker compose down

Reconstruir despues de cambios:

docker compose build --no-cache
docker compose up -d

La base queda en SQL Server:

Database: TradingMarket
SSMS Docker: localhost,14333
SSMS local Windows Auth: localhost

Para una prueba de una sola pasada:

$env:DOTNET_ENVIRONMENT="Development"
dotnet run --project src/Trading.Monitor.Worker

Configuracion principal

Edita src/Trading.Monitor.Worker/appsettings.json o crea src/Trading.Monitor.Worker/appsettings.Local.json con tus valores privados.

Campos importantes:

  • TradingMonitor:Symbols: pares a monitorear, por ejemplo BTCUSDT, ETHUSDT, EURUSD, USDMXN.
  • TradingMonitor:Intervals: temporalidades a evaluar.
  • TradingMonitor:MinimumScore: puntuacion minima para lanzar alerta.
  • TradingMonitor:EvaluationIntervalSeconds: frecuencia de escaneo.
  • MarketSources:*Enabled: activa o desactiva Binance, Binance US, Coinbase, Kraken, Yahoo Finance FX y Alpha Vantage FX.
  • MarketSources:*BaseUrl: URLs base de cada proveedor de mercado.
  • MarketSources:TimeoutSeconds: limite por solicitud de mercado.
  • Risk:ManagedProfitExitEnabled: mantiene operaciones vivas y cierra por beneficio neto administrado.
  • Risk:ManagedProfitExitPercentAfterCosts: beneficio neto minimo para mandar alerta de venta; por defecto 5.
  • Risk:ManagedQuickProfitExitPercentAfterCosts: salida inmediata si el beneficio neto supera este nivel; por defecto 8.
  • Risk:ManagedTrailingGivebackPercent: retroceso desde el pico permitido antes de vender; por defecto 0.75.
  • Risk:ManagedHardStopExitEnabled: por defecto false; si se activa, vuelve a cerrar por perdida maxima.
  • Risk:ManagedExpiryExitEnabled: por defecto false; si se activa, permite cierre por vencimiento.
  • Reporting:DefaultCapital: monto X usado para calcular cuanto pudiste ganar o perder.
  • Reporting:EstimatedFeePercentPerSide: comision estimada por lado.
  • Database:ConnectionString: conexion SQL Server usada por Entity Framework.
  • News:Feeds: fuentes RSS, reportes y recursos a revisar.
  • ALPHA_VANTAGE_API_KEY: opcional para reforzar Forex con Alpha Vantage. Sin llave, Forex sigue funcionando con Yahoo Finance FX.
  • News:FearGreedEnabled: agrega el indice publico Fear & Greed como contexto de sentimiento.
  • News:CryptoPanicEnabled: activa CryptoPanic si configuras CRYPTOPANIC_AUTH_TOKEN.
  • News:CryptoPanicAuthTokenEnvironmentVariable: nombre de la variable que contiene el token de CryptoPanic.
  • OpenAi:Enabled: activa o desactiva el resumen de investigacion con OpenAI.
  • OpenAi:Model: modelo usado para el resumen de investigacion.
  • OpenAi:MinimumNewsItemsToAnalyze: evita llamar IA si hay pocas noticias utiles.
  • OpenAi:MinimumMinutesBetweenCalls: separacion minima entre llamadas para reducir tokens.
  • OpenAi:OnlyAnalyzeWhenNewsChanged: reutiliza cache cuando el paquete de noticias no cambio.
  • Notifications:Email: SMTP para correo.
  • Notifications:Telegram: bot token y chat id.
  • ExchangeExecution:Enabled: true por defecto para simular/auditar en Paper.
  • ExchangeExecution:Mode: Paper por defecto. Test valida contra Binance sin ejecutar. Live solo debe usarse con llaves sin retiro, limites y AllowLiveOrders=true.
  • ExchangeExecution:MaxCapitalPerTrade: limite por operacion para la fase live.
  • ExchangeExecution:DailyLossLimit: limite diario de perdida.
  • ExchangeExecution:MinimumScoreToExecute: score minimo para convertir una senal en intento automatico.
  • ExchangeExecution:MinimumExpectedNetProfitPercentAfterCosts: ganancia minima despues de comisiones para permitir una entrada.
  • ExchangeExecution:AllowedSymbols: lista blanca de pares que puede intentar ejecutar.
  • ExchangeExecution:AllowShortSelling: por defecto false; prioriza compra bajo - vende alto.

Tambien puedes usar variables de entorno:

$env:Notifications__Email__Enabled="true"
$env:Notifications__Email__Host="smtp.gmail.com"
$env:Notifications__Email__Port="587"
$env:Notifications__Email__UserName="tu-correo@gmail.com"
$env:Notifications__Email__Password="tu-app-password"
$env:Notifications__Email__From="tu-correo@gmail.com"
$env:Notifications__Email__To="destino@correo.com"

Pruebas

dotnet test

Siguientes mejoras naturales

  • WebSocket de Binance y Coinbase para menor latencia.
  • Calendario economico y eventos macro con proveedor dedicado.
  • Backtesting por estrategia antes de subir el score minimo.
  • Filtros por estrategia, sesion, fuente y regimen de mercado.
  • Paper trading con estadisticas de acierto, drawdown y profit factor.
  • Conectores adicionales para acciones, opciones o futuros.

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages