Features: - Autonomous trading system with Drift Protocol on Solana - Real-time position monitoring with Pyth price feeds - Dynamic stop-loss and take-profit management - n8n workflow integration for TradingView signals - Beautiful web UI for settings management - REST API for trade execution and monitoring - Next.js 15 with standalone output mode - TypeScript with strict typing - Docker containerization with multi-stage builds - PostgreSQL database for trade history - Singleton pattern for Drift client connection pooling - BN.js for BigNumber handling (Drift SDK requirement) - Configurable stop-loss and take-profit levels - Breakeven trigger and profit locking - Daily loss limits and trade cooldowns - Slippage tolerance controls - DRY_RUN mode for safe testing - Real-time risk calculator - Interactive sliders for all parameters - Live preview of trade outcomes - Position sizing and leverage controls - Beautiful gradient design with Tailwind CSS - POST /api/trading/execute - Execute trades - POST /api/trading/close - Close positions - GET /api/trading/positions - Monitor active trades - GET /api/trading/check-risk - Validate trade signals - GET /api/settings - View configuration - POST /api/settings - Update configuration - Fixed Borsh serialization errors (simplified order params) - Resolved RPC rate limiting with singleton pattern - Fixed BigInt vs BN type mismatches - Corrected order execution flow - Improved position state management - Complete setup guides - Docker deployment instructions - n8n workflow configuration - API reference documentation - Risk management guidelines - Runs on port 3001 (external), 3000 (internal) - Uses Helius RPC for optimal performance - Production-ready with error handling - Health monitoring and logging
49 lines
1.1 KiB
CSS
49 lines
1.1 KiB
CSS
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
/* Custom slider styling */
|
|
input[type="range"].slider {
|
|
-webkit-appearance: none;
|
|
appearance: none;
|
|
}
|
|
|
|
input[type="range"].slider::-webkit-slider-thumb {
|
|
-webkit-appearance: none;
|
|
appearance: none;
|
|
width: 20px;
|
|
height: 20px;
|
|
border-radius: 50%;
|
|
background: linear-gradient(135deg, #3b82f6, #8b5cf6);
|
|
cursor: pointer;
|
|
border: 2px solid white;
|
|
box-shadow: 0 0 10px rgba(59, 130, 246, 0.5);
|
|
}
|
|
|
|
input[type="range"].slider::-moz-range-thumb {
|
|
width: 20px;
|
|
height: 20px;
|
|
border-radius: 50%;
|
|
background: linear-gradient(135deg, #3b82f6, #8b5cf6);
|
|
cursor: pointer;
|
|
border: 2px solid white;
|
|
box-shadow: 0 0 10px rgba(59, 130, 246, 0.5);
|
|
}
|
|
|
|
input[type="range"].slider::-webkit-slider-runnable-track {
|
|
background: linear-gradient(90deg, #3b82f6, #8b5cf6);
|
|
height: 8px;
|
|
border-radius: 4px;
|
|
}
|
|
|
|
input[type="range"].slider::-moz-range-track {
|
|
background: linear-gradient(90deg, #3b82f6, #8b5cf6);
|
|
height: 8px;
|
|
border-radius: 4px;
|
|
}
|
|
|
|
/* Smooth transitions */
|
|
* {
|
|
transition: background-color 0.2s ease, border-color 0.2s ease;
|
|
}
|