Really-amin's picture
Upload 577 files
b190b45 verified
<!DOCTYPE html>
<html lang="en" dir="ltr" data-theme="light">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Permissions-Policy" content="accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=(), usb=()">
<meta name="description" content="Professional Technical Analysis - Real-time Market Data & Advanced Indicators">
<title>Technical Analysis | Crypto Intelligence Hub</title>
<link rel="icon" type="image/svg+xml" href="../../assets/icons/favicon.svg">
<!-- Shared Styles -->
<link rel="stylesheet" href="/static/shared/css/design-system.css">
<link rel="stylesheet" href="/static/shared/css/global.css">
<link rel="stylesheet" href="/static/shared/css/components.css">
<link rel="stylesheet" href="/static/shared/css/layout.css">
<link rel="stylesheet" href="/static/shared/css/utilities.css">
<!-- Page Styles -->
<link rel="stylesheet" href="/static/pages/technical-analysis/technical-analysis.css">
<link rel="stylesheet" href="/static/pages/technical-analysis/technical-analysis-enhanced.css">
<!-- TradingView Lightweight Charts -->
<script src="https://unpkg.com/lightweight-charts@4.1.0/dist/lightweight-charts.standalone.production.js"></script>
<style>
.analysis-card {
background: linear-gradient(135deg, rgba(45, 212, 191, 0.05), rgba(59, 130, 246, 0.05));
border: 1px solid rgba(45, 212, 191, 0.2);
border-radius: 16px;
padding: 2rem;
margin-top: 2rem;
}
.analysis-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 1.5rem;
padding-bottom: 1rem;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.analysis-header h3 {
margin: 0;
font-size: 1.25rem;
color: var(--text-primary);
}
.badge {
padding: 0.5rem 1rem;
border-radius: 8px;
font-size: 0.875rem;
font-weight: 600;
text-transform: uppercase;
}
.badge-buy { background: rgba(34, 197, 94, 0.2); color: #22c55e; }
.badge-sell { background: rgba(239, 68, 68, 0.2); color: #ef4444; }
.badge-hold { background: rgba(251, 191, 36, 0.2); color: #fbbf24; }
.analysis-section {
margin-bottom: 1.5rem;
}
.analysis-section h4 {
font-size: 1rem;
color: var(--accent-cyan);
margin-bottom: 0.75rem;
}
.indicator-list {
list-style: none;
padding: 0;
margin: 0;
}
.indicator-list li {
padding: 0.75rem;
margin-bottom: 0.5rem;
background: rgba(0, 0, 0, 0.2);
border-radius: 8px;
display: flex;
justify-content: space-between;
align-items: center;
}
.indicator-name {
font-weight: 600;
color: var(--text-secondary);
}
.indicator-value {
font-weight: 700;
font-size: 1.1rem;
}
.indicator-value.bullish,
.indicator-value.oversold {
color: #22c55e;
}
.indicator-value.bearish,
.indicator-value.overbought {
color: #ef4444;
}
.indicator-value.neutral {
color: #fbbf24;
}
.indicator-signal {
font-size: 0.875rem;
color: var(--text-muted);
}
.recommendation {
background: rgba(59, 130, 246, 0.1);
border-left: 4px solid #3b82f6;
padding: 1rem;
border-radius: 8px;
color: var(--text-secondary);
line-height: 1.6;
}
.risk-bar {
height: 24px;
background: rgba(0, 0, 0, 0.3);
border-radius: 12px;
overflow: hidden;
margin-bottom: 0.5rem;
}
.risk-fill {
height: 100%;
transition: width 0.5s ease;
}
.risk-fill.risk-low {
background: linear-gradient(90deg, #22c55e, #4ade80);
}
.risk-fill.risk-medium {
background: linear-gradient(90deg, #fbbf24, #fcd34d);
}
.risk-fill.risk-high {
background: linear-gradient(90deg, #ef4444, #f87171);
}
.risk-text {
font-size: 0.875rem;
color: var(--text-muted);
}
.trend-bullish {
color: #22c55e;
font-weight: 600;
}
.trend-bearish {
color: #ef4444;
font-weight: 600;
}
.trend-neutral {
color: #fbbf24;
font-weight: 600;
}
.error-state {
text-align: center;
padding: 3rem;
color: var(--text-muted);
}
.error-state svg {
color: #ef4444;
margin-bottom: 1rem;
}
.error-state h3 {
color: var(--text-primary);
margin: 1rem 0;
}
.price-info-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 1rem;
margin-bottom: 1.5rem;
}
.price-info-card {
background: rgba(0, 0, 0, 0.2);
border: 1px solid rgba(255, 255, 255, 0.05);
border-radius: 12px;
padding: 1rem;
}
.price-info-label {
font-size: 0.75rem;
text-transform: uppercase;
letter-spacing: 0.05em;
color: var(--text-muted);
margin-bottom: 0.5rem;
}
.price-info-value {
font-size: 1.5rem;
font-weight: 700;
color: var(--text-primary);
}
#loading-spinner {
display: none;
text-align: center;
padding: 2rem;
}
.spinner {
border: 3px solid rgba(45, 212, 191, 0.1);
border-top: 3px solid #2dd4bf;
border-radius: 50%;
width: 40px;
height: 40px;
animation: spin 1s linear infinite;
margin: 0 auto;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
</style>
<!-- API Configuration - Smart Fallback System -->
<script src="/static/js/api-config.js"></script>
<script>
// Initialize API client
window.apiReady = new Promise((resolve) => {
if (window.apiClient) {
console.log('✅ API Client ready');
resolve(window.apiClient);
} else {
console.error('❌ API Client not loaded');
}
});
</script>
</head>
<body>
<div class="app-container">
<aside id="sidebar-container"></aside>
<main class="main-content">
<header id="header-container"></header>
<div class="page-content">
<!-- Page Header -->
<div class="page-header">
<div class="page-title">
<h1>
<span class="page-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M3 3v18h18"></path>
<path d="M19 9l-5 5-4-4-3 3"></path>
</svg>
</span>
Professional Technical Analysis
</h1>
<p class="page-subtitle">Real-time market data, advanced indicators, and professional trading tools</p>
</div>
<div class="page-actions">
<button id="refresh-data" class="btn btn-secondary">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<polyline points="23 4 23 10 17 10"></polyline>
<path d="M20.49 15a9 9 0 1 1-2.12-9.36L23 10"></path>
</svg>
Refresh
</button>
<button id="export-analysis" class="btn btn-secondary">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
<polyline points="7 10 12 15 17 10"></polyline>
<line x1="12" y1="15" x2="12" y2="3"></line>
</svg>
Export
</button>
</div>
</div>
<!-- Controls -->
<div class="controls-panel" style="background: rgba(0,0,0,0.2); border-radius: 16px; padding: 1.5rem; margin-bottom: 1.5rem;">
<div style="display: flex; gap: 1.5rem; flex-wrap: wrap; align-items: center;">
<div style="flex: 1; min-width: 200px;">
<label style="display: block; font-size: 0.875rem; color: var(--text-muted); margin-bottom: 0.5rem;">Symbol</label>
<select id="symbol-select" class="form-select" style="width: 100%;">
<option value="BTC">Bitcoin (BTC)</option>
<option value="ETH">Ethereum (ETH)</option>
<option value="BNB">Binance Coin (BNB)</option>
<option value="SOL">Solana (SOL)</option>
<option value="ADA">Cardano (ADA)</option>
<option value="XRP">Ripple (XRP)</option>
<option value="DOT">Polkadot (DOT)</option>
<option value="DOGE">Dogecoin (DOGE)</option>
<option value="AVAX">Avalanche (AVAX)</option>
<option value="MATIC">Polygon (MATIC)</option>
</select>
</div>
<div style="flex: 2; min-width: 300px;">
<label style="display: block; font-size: 0.875rem; color: var(--text-muted); margin-bottom: 0.5rem;">Timeframe</label>
<div style="display: flex; gap: 0.5rem; flex-wrap: wrap;">
<button class="btn btn-sm btn-secondary" data-timeframe="1m">1m</button>
<button class="btn btn-sm btn-secondary" data-timeframe="5m">5m</button>
<button class="btn btn-sm btn-secondary" data-timeframe="15m">15m</button>
<button class="btn btn-sm btn-secondary" data-timeframe="1h">1h</button>
<button class="btn btn-sm btn-secondary active" data-timeframe="4h">4h</button>
<button class="btn btn-sm btn-secondary" data-timeframe="1d">1D</button>
<button class="btn btn-sm btn-secondary" data-timeframe="1w">1W</button>
</div>
</div>
<div style="flex: 0 0 auto;">
<label style="display: block; font-size: 0.875rem; color: transparent; margin-bottom: 0.5rem;">Action</label>
<button id="analyze-btn" class="btn btn-primary">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline>
</svg>
Analyze
</button>
</div>
</div>
</div>
<!-- Price Information -->
<div class="price-info-grid">
<div class="price-info-card">
<div class="price-info-label">Current Price</div>
<div class="price-info-value" id="current-price">--</div>
</div>
<div class="price-info-card">
<div class="price-info-label">24h Change</div>
<div class="price-info-value" id="price-change">--</div>
</div>
<div class="price-info-card">
<div class="price-info-label">24h High</div>
<div class="price-info-value" id="24h-high">--</div>
</div>
<div class="price-info-card">
<div class="price-info-label">24h Low</div>
<div class="price-info-value" id="24h-low">--</div>
</div>
<div class="price-info-card">
<div class="price-info-label">24h Volume</div>
<div class="price-info-value" id="24h-volume">--</div>
</div>
</div>
<!-- Chart -->
<div style="background: rgba(0,0,0,0.2); border-radius: 16px; padding: 1rem; margin-bottom: 1.5rem;">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem;">
<h3 style="margin: 0; font-size: 1.125rem;">Price Chart</h3>
<div style="display: flex; gap: 1rem; font-size: 0.875rem; color: var(--text-muted);">
<span id="last-update">--</span>
<span id="data-source">--</span>
</div>
</div>
<div id="tradingview-chart" style="width: 100%; height: 500px;"></div>
</div>
<!-- Indicators -->
<div style="background: rgba(0,0,0,0.2); border-radius: 16px; padding: 1.5rem; margin-bottom: 1.5rem;">
<h3 style="margin: 0 0 1rem 0; font-size: 1.125rem;">Key Indicators</h3>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem;">
<div style="background: rgba(0,0,0,0.2); border-radius: 8px; padding: 1rem;">
<div style="font-size: 0.75rem; text-transform: uppercase; color: var(--text-muted); margin-bottom: 0.5rem;">RSI (14)</div>
<div id="rsi-value" style="font-size: 1.5rem; font-weight: 700;">--</div>
</div>
<div style="background: rgba(0,0,0,0.2); border-radius: 8px; padding: 1rem;">
<div style="font-size: 0.75rem; text-transform: uppercase; color: var(--text-muted); margin-bottom: 0.5rem;">MACD</div>
<div id="macd-value" style="font-size: 1.5rem; font-weight: 700;">--</div>
</div>
<div style="background: rgba(0,0,0,0.2); border-radius: 8px; padding: 1rem;">
<div style="font-size: 0.75rem; text-transform: uppercase; color: var(--text-muted); margin-bottom: 0.5rem;">EMA (20)</div>
<div id="ema-value" style="font-size: 1.5rem; font-weight: 700;">--</div>
</div>
</div>
</div>
<!-- Loading Spinner -->
<div id="loading-spinner">
<div class="spinner"></div>
<p style="margin-top: 1rem; color: var(--text-muted);">Loading market data...</p>
</div>
<!-- Analysis Results -->
<div id="analysis-results"></div>
</div>
</main>
</div>
<!-- Toast Container -->
<div id="toast-container"></div>
<!-- Shared Scripts -->
<script type="module" src="../../shared/js/layouts/sidebar.js"></script>
<script type="module" src="../../shared/js/layouts/header.js"></script>
<script type="module" src="../../shared/js/components/toast.js"></script>
<script type="module" src="../../shared/js/utils/sanitizer.js"></script>
<!-- Page Script -->
<script type="module" src="/static/pages/technical-analysis/technical-analysis-professional.js"></script>
</body>
</html>