{"id":250,"date":"2025-09-03T16:35:00","date_gmt":"2025-09-03T13:35:00","guid":{"rendered":"https:\/\/investopedia.su\/ru\/?page_id=250"},"modified":"2026-02-11T23:56:32","modified_gmt":"2026-02-11T20:56:32","slug":"simulator","status":"publish","type":"page","link":"https:\/\/investopedia.su\/en\/simulator\/","title":{"rendered":"Online stock exchange trading simulator"},"content":{"rendered":"\n<div class=\"classica-terminal\">\n    <style>\n        \/* ========== ADAPTATION FOR CLASSICA PRESS 1.0.0 ========== *\/\n        :root {\n            --cp-bg: #f5f7fa;\n            --cp-card: #ffffff;\n            --cp-text: #2c3e50;\n            --cp-border: #e2e8f0;\n            --cp-accent: #2271b1;\n            --cp-accent-light: #72aee6;\n            --cp-success: #00a32a;\n            --cp-error: #d63638;\n            --cp-warning: #f0b849;\n            --cp-dark: #1e1e1e;\n        }\n\n        * {\n            box-sizing: border-box;\n            margin: 0;\n            padding: 0;\n        }\n\n        .classica-terminal {\n            font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n            background: var(--cp-bg);\n            color: var(--cp-text);\n            width: 100%;\n            max-width: 100%;\n            margin: 0;\n            padding: 15px;\n            border-radius: 8px;\n            box-sizing: border-box;\n            overflow-x: hidden;\n        }\n\n        \/* ========== GRID FOR WORDPRESS WITH RIGHT SIDEBAR ========== *\/\n        .cp-grid {\n            display: grid;\n            grid-template-columns: 1fr 300px;\n            gap: 20px;\n            width: 100%;\n        }\n\n        \/* ========== MOBILE ADAPTATION - FIXED ========== *\/\n        @media screen and (max-width: 1000px) {\n            .cp-grid {\n                grid-template-columns: 1fr;\n                gap: 15px;\n            }\n            \n            .classica-terminal {\n                padding: 10px;\n                overflow-x: hidden;\n            }\n            \n            .cp-chart {\n                padding: 12px;\n            }\n            \n            .cp-chart-container {\n                height: 200px !important;\n                width: 100% !important;\n            }\n            \n            canvas {\n                max-width: 100% !important;\n                width: 100% !important;\n                height: auto !important;\n            }\n            \n            .cp-trade-panel {\n                flex-direction: column;\n                align-items: stretch;\n                padding: 15px;\n                gap: 15px;\n            }\n            \n            .cp-trade-input {\n                width: 100%;\n                justify-content: space-between;\n            }\n            \n            .cp-trade-field {\n                width: 80px;\n            }\n            \n            .cp-trade-buttons {\n                width: 100%;\n                display: flex;\n                gap: 10px;\n            }\n            \n            .cp-trade-buttons button {\n                flex: 1;\n                padding: 12px !important;\n                font-size: 14px;\n            }\n            \n            .cp-assets-grid {\n                grid-template-columns: 1fr !important;\n            }\n            \n            .cp-timeframe {\n                overflow-x: auto;\n                white-space: nowrap;\n                padding-bottom: 8px;\n                margin-top: 10px;\n                display: flex;\n                flex-wrap: nowrap;\n                width: 100%;\n            }\n            \n            .cp-time-btn {\n                flex: 0 0 auto;\n            }\n            \n            .cp-symbol-info {\n                flex-wrap: wrap;\n                gap: 8px;\n            }\n            \n            .cp-symbol {\n                font-size: 20px;\n            }\n            \n            .cp-price {\n                font-size: 22px;\n            }\n            \n            .cp-change {\n                font-size: 14px;\n            }\n            \n            .cp-order-panel {\n                padding: 15px;\n            }\n            \n            .cp-order-tabs {\n                overflow-x: auto;\n                white-space: nowrap;\n                padding-bottom: 4px;\n            }\n            \n            .cp-order-tab {\n                flex: 0 0 auto;\n            }\n            \n            .cp-order-inputs {\n                grid-template-columns: 1fr !important;\n                gap: 10px;\n            }\n        }\n\n        \/* ========== CLASSICA PRESS STYLES ========== *\/\n        .cp-card {\n            background: var(--cp-card);\n            border: 1px solid var(--cp-border);\n            border-radius: 8px;\n            padding: 16px;\n            margin-bottom: 16px;\n            box-shadow: 0 1px 3px rgba(0,0,0,0.05);\n        }\n\n        .cp-header {\n            background: var(--cp-card);\n            border: 1px solid var(--cp-border);\n            border-radius: 8px;\n            padding: 12px 20px;\n            margin-bottom: 20px;\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            flex-wrap: wrap;\n            box-shadow: 0 1px 3px rgba(0,0,0,0.05);\n            width: 100%;\n        }\n\n        .cp-balance-item {\n            display: inline-flex;\n            align-items: center;\n            gap: 10px;\n            padding: 8px 16px;\n            background: var(--cp-bg);\n            border-radius: 20px;\n            font-size: 14px;\n        }\n\n        .cp-badge {\n            padding: 4px 12px;\n            border-radius: 20px;\n            font-size: 13px;\n            font-weight: 600;\n        }\n\n        .cp-badge-success {\n            background: rgba(0, 163, 42, 0.1);\n            color: #00a32a;\n        }\n\n        .cp-badge-warning {\n            background: rgba(240, 184, 73, 0.1);\n            color: #b26200;\n        }\n\n        \/* ========== SEARCH ========== *\/\n        .cp-search {\n            position: relative;\n            margin-bottom: 16px;\n            width: 100%;\n        }\n\n        .cp-search-input {\n            width: 100%;\n            padding: 12px 16px;\n            background: var(--cp-card);\n            border: 1px solid var(--cp-border);\n            border-radius: 30px;\n            color: var(--cp-text);\n            font-size: 14px;\n            transition: all 0.2s;\n            box-sizing: border-box;\n        }\n\n        .cp-search-input:focus {\n            border-color: var(--cp-accent);\n            outline: none;\n            box-shadow: 0 0 0 1px var(--cp-accent);\n        }\n\n        \/* ========== CHART ========== *\/\n        .cp-chart {\n            background: var(--cp-card);\n            border: 1px solid var(--cp-border);\n            border-radius: 8px;\n            padding: 16px;\n            margin-bottom: 16px;\n            width: 100%;\n            box-sizing: border-box;\n        }\n\n        .cp-chart-header {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            margin-bottom: 16px;\n            flex-wrap: wrap;\n            width: 100%;\n        }\n\n        .cp-symbol-info {\n            display: flex;\n            align-items: baseline;\n            gap: 16px;\n            flex-wrap: wrap;\n        }\n\n        .cp-symbol {\n            font-size: 24px;\n            font-weight: 700;\n            color: var(--cp-text);\n        }\n\n        .cp-price {\n            font-size: 28px;\n            font-weight: 700;\n            color: var(--cp-success);\n        }\n\n        .cp-change {\n            font-size: 16px;\n            font-weight: 600;\n            padding: 4px 12px;\n            border-radius: 20px;\n        }\n\n        .cp-chart-container {\n            height: 260px;\n            width: 100%;\n            position: relative;\n        }\n\n        canvas {\n            max-width: 100%;\n            height: auto;\n        }\n\n        \/* ========== PROFESSIONAL TRADING PANEL ========== *\/\n        .cp-order-panel {\n            background: var(--cp-card);\n            border: 1px solid var(--cp-border);\n            border-radius: 8px;\n            padding: 16px;\n            margin-top: 16px;\n            width: 100%;\n            box-sizing: border-box;\n        }\n\n        .cp-order-tabs {\n            display: flex;\n            gap: 4px;\n            background: var(--cp-bg);\n            padding: 4px;\n            border-radius: 30px;\n            margin-bottom: 16px;\n            flex-wrap: wrap;\n        }\n\n        .cp-order-tab {\n            flex: 1;\n            padding: 8px 12px;\n            background: transparent;\n            border: none;\n            border-radius: 30px;\n            color: var(--cp-text);\n            font-size: 12px;\n            font-weight: 600;\n            cursor: pointer;\n            transition: all 0.2s;\n            min-width: 70px;\n        }\n\n        .cp-order-tab.active {\n            background: var(--cp-accent);\n            color: white;\n        }\n\n        .cp-order-inputs {\n            display: grid;\n            grid-template-columns: 1fr 1fr 1fr;\n            gap: 12px;\n            margin-bottom: 16px;\n        }\n\n        .cp-order-input-group {\n            display: flex;\n            flex-direction: column;\n        }\n\n        .cp-order-label {\n            font-size: 11px;\n            color: #6b7280;\n            margin-bottom: 4px;\n        }\n\n        .cp-order-field {\n            width: 100%;\n            padding: 10px;\n            background: var(--cp-card);\n            border: 1px solid var(--cp-border);\n            border-radius: 30px;\n            color: var(--cp-text);\n            font-size: 13px;\n            box-sizing: border-box;\n        }\n\n        .cp-order-field:focus {\n            border-color: var(--cp-accent);\n            outline: none;\n        }\n\n        .cp-order-actions {\n            display: flex;\n            gap: 12px;\n        }\n\n        .cp-btn-buy {\n            background: var(--cp-success);\n            color: white;\n            border: none;\n            border-radius: 30px;\n            padding: 12px 28px;\n            font-weight: 700;\n            cursor: pointer;\n            transition: opacity 0.2s;\n            flex: 1;\n        }\n\n        .cp-btn-sell {\n            background: var(--cp-error);\n            color: white;\n            border: none;\n            border-radius: 30px;\n            padding: 12px 28px;\n            font-weight: 700;\n            cursor: pointer;\n            transition: opacity 0.2s;\n            flex: 1;\n        }\n\n        .cp-btn-limit {\n            background: transparent;\n            border: 1px solid var(--cp-border);\n            border-radius: 30px;\n            padding: 8px 16px;\n            color: var(--cp-text);\n            font-size: 12px;\n            cursor: pointer;\n        }\n\n        \/* ========== TIMEFRAMES ========== *\/\n        .cp-timeframe {\n            display: flex;\n            gap: 6px;\n            margin-top: 12px;\n            padding-bottom: 4px;\n            flex-wrap: wrap;\n        }\n\n        .cp-time-btn {\n            padding: 6px 14px;\n            background: transparent;\n            border: 1px solid var(--cp-border);\n            border-radius: 30px;\n            color: var(--cp-text);\n            font-size: 13px;\n            cursor: pointer;\n            transition: all 0.2s;\n        }\n\n        .cp-time-btn.active {\n            background: var(--cp-accent);\n            border-color: var(--cp-accent);\n            color: white;\n        }\n\n        \/* ========== FILTERS ========== *\/\n        .cp-filters {\n            display: flex;\n            gap: 8px;\n            margin-bottom: 16px;\n            flex-wrap: wrap;\n        }\n\n        .cp-filter-btn {\n            padding: 8px 16px;\n            background: var(--cp-card);\n            border: 1px solid var(--cp-border);\n            border-radius: 30px;\n            color: var(--cp-text);\n            font-size: 13px;\n            cursor: pointer;\n        }\n\n        .cp-filter-btn.active {\n            background: var(--cp-accent);\n            border-color: var(--cp-accent);\n            color: white;\n        }\n\n        \/* ========== ASSETS GRID ========== *\/\n        .cp-assets {\n            background: var(--cp-card);\n            border: 1px solid var(--cp-border);\n            border-radius: 8px;\n            padding: 16px;\n            width: 100%;\n            box-sizing: border-box;\n        }\n\n        .cp-assets-grid {\n            display: grid;\n            grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));\n            gap: 12px;\n            max-height: 450px;\n            overflow-y: auto;\n            margin-top: 12px;\n            padding-right: 4px;\n        }\n\n        .cp-asset-item {\n            background: var(--cp-bg);\n            border: 1px solid var(--cp-border);\n            border-radius: 8px;\n            padding: 14px;\n            transition: all 0.2s;\n            cursor: pointer;\n        }\n\n        .cp-asset-item:hover {\n            border-color: var(--cp-accent);\n            box-shadow: 0 2px 8px rgba(0,0,0,0.05);\n        }\n\n        .cp-asset-header {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            margin-bottom: 10px;\n        }\n\n        .cp-asset-symbol {\n            font-weight: 700;\n            color: var(--cp-text);\n        }\n\n        .cp-asset-exchange {\n            font-size: 11px;\n            color: #6b7280;\n        }\n\n        .cp-asset-price {\n            font-size: 20px;\n            font-weight: 700;\n            color: var(--cp-text);\n        }\n\n        .cp-asset-change {\n            font-size: 12px;\n            padding: 2px 8px;\n            border-radius: 20px;\n        }\n\n        .cp-asset-holdings {\n            font-size: 12px;\n            color: #6b7280;\n            margin: 8px 0;\n        }\n\n        .cp-asset-actions {\n            display: flex;\n            gap: 8px;\n            margin-top: 10px;\n        }\n\n        .cp-asset-buy {\n            flex: 1;\n            padding: 8px;\n            background: rgba(0, 163, 42, 0.1);\n            border: 1px solid var(--cp-success);\n            color: var(--cp-success);\n            border-radius: 30px;\n            font-weight: 600;\n            font-size: 12px;\n            cursor: pointer;\n        }\n\n        .cp-asset-sell {\n            flex: 1;\n            padding: 8px;\n            background: rgba(214, 54, 56, 0.1);\n            border: 1px solid var(--cp-error);\n            color: var(--cp-error);\n            border-radius: 30px;\n            font-weight: 600;\n            font-size: 12px;\n            cursor: pointer;\n        }\n\n        \/* ========== RIGHT COLUMN ========== *\/\n        .cp-sidebar {\n            display: flex;\n            flex-direction: column;\n            gap: 16px;\n        }\n\n        \/* ========== PORTFOLIO ========== *\/\n        .cp-portfolio {\n            background: var(--cp-card);\n            border: 1px solid var(--cp-border);\n            border-radius: 8px;\n            padding: 16px;\n        }\n\n        .cp-portfolio-item {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            padding: 12px 0;\n            border-bottom: 1px solid var(--cp-border);\n            cursor: pointer;\n        }\n\n        .cp-portfolio-item:hover {\n            background: var(--cp-bg);\n        }\n\n        \/* ========== ORDER BOOK ========== *\/\n        .cp-orderbook {\n            background: var(--cp-card);\n            border: 1px solid var(--cp-border);\n            border-radius: 8px;\n            padding: 16px;\n        }\n\n        .cp-order-row {\n            display: flex;\n            justify-content: space-between;\n            padding: 6px 10px;\n            border-radius: 4px;\n            font-size: 13px;\n        }\n\n        .cp-order-ask {\n            color: var(--cp-error);\n        }\n\n        .cp-order-bid {\n            color: var(--cp-success);\n        }\n\n        \/* ========== TOURNAMENT ========== *\/\n        .cp-tournament {\n            background: linear-gradient(145deg, var(--cp-card), #f8fafc);\n            border: 1px solid var(--cp-border);\n            border-radius: 8px;\n            padding: 16px;\n        }\n\n        .cp-tournament-row {\n            display: flex;\n            justify-content: space-between;\n            padding: 10px 0;\n            border-bottom: 1px solid var(--cp-border);\n        }\n\n        .cp-btn-tournament {\n            width: 100%;\n            margin-top: 12px;\n            padding: 12px;\n            background: var(--cp-warning);\n            border: none;\n            border-radius: 30px;\n            color: #000;\n            font-weight: 700;\n            cursor: pointer;\n        }\n\n        \/* ========== RISK ========== *\/\n        .cp-risk {\n            background: var(--cp-card);\n            border: 1px solid var(--cp-border);\n            border-radius: 8px;\n            padding: 16px;\n        }\n\n        .cp-risk-grid {\n            display: grid;\n            grid-template-columns: 1fr 1fr;\n            gap: 12px;\n            margin-top: 12px;\n        }\n\n        \/* ========== STOP-LOSSES ========== *\/\n        .cp-stoploss {\n            background: var(--cp-card);\n            border: 1px solid var(--cp-border);\n            border-radius: 8px;\n            padding: 16px;\n        }\n\n        \/* ========== RESET BUTTON ========== *\/\n        .cp-btn-reset {\n            width: 100%;\n            padding: 14px;\n            background: rgba(214, 54, 56, 0.1);\n            border: 1px solid var(--cp-error);\n            color: var(--cp-error);\n            border-radius: 30px;\n            font-weight: 600;\n            cursor: pointer;\n        }\n\n        \/* ========== SCROLLBAR ========== *\/\n        .cp-assets-grid::-webkit-scrollbar {\n            width: 4px;\n        }\n        .cp-assets-grid::-webkit-scrollbar-track {\n            background: var(--cp-bg);\n        }\n        .cp-assets-grid::-webkit-scrollbar-thumb {\n            background: var(--cp-accent-light);\n            border-radius: 4px;\n        }\n    <\/style>\n\n    <!-- API KEYS -->\n    <div style=\"display: none;\" id=\"alphaVantageKey\">HKE6A63443GQM203<\/div>\n    <div style=\"display: none;\" id=\"cbrApiUrl\">https:\/\/www.cbr-xml-daily.ru\/daily_json.js<\/div>\n\n    <!-- ========== HEADER ========== -->\n    <div class=\"cp-header\">\n        <div style=\"display: flex; align-items: center; gap: 20px; flex-wrap: wrap;\">\n            <span style=\"font-size: 22px; font-weight: 700; color: var(--cp-accent);\">\ud83d\udcc8 PRO TRADER<\/span>\n            <div class=\"cp-balance-item\">\n                <span>\ud83d\udcb0 Balance:<\/span>\n                <span style=\"font-weight: 700; color: var(--cp-success);\" id=\"cpBalance\">$100,000.00<\/span>\n            <\/div>\n            <div class=\"cp-balance-item\">\n                <span>\ud83d\udcca Portfolio:<\/span>\n                <span style=\"font-weight: 700;\" id=\"cpPortfolioValue\">$0.00<\/span>\n            <\/div>\n            <div class=\"cp-badge cp-badge-warning\" id=\"cpUsdRub\">\n                \ud83c\uddf7\ud83c\uddfa USD\/RUB: 91.50\n            <\/div>\n        <\/div>\n        <div style=\"display: flex; gap: 8px;\">\n            <span class=\"cp-badge\" style=\"background: var(--cp-accent); color: white;\">\u25cf LIVE<\/span>\n        <\/div>\n    <\/div>\n\n    <!-- ========== MAIN GRID ========== -->\n    <div class=\"cp-grid\">\n        <!-- LEFT COLUMN -->\n        <div>\n            <!-- CHART -->\n            <div class=\"cp-chart\">\n                <div class=\"cp-chart-header\">\n                    <div class=\"cp-symbol-info\">\n                        <span class=\"cp-symbol\" id=\"cpChartSymbol\">BTC\/USD<\/span>\n                        <span class=\"cp-price\" id=\"cpChartPrice\">$48,500<\/span>\n                        <span class=\"cp-change\" id=\"cpChartChange\" style=\"background: rgba(0,163,42,0.1); color: #00a32a;\">\u25b2 +2.4%<\/span>\n                    <\/div>\n                <\/div>\n                \n                <!-- CHART -->\n                <div class=\"cp-chart-container\">\n                    <canvas id=\"cpMainChart\"><\/canvas>\n                <\/div>\n                \n                <!-- TIMEFRAMES -->\n                <div class=\"cp-timeframe\" id=\"cpTimeframe\">\n                    <button class=\"cp-time-btn\" data-period=\"1m\">1M<\/button>\n                    <button class=\"cp-time-btn\" data-period=\"5m\">5M<\/button>\n                    <button class=\"cp-time-btn\" data-period=\"15m\">15M<\/button>\n                    <button class=\"cp-time-btn\" data-period=\"1h\">1H<\/button>\n                    <button class=\"cp-time-btn active\" data-period=\"1d\">1D<\/button>\n                    <button class=\"cp-time-btn\" data-period=\"1w\">1W<\/button>\n                    <button class=\"cp-time-btn\" data-period=\"1M\">1MO<\/button>\n                <\/div>\n            <\/div>\n\n            <!-- PROFESSIONAL TRADING PANEL -->\n            <div class=\"cp-order-panel\">\n                <div class=\"cp-order-tabs\">\n                    <button class=\"cp-order-tab active\" data-ordertype=\"market\">Market<\/button>\n                    <button class=\"cp-order-tab\" data-ordertype=\"limit\">Limit<\/button>\n                    <button class=\"cp-order-tab\" data-ordertype=\"stop\">Stop<\/button>\n                    <button class=\"cp-order-tab\" data-ordertype=\"stoplimit\">Stop-limit<\/button>\n                    <button class=\"cp-order-tab\" data-ordertype=\"takeprofit\">Take profit<\/button>\n                <\/div>\n                \n                <div class=\"cp-order-inputs\">\n                    <div class=\"cp-order-input-group\">\n                        <span class=\"cp-order-label\">Price<\/span>\n                        <input type=\"text\" id=\"cpOrderPrice\" class=\"cp-order-field\" placeholder=\"0.00\">\n                    <\/div>\n                    <div class=\"cp-order-input-group\">\n                        <span class=\"cp-order-label\">Quantity<\/span>\n                        <input type=\"number\" id=\"cpOrderQuantity\" class=\"cp-order-field\" value=\"1\" min=\"1\">\n                    <\/div>\n                    <div class=\"cp-order-input-group\">\n                        <span class=\"cp-order-label\">Stop price<\/span>\n                        <input type=\"text\" id=\"cpStopPrice\" class=\"cp-order-field\" placeholder=\"0.00\" disabled>\n                    <\/div>\n                <\/div>\n\n                <div class=\"cp-order-actions\">\n                    <button class=\"cp-btn-buy\" id=\"cpPlaceBuyOrder\">\ud83d\udcc8 Buy<\/button>\n                    <button class=\"cp-btn-sell\" id=\"cpPlaceSellOrder\">\ud83d\udcc9 Sell<\/button>\n                <\/div>\n            <\/div>\n\n            <!-- FILTERS -->\n            <div class=\"cp-filters\">\n                <button class=\"cp-filter-btn active\" data-market=\"all\">\ud83d\udd25 All markets<\/button>\n                <button class=\"cp-filter-btn\" data-market=\"NASDAQ\">\ud83d\udcbb NASDAQ<\/button>\n                <button class=\"cp-filter-btn\" data-market=\"NYSE\">\ud83c\udfdb\ufe0f NYSE<\/button>\n                <button class=\"cp-filter-btn\" data-market=\"MOEX\">\ud83c\uddf7\ud83c\uddfa MOEX<\/button>\n                <button class=\"cp-filter-btn\" data-market=\"CRYPTO\">\u20bf Crypto<\/button>\n            <\/div>\n\n            <!-- SEARCH -->\n            <div class=\"cp-search\">\n                <input type=\"text\" id=\"cpSearch\" class=\"cp-search-input\" placeholder=\"\ud83d\udd0d Search assets (AAPL, BTC, SBER...)\" autocomplete=\"off\">\n            <\/div>\n\n            <!-- AVAILABLE ASSETS -->\n            <div class=\"cp-assets\">\n                <div style=\"display: flex; justify-content: space-between; align-items: center;\">\n                    <span style=\"font-weight: 700;\">\ud83d\udccb Available assets<\/span>\n                    <span style=\"color: var(--cp-accent);\" id=\"cpAssetsCount\">0\/0<\/span>\n                <\/div>\n                <div class=\"cp-assets-grid\" id=\"cpAssetsGrid\"><\/div>\n            <\/div>\n        <\/div>\n\n        <!-- RIGHT COLUMN -->\n        <div class=\"cp-sidebar\">\n            <!-- PORTFOLIO -->\n            <div class=\"cp-portfolio\">\n                <div style=\"display: flex; justify-content: space-between; margin-bottom: 12px;\">\n                    <span style=\"font-weight: 700;\">\ud83d\udcc1 My portfolio<\/span>\n                    <span style=\"color: #6b7280; font-size: 13px;\" id=\"cpRiskLevel\">Risk: 0%<\/span>\n                <\/div>\n                <div id=\"cpPortfolioList\"><\/div>\n            <\/div>\n\n            <!-- TOURNAMENT -->\n            <div class=\"cp-tournament\">\n                <div style=\"display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px;\">\n                    <span style=\"font-weight: 700;\">\ud83c\udfc6 Trader tournament<\/span>\n                    <span style=\"background: var(--cp-warning); padding: 4px 12px; border-radius: 20px; color: #000; font-size: 12px; font-weight: 700;\">WEEKLY<\/span>\n                <\/div>\n                <div id=\"cpTournamentList\"><\/div>\n                <button class=\"cp-btn-tournament\" id=\"cpJoinTournamentBtn\">\n                    \u2694\ufe0f Join competition\n                <\/button>\n            <\/div>\n\n            <!-- ORDER BOOK (MOVED BELOW TOURNAMENT) -->\n            <div class=\"cp-orderbook\">\n                <div style=\"display: flex; justify-content: space-between; margin-bottom: 12px;\">\n                    <span style=\"font-weight: 700;\">\ud83d\udcca Order book<\/span>\n                    <span style=\"color: #6b7280;\" id=\"cpOrderBookSymbol\">BTC<\/span>\n                <\/div>\n                <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\n                    <div>\n                        <div style=\"color: var(--cp-error); font-size: 12px; margin-bottom: 8px;\">ASK<\/div>\n                        <div id=\"cpAskOrders\" style=\"display: flex; flex-direction: column; gap: 2px;\"><\/div>\n                    <\/div>\n                    <div>\n                        <div style=\"color: var(--cp-success); font-size: 12px; margin-bottom: 8px;\">BID<\/div>\n                        <div id=\"cpBidOrders\" style=\"display: flex; flex-direction: column; gap: 2px;\"><\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <!-- RISK -->\n            <div class=\"cp-risk\">\n                <span style=\"font-weight: 700;\">\u26a0\ufe0f Risk monitoring<\/span>\n                <div class=\"cp-risk-grid\">\n                    <div>\n                        <div style=\"color: #6b7280; font-size: 12px;\">Margin<\/div>\n                        <div style=\"font-weight: 700;\" id=\"cpMargin\">0%<\/div>\n                    <\/div>\n                    <div>\n                        <div style=\"color: #6b7280; font-size: 12px;\">Risk level<\/div>\n                        <div style=\"font-weight: 700; color: var(--cp-success);\" id=\"cpRiskStatus\">Low<\/div>\n                    <\/div>\n                    <div>\n                        <div style=\"color: #6b7280; font-size: 12px;\">Daily P&#038;L<\/div>\n                        <div id=\"cpDailyPnL\">$0.00<\/div>\n                    <\/div>\n                    <div>\n                        <div style=\"color: #6b7280; font-size: 12px;\">Open P&#038;L<\/div>\n                        <div id=\"cpOpenPnL\">$0.00<\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <!-- STOP-LOSSES -->\n            <div class=\"cp-stoploss\">\n                <div style=\"display: flex; gap: 8px; align-items: center; margin-bottom: 12px;\">\n                    <span style=\"font-weight: 700; font-size: 14px;\">\ud83d\udee1\ufe0f Stop-losses<\/span>\n                    <span style=\"background: var(--cp-error); color: white; padding: 2px 12px; border-radius: 20px; font-size: 12px;\" id=\"cpStopLossCount\">0<\/span>\n                <\/div>\n                <div id=\"cpStopLossList\"><\/div>\n            <\/div>\n\n            <!-- RESET BUTTON -->\n            <button class=\"cp-btn-reset\" id=\"cpResetBtn\">\n                \ud83d\udd04 Reset demo account\n            <\/button>\n        <\/div>\n    <\/div>\n\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js@4.4.0\/dist\/chart.umd.min.js\"><\/script>\n    <script>\n        (function() {\n            \/\/ ========== PROFESSIONAL CLASSICA PRESS TERMINAL ==========\n            const API_KEY = 'HKE6A63443GQM203';\n            const CBR_URL = 'https:\/\/www.cbr-xml-daily.ru\/daily_json.js';\n            const INITIAL_CAPITAL = 100000.00;\n            \n            let usdRubRate = 91.50;\n            \n            \/\/ ASSET DATABASE\n            const ASSETS = [\n                { symbol: 'BTC', name: 'Bitcoin', exchange: 'CRYPTO', price: 48500.00, currency: 'USD' },\n                { symbol: 'ETH', name: 'Ethereum', exchange: 'CRYPTO', price: 2850.00, currency: 'USD' },\n                { symbol: 'BNB', name: 'Binance Coin', exchange: 'CRYPTO', price: 345.00, currency: 'USD' },\n                { symbol: 'SOL', name: 'Solana', exchange: 'CRYPTO', price: 110.00, currency: 'USD' },\n                { symbol: 'XRP', name: 'Ripple', exchange: 'CRYPTO', price: 0.62, currency: 'USD' },\n                { symbol: 'TON', name: 'Toncoin', exchange: 'CRYPTO', price: 2.45, currency: 'USD' },\n                { symbol: 'DOGE', name: 'Dogecoin', exchange: 'CRYPTO', price: 0.12, currency: 'USD' },\n                { symbol: 'ADA', name: 'Cardano', exchange: 'CRYPTO', price: 0.45, currency: 'USD' },\n                { symbol: 'SBER', name: 'Sberbank', exchange: 'MOEX', price: 285.50, currency: 'RUB' },\n                { symbol: 'GAZP', name: 'Gazprom', exchange: 'MOEX', price: 162.30, currency: 'RUB' },\n                { symbol: 'LKOH', name: 'Lukoil', exchange: 'MOEX', price: 7240.00, currency: 'RUB' },\n                { symbol: 'YNDX', name: 'Yandex', exchange: 'MOEX', price: 3250.50, currency: 'RUB' },\n                { symbol: 'ROSN', name: 'Rosneft', exchange: 'MOEX', price: 545.60, currency: 'RUB' },\n                { symbol: 'NVTK', name: 'Novatek', exchange: 'MOEX', price: 1250.00, currency: 'RUB' },\n                { symbol: 'AAPL', name: 'Apple Inc.', exchange: 'NASDAQ', price: 175.34, currency: 'USD' },\n                { symbol: 'MSFT', name: 'Microsoft', exchange: 'NASDAQ', price: 332.50, currency: 'USD' },\n                { symbol: 'GOOGL', name: 'Google', exchange: 'NASDAQ', price: 138.75, currency: 'USD' },\n                { symbol: 'AMZN', name: 'Amazon', exchange: 'NASDAQ', price: 128.40, currency: 'USD' },\n                { symbol: 'TSLA', name: 'Tesla', exchange: 'NASDAQ', price: 245.60, currency: 'USD' },\n                { symbol: 'NVDA', name: 'NVIDIA', exchange: 'NASDAQ', price: 450.25, currency: 'USD' },\n                { symbol: 'META', name: 'Meta', exchange: 'NASDAQ', price: 312.80, currency: 'USD' },\n                { symbol: 'JPM', name: 'JPMorgan', exchange: 'NYSE', price: 155.30, currency: 'USD' },\n                { symbol: 'WMT', name: 'Walmart', exchange: 'NYSE', price: 62.18, currency: 'USD' },\n            ];\n\n            \/\/ TERMINAL STATE\n            let state = {\n                balance: INITIAL_CAPITAL,\n                portfolio: {},\n                transactions: [],\n                activeOrders: [],\n                stopLosses: [],\n                takeProfits: [],\n                activeAsset: ASSETS[0],\n                chartPeriod: '1d',\n                marketFilter: 'all',\n                orderType: 'market',\n                username: ''\n            };\n\n            let currentPrices = {};\n            let chartInstance = null;\n            let tournamentPlayers = [];\n            let isInTournament = false;\n\n            \/\/ ========== CENTRAL BANK OF RUSSIA RATE ==========\n            async function fetchRubRate() {\n                try {\n                    const res = await fetch(CBR_URL);\n                    const data = await res.json();\n                    if (data.Valute?.USD) {\n                        usdRubRate = data.Valute.USD.Value;\n                        document.getElementById('cpUsdRub').innerHTML = `\ud83c\uddf7\ud83c\uddfa USD\/RUB: ${usdRubRate.toFixed(2)}`;\n                    }\n                } catch(e) {\n                    usdRubRate = 91.50 + (Math.random() * 2 - 1);\n                }\n            }\n\n            \/\/ ========== CURRENCY CONVERSION ==========\n            function toUSD(amount, currency) {\n                if (currency === 'USD') return amount;\n                if (currency === 'RUB') return amount \/ usdRubRate;\n                return amount;\n            }\n\n            function formatPrice(price, currency) {\n                return currency === 'RUB' ? `\u20bd${price.toFixed(2)}` : `$${price.toFixed(2)}`;\n            }\n\n            \/\/ ========== FETCH PRICES ==========\n            async function fetchPrice(symbol) {\n                const asset = ASSETS.find(a => a.symbol === symbol);\n                if (!asset) return 100;\n                \n                try {\n                    if (asset.exchange === 'CRYPTO') {\n                        const url = `https:\/\/www.alphavantage.co\/query?function=CURRENCY_EXCHANGE_RATE&from_currency=${symbol}&to_currency=USD&apikey=${API_KEY}`;\n                        const res = await fetch(url);\n                        const data = await res.json();\n                        if (data['Realtime Currency Exchange Rate']) {\n                            return parseFloat(data['Realtime Currency Exchange Rate']['5. Exchange Rate']);\n                        }\n                    } else if (asset.exchange !== 'MOEX') {\n                        const url = `https:\/\/www.alphavantage.co\/query?function=GLOBAL_QUOTE&symbol=${symbol}&apikey=${API_KEY}`;\n                        const res = await fetch(url);\n                        const data = await res.json();\n                        if (data['Global Quote']?.['05. price']) {\n                            return parseFloat(data['Global Quote']['05. price']);\n                        }\n                    }\n                } catch(e) {}\n                \n                const volatility = asset.exchange === 'CRYPTO' ? 0.04 : 0.02;\n                return asset.price * (1 + (Math.random() * volatility * 2 - volatility));\n            }\n\n            \/\/ ========== UPDATE PRICES ==========\n            async function refreshPrices() {\n                for (const asset of ASSETS.slice(0, 15)) {\n                    currentPrices[asset.symbol] = await fetchPrice(asset.symbol);\n                }\n                renderAssets();\n                updateChartPrice();\n                updateOrderBook();\n                checkStopLossesAndTakeProfits();\n                updatePortfolioValue();\n            }\n\n            \/\/ ========== CHART ==========\n            function renderChart() {\n                const ctx = document.getElementById('cpMainChart').getContext('2d');\n                const asset = state.activeAsset;\n                const basePrice = currentPrices[asset.symbol] || asset.price;\n                \n                let points = 50;\n                let data = [];\n                let labels = [];\n                \n                for (let i = 0; i < points; i++) {\n                    let volatility = asset.exchange === 'CRYPTO' ? 0.03 : 0.015;\n                    let price = basePrice * (1 + Math.sin(i\/5) * volatility + (Math.random() * volatility - volatility\/2));\n                    data.push(price);\n                    labels.push(i);\n                }\n                \n                if (chartInstance) chartInstance.destroy();\n                \n                chartInstance = new Chart(ctx, {\n                    type: 'line',\n                    data: {\n                        labels: labels,\n                        datasets: [{\n                            data: data,\n                            borderColor: '#2271b1',\n                            backgroundColor: 'rgba(34, 113, 177, 0.05)',\n                            borderWidth: 2,\n                            pointRadius: 0,\n                            tension: 0.2,\n                            fill: true\n                        }]\n                    },\n                    options: {\n                        responsive: true,\n                        maintainAspectRatio: false,\n                        animation: false,\n                        plugins: { \n                            legend: { display: false },\n                            tooltip: { enabled: true }\n                        },\n                        scales: {\n                            y: { \n                                grid: { color: 'rgba(0,0,0,0.05)' },\n                                ticks: { color: '#6b7280' }\n                            },\n                            x: { display: false }\n                        }\n                    }\n                });\n                \n                updateChartPrice();\n            }\n\n            function updateChartPrice() {\n                const asset = state.activeAsset;\n                const price = currentPrices[asset.symbol] || asset.price;\n                const change = ((price - asset.price) \/ asset.price * 100).toFixed(2);\n                \n                document.getElementById('cpChartSymbol').innerHTML = `${asset.symbol}\/${asset.currency === 'RUB' ? 'RUB' : 'USD'}`;\n                document.getElementById('cpChartPrice').innerHTML = formatPrice(price, asset.currency);\n                document.getElementById('cpOrderBookSymbol').innerHTML = asset.symbol;\n                \n                const changeEl = document.getElementById('cpChartChange');\n                changeEl.innerHTML = `${parseFloat(change) >= 0 ? '\u25b2' : '\u25bc'} ${Math.abs(change)}%`;\n                changeEl.style.color = parseFloat(change) >= 0 ? '#00a32a' : '#d63638';\n                changeEl.style.background = parseFloat(change) >= 0 ? 'rgba(0,163,42,0.1)' : 'rgba(214,54,56,0.1)';\n            }\n\n            \/\/ ========== ORDER BOOK ==========\n            function updateOrderBook() {\n                const asset = state.activeAsset;\n                const price = currentPrices[asset.symbol] || asset.price;\n                \n                let askHtml = '', bidHtml = '';\n                for (let i = 0; i < 6; i++) {\n                    const askPrice = price * (1 + (i + 1) * 0.001);\n                    const bidPrice = price * (1 - (i + 1) * 0.001);\n                    askHtml += `<div class=\"cp-order-row cp-order-ask\">\n                        <span>${askPrice.toFixed(2)}<\/span>\n                        <span>${Math.floor(Math.random() * 3) + 1}<\/span>\n                    <\/div>`;\n                    bidHtml += `<div class=\"cp-order-row cp-order-bid\">\n                        <span>${bidPrice.toFixed(2)}<\/span>\n                        <span>${Math.floor(Math.random() * 3) + 1}<\/span>\n                    <\/div>`;\n                }\n                document.getElementById('cpAskOrders').innerHTML = askHtml;\n                document.getElementById('cpBidOrders').innerHTML = bidHtml;\n            }\n\n            \/\/ ========== TRADING ==========\n            function buyAsset(symbol, quantity, price = null, orderType = 'market') {\n                const asset = ASSETS.find(a => a.symbol === symbol);\n                if (!asset) return alert('Asset not found');\n                \n                let executionPrice = price || currentPrices[symbol] || asset.price;\n                const costUSD = toUSD(executionPrice * quantity, asset.currency);\n                \n                if (orderType === 'market') {\n                    if (costUSD > state.balance) {\n                        alert(`\u274c Insufficient funds. Required: $${costUSD.toFixed(2)}`);\n                        return;\n                    }\n                    \n                    state.balance -= costUSD;\n                    state.portfolio[symbol] = (state.portfolio[symbol] || 0) + quantity;\n                    \n                    state.transactions.push({\n                        type: 'BUY',\n                        symbol,\n                        quantity,\n                        price: executionPrice,\n                        total: costUSD,\n                        timestamp: new Date()\n                    });\n                    \n                    showNotification(`\u2705 Bought ${quantity} ${symbol} at ${formatPrice(executionPrice, asset.currency)}`);\n                } else {\n                    const order = {\n                        id: Date.now() + Math.random(),\n                        type: orderType,\n                        symbol,\n                        quantity,\n                        price: executionPrice,\n                        direction: 'buy',\n                        timestamp: new Date()\n                    };\n                    state.activeOrders.push(order);\n                    showNotification(`\ud83d\udccb ${getOrderTypeName(orderType)} buy order for ${symbol} at ${formatPrice(executionPrice, asset.currency)}`);\n                }\n                \n                saveState();\n                renderAll();\n            }\n\n            function sellAsset(symbol, quantity, price = null, orderType = 'market') {\n                const asset = ASSETS.find(a => a.symbol === symbol);\n                if (!asset) return alert('Asset not found');\n                \n                const holding = state.portfolio[symbol] || 0;\n                if (holding < quantity) {\n                    alert(`\u274c Insufficient ${symbol}. Available: ${holding}`);\n                    return;\n                }\n                \n                let executionPrice = price || currentPrices[symbol] || asset.price;\n                const revenueUSD = toUSD(executionPrice * quantity, asset.currency);\n                \n                if (orderType === 'market') {\n                    state.balance += revenueUSD;\n                    state.portfolio[symbol] -= quantity;\n                    if (state.portfolio[symbol] <= 0) delete state.portfolio[symbol];\n                    \n                    state.transactions.push({\n                        type: 'SELL',\n                        symbol,\n                        quantity,\n                        price: executionPrice,\n                        total: revenueUSD,\n                        timestamp: new Date()\n                    });\n                    \n                    showNotification(`\u2705 Sold ${quantity} ${symbol} at ${formatPrice(executionPrice, asset.currency)}`);\n                } else {\n                    const order = {\n                        id: Date.now() + Math.random(),\n                        type: orderType,\n                        symbol,\n                        quantity,\n                        price: executionPrice,\n                        direction: 'sell',\n                        timestamp: new Date()\n                    };\n                    state.activeOrders.push(order);\n                    showNotification(`\ud83d\udccb ${getOrderTypeName(orderType)} sell order for ${symbol} at ${formatPrice(executionPrice, asset.currency)}`);\n                }\n                \n                saveState();\n                renderAll();\n            }\n\n            function getOrderTypeName(type) {\n                const names = {\n                    'market': 'Market',\n                    'limit': 'Limit',\n                    'stop': 'Stop',\n                    'stoplimit': 'Stop-limit',\n                    'takeprofit': 'Take profit'\n                };\n                return names[type] || type;\n            }\n\n            \/\/ ========== STOP-LOSS AND TAKE PROFIT ==========\n            function setStopLoss(symbol, stopPrice, quantity) {\n                const asset = ASSETS.find(a => a.symbol === symbol);\n                if (!asset) return;\n                \n                const stopLoss = {\n                    id: Date.now(),\n                    symbol,\n                    stopPrice,\n                    quantity,\n                    active: true,\n                    timestamp: new Date()\n                };\n                \n                state.stopLosses.push(stopLoss);\n                showNotification(`\ud83d\uded1 Stop-loss ${symbol}: ${formatPrice(stopPrice, asset.currency)}`);\n                renderStopLosses();\n            }\n\n            function setTakeProfit(symbol, targetPrice, quantity) {\n                const asset = ASSETS.find(a => a.symbol === symbol);\n                if (!asset) return;\n                \n                const takeProfit = {\n                    id: Date.now(),\n                    symbol,\n                    targetPrice,\n                    quantity,\n                    active: true,\n                    timestamp: new Date()\n                };\n                \n                state.takeProfits.push(takeProfit);\n                showNotification(`\ud83c\udfaf Take profit ${symbol}: ${formatPrice(targetPrice, asset.currency)}`);\n            }\n\n            function checkStopLossesAndTakeProfits() {\n                \/\/ Check stop-losses\n                state.stopLosses.forEach(sl => {\n                    if (!sl.active) return;\n                    const price = currentPrices[sl.symbol];\n                    if (price && price <= sl.stopPrice) {\n                        sellAsset(sl.symbol, sl.quantity, price, 'market');\n                        sl.active = false;\n                    }\n                });\n                \n                \/\/ Check take profits\n                state.takeProfits.forEach(tp => {\n                    if (!tp.active) return;\n                    const price = currentPrices[tp.symbol];\n                    if (price && price >= tp.targetPrice) {\n                        sellAsset(tp.symbol, tp.quantity, price, 'market');\n                        tp.active = false;\n                    }\n                });\n            }\n\n            \/\/ ========== RENDER ASSETS ==========\n            function renderAssets() {\n                const grid = document.getElementById('cpAssetsGrid');\n                const searchTerm = document.getElementById('cpSearch')?.value?.toLowerCase() || '';\n                \n                let filtered = ASSETS;\n                if (state.marketFilter !== 'all') {\n                    filtered = filtered.filter(a => a.exchange === state.marketFilter);\n                }\n                if (searchTerm) {\n                    filtered = filtered.filter(a => \n                        a.symbol.toLowerCase().includes(searchTerm) || \n                        a.name.toLowerCase().includes(searchTerm)\n                    );\n                }\n                \n                document.getElementById('cpAssetsCount').innerHTML = `${filtered.length}\/${ASSETS.length}`;\n                \n                let html = '';\n                filtered.slice(0, 20).forEach(asset => {\n                    const price = currentPrices[asset.symbol] || asset.price;\n                    const change = ((price - asset.price) \/ asset.price * 100).toFixed(1);\n                    const holdings = state.portfolio[asset.symbol] || 0;\n                    \n                    html += `\n                        <div class=\"cp-asset-item\" data-symbol=\"${asset.symbol}\" onclick=\"window.selectAsset('${asset.symbol}')\">\n                            <div class=\"cp-asset-header\">\n                                <div style=\"display: flex; align-items: center; gap: 8px;\">\n                                    <span class=\"cp-asset-symbol\">${asset.symbol}<\/span>\n                                    <span class=\"cp-asset-exchange\">${asset.exchange}<\/span>\n                                <\/div>\n                                <span style=\"font-size: 12px; color: ${parseFloat(change) >= 0 ? '#00a32a' : '#d63638'};\">\n                                    ${parseFloat(change) >= 0 ? '\u25b2' : '\u25bc'} ${Math.abs(change)}%\n                                <\/span>\n                            <\/div>\n                            <div style=\"display: flex; justify-content: space-between; align-items: baseline;\">\n                                <span class=\"cp-asset-price\">${formatPrice(price, asset.currency)}<\/span>\n                                <span style=\"font-size: 11px; color: #6b7280;\">\u2248 $${toUSD(price, asset.currency).toFixed(2)}<\/span>\n                            <\/div>\n                            <div class=\"cp-asset-holdings\">\n                                \ud83d\udce6 In portfolio: <span style=\"font-weight: 600;\">${holdings}<\/span>\n                            <\/div>\n                            <div class=\"cp-asset-actions\">\n                                <button class=\"cp-asset-buy\" onclick=\"event.stopPropagation(); window.buyAsset('${asset.symbol}', parseInt(document.getElementById('cp_qty_${asset.symbol}')?.value || 1))\">\n                                    Buy\n                                <\/button>\n                                <button class=\"cp-asset-sell\" onclick=\"event.stopPropagation(); window.sellAsset('${asset.symbol}', parseInt(document.getElementById('cp_qty_${asset.symbol}')?.value || 1))\">\n                                    Sell\n                                <\/button>\n                            <\/div>\n                            <div style=\"margin-top: 10px;\">\n                                <input type=\"number\" id=\"cp_qty_${asset.symbol}\" value=\"1\" min=\"1\" style=\"width: 100%; padding: 8px; background: white; border: 1px solid var(--cp-border); border-radius: 30px; color: var(--cp-text); box-sizing: border-box;\">\n                            <\/div>\n                        <\/div>\n                    `;\n                });\n                \n                grid.innerHTML = html;\n            }\n\n            \/\/ ========== PORTFOLIO ==========\n            function renderPortfolio() {\n                const container = document.getElementById('cpPortfolioList');\n                \n                if (Object.keys(state.portfolio).length === 0) {\n                    container.innerHTML = '<div style=\"color: #6b7280; padding: 16px; text-align: center;\">\ud83d\udced Portfolio is empty<\/div>';\n                    return;\n                }\n                \n                let html = '';\n                let totalUSD = 0;\n                \n                Object.keys(state.portfolio).forEach(symbol => {\n                    const qty = state.portfolio[symbol];\n                    const asset = ASSETS.find(a => a.symbol === symbol) || { currency: 'USD' };\n                    const price = currentPrices[symbol] || 0;\n                    const valueUSD = toUSD(price * qty, asset.currency);\n                    totalUSD += valueUSD;\n                    \n                    html += `\n                        <div class=\"cp-portfolio-item\" onclick=\"window.selectAsset('${symbol}')\">\n                            <div>\n                                <span style=\"font-weight: 700;\">${symbol}<\/span>\n                                <span style=\"font-size: 12px; color: #6b7280; margin-left: 6px;\">${qty} pcs.<\/span>\n                            <\/div>\n                            <div style=\"text-align: right;\">\n                                <span style=\"font-weight: 600;\">$${valueUSD.toFixed(2)}<\/span>\n                                <span style=\"font-size: 11px; color: #6b7280; display: block;\">${formatPrice(price, asset.currency)}<\/span>\n                            <\/div>\n                        <\/div>\n                    `;\n                    \n                    \/\/ Stop-loss and take profit buttons\n                    html += `\n                        <div style=\"display: flex; gap: 4px; margin-bottom: 12px;\">\n                            <button class=\"cp-time-btn\" style=\"flex: 1; font-size: 11px;\" onclick=\"event.stopPropagation(); window.setStopLoss('${symbol}', ${(price * 0.95).toFixed(2)}, ${qty})\">\n                                \ud83d\uded1 SL -5%\n                            <\/button>\n                            <button class=\"cp-time-btn\" style=\"flex: 1; font-size: 11px;\" onclick=\"event.stopPropagation(); window.setTakeProfit('${symbol}', ${(price * 1.1).toFixed(2)}, ${qty})\">\n                                \ud83c\udfaf TP +10%\n                            <\/button>\n                        <\/div>\n                    `;\n                });\n                \n                html += `\n                    <div style=\"display: flex; justify-content: space-between; margin-top: 16px; padding-top: 12px; border-top: 1px solid var(--cp-border);\">\n                        <span style=\"font-weight: 700;\">Total:<\/span>\n                        <span style=\"font-weight: 700; color: var(--cp-success);\">$${totalUSD.toFixed(2)}<\/span>\n                    <\/div>\n                `;\n                \n                container.innerHTML = html;\n            }\n\n            \/\/ ========== STOP-LOSSES ==========\n            function renderStopLosses() {\n                const container = document.getElementById('cpStopLossList');\n                const active = state.stopLosses.filter(sl => sl.active);\n                document.getElementById('cpStopLossCount').innerHTML = active.length;\n                \n                if (active.length === 0) {\n                    container.innerHTML = '<div style=\"color: #6b7280; font-size: 13px;\">No active stop-losses<\/div>';\n                    return;\n                }\n                \n                let html = '';\n                active.slice(0, 3).forEach(sl => {\n                    const asset = ASSETS.find(a => a.symbol === sl.symbol);\n                    html += `\n                        <div style=\"display: flex; justify-content: space-between; font-size: 13px; padding: 6px 0;\">\n                            <span>${sl.symbol}<\/span>\n                            <span style=\"color: #d63638;\">${formatPrice(sl.stopPrice, asset?.currency)}<\/span>\n                        <\/div>\n                    `;\n                });\n                container.innerHTML = html;\n            }\n\n            \/\/ ========== TOURNAMENT ==========\n            function generateTournamentPlayers() {\n                const names = ['CryptoKing', 'BullTrader', 'MoonShot', 'AlphaPro', 'DiamondHands', 'BTCWhale', 'RUBMaster'];\n                let players = [];\n                for (let i = 0; i < 5; i++) {\n                    const pnl = (Math.random() * 40000) - 5000;\n                    players.push({\n                        name: names[Math.floor(Math.random() * names.length)] + Math.floor(Math.random() * 100),\n                        pnl: pnl,\n                        percent: (pnl \/ 100000 * 100).toFixed(1)\n                    });\n                }\n                return players.sort((a, b) => b.pnl - a.pnl);\n            }\n\n            function renderTournament() {\n                const container = document.getElementById('cpTournamentList');\n                \n                if (!tournamentPlayers.length) {\n                    tournamentPlayers = generateTournamentPlayers();\n                }\n                \n                let html = '';\n                tournamentPlayers.slice(0, 5).forEach((p, i) => {\n                    const medal = i === 0 ? '\ud83e\udd47' : i === 1 ? '\ud83e\udd48' : i === 2 ? '\ud83e\udd49' : `${i+1}.`;\n                    html += `\n                        <div class=\"cp-tournament-row\">\n                            <span>${medal} ${p.name}<\/span>\n                            <span style=\"color: ${p.pnl >= 0 ? '#00a32a' : '#d63638'}; font-weight: 600;\">\n                                ${p.pnl >= 0 ? '+' : '-'}$${Math.abs(p.pnl).toFixed(0)} (${p.pnl >= 0 ? '+' : '-'}${Math.abs(p.percent)}%)\n                            <\/span>\n                        <\/div>\n                    `;\n                });\n                \n                if (isInTournament) {\n                    const username = getWPUsername() || 'You';\n                    const totalValue = state.balance + getPortfolioUSD();\n                    const userPnL = totalValue - INITIAL_CAPITAL;\n                    const userPercent = (userPnL \/ INITIAL_CAPITAL * 100).toFixed(1);\n                    html += `\n                        <div style=\"display: flex; justify-content: space-between; padding: 10px 0; margin-top: 8px; background: rgba(240,184,73,0.1); border-radius: 8px;\">\n                            <span style=\"font-weight: 700;\">\ud83d\udc64 ${username}<\/span>\n                            <span style=\"color: ${userPnL >= 0 ? '#00a32a' : '#d63638'}; font-weight: 700;\">\n                                ${userPnL >= 0 ? '+' : '-'}$${Math.abs(userPnL).toFixed(0)} (${userPercent}%)\n                            <\/span>\n                        <\/div>\n                    `;\n                }\n                \n                container.innerHTML = html;\n            }\n\n            \/\/ ========== CALCULATIONS ==========\n            function getPortfolioUSD() {\n                let total = 0;\n                Object.keys(state.portfolio).forEach(symbol => {\n                    const asset = ASSETS.find(a => a.symbol === symbol) || { currency: 'USD' };\n                    const price = currentPrices[symbol] || 0;\n                    total += toUSD(price * state.portfolio[symbol], asset.currency);\n                });\n                return total;\n            }\n\n            function updatePortfolioValue() {\n                const portfolioUSD = getPortfolioUSD();\n                const totalValue = state.balance + portfolioUSD;\n                const pnl = totalValue - INITIAL_CAPITAL;\n                \n                document.getElementById('cpPortfolioValue').innerHTML = `$${portfolioUSD.toFixed(2)}`;\n                document.getElementById('cpBalance').innerHTML = `$${state.balance.toFixed(2)}`;\n                document.getElementById('cpDailyPnL').innerHTML = `$${(pnl * 0.01).toFixed(2)}`;\n                document.getElementById('cpOpenPnL').innerHTML = `$${pnl.toFixed(2)}`;\n                document.getElementById('cpMargin').innerHTML = `${((portfolioUSD \/ state.balance) * 100 || 0).toFixed(1)}%`;\n                \n                const risk = state.balance > 0 ? (portfolioUSD \/ state.balance) * 100 : 0;\n                document.getElementById('cpRiskLevel').innerHTML = `Risk: ${risk.toFixed(1)}%`;\n                \n                if (risk > 50) {\n                    document.getElementById('cpRiskStatus').innerHTML = 'High';\n                    document.getElementById('cpRiskStatus').style.color = '#d63638';\n                } else if (risk > 25) {\n                    document.getElementById('cpRiskStatus').innerHTML = 'Medium';\n                    document.getElementById('cpRiskStatus').style.color = '#f0b849';\n                } else {\n                    document.getElementById('cpRiskStatus').innerHTML = 'Low';\n                    document.getElementById('cpRiskStatus').style.color = '#00a32a';\n                }\n            }\n\n            \/\/ ========== WORDPRESS ==========\n            function getWPUsername() {\n                if (typeof wp !== 'undefined' && wp.data) {\n                    try {\n                        const user = wp.data.select('core').getCurrentUser();\n                        if (user?.name) return user.name;\n                    } catch(e) {}\n                }\n                return null;\n            }\n\n            \/\/ ========== NOTIFICATIONS ==========\n            function showNotification(msg) {\n                const notif = document.createElement('div');\n                notif.style.cssText = `\n                    position: fixed; top: 20px; right: 20px; background: white;\n                    border-left: 4px solid #2271b1; color: #2c3e50; padding: 12px 24px;\n                    border-radius: 8px; z-index: 9999; box-shadow: 0 4px 12px rgba(0,0,0,0.1);\n                    max-width: 300px;\n                `;\n                notif.textContent = msg;\n                document.body.appendChild(notif);\n                setTimeout(() => notif.remove(), 3000);\n            }\n\n            \/\/ ========== SELECT ASSET ==========\n            window.selectAsset = function(symbol) {\n                const asset = ASSETS.find(a => a.symbol === symbol);\n                if (asset) {\n                    state.activeAsset = asset;\n                    renderChart();\n                    updateOrderBook();\n                    \n                    \/\/ Update price in order field\n                    const price = currentPrices[symbol] || asset.price;\n                    document.getElementById('cpOrderPrice').value = price.toFixed(2);\n                }\n            };\n\n            \/\/ ========== STATE ==========\n            function saveState() {\n                localStorage.setItem('cpTerminalPro', JSON.stringify({\n                    balance: state.balance,\n                    portfolio: state.portfolio,\n                    stopLosses: state.stopLosses,\n                    takeProfits: state.takeProfits\n                }));\n            }\n\n            function loadState() {\n                try {\n                    const saved = localStorage.getItem('cpTerminalPro');\n                    if (saved) {\n                        const data = JSON.parse(saved);\n                        state.balance = data.balance ?? INITIAL_CAPITAL;\n                        state.portfolio = data.portfolio ?? {};\n                        state.stopLosses = data.stopLosses ?? [];\n                        state.takeProfits = data.takeProfits ?? [];\n                    }\n                } catch(e) {}\n            }\n\n            function renderAll() {\n                renderAssets();\n                renderPortfolio();\n                renderStopLosses();\n                renderTournament();\n                updatePortfolioValue();\n            }\n\n            \/\/ ========== INITIALIZATION ==========\n            document.addEventListener('DOMContentLoaded', async function() {\n                loadState();\n                await fetchRubRate();\n                \n                \/\/ Initialize prices\n                for (const asset of ASSETS) {\n                    currentPrices[asset.symbol] = asset.price * (1 + (Math.random() * 0.06 - 0.03));\n                }\n                \n                \/\/ Export functions to global scope\n                window.buyAsset = buyAsset;\n                window.sellAsset = sellAsset;\n                window.setStopLoss = setStopLoss;\n                window.setTakeProfit = setTakeProfit;\n                window.selectAsset = selectAsset;\n                \n                state.activeAsset = ASSETS[0];\n                \n                \/\/ Set initial price in order field\n                document.getElementById('cpOrderPrice').value = ASSETS[0].price.toFixed(2);\n                \n                renderChart();\n                renderAll();\n                updateOrderBook();\n                \n                \/\/ Search\n                document.getElementById('cpSearch').addEventListener('input', renderAssets);\n                \n                \/\/ Filters\n                document.querySelectorAll('.cp-filter-btn').forEach(btn => {\n                    btn.addEventListener('click', function() {\n                        document.querySelectorAll('.cp-filter-btn').forEach(b => b.classList.remove('active'));\n                        this.classList.add('active');\n                        state.marketFilter = this.dataset.market;\n                        renderAssets();\n                    });\n                });\n                \n                \/\/ Chart periods\n                document.querySelectorAll('.cp-time-btn').forEach(btn => {\n                    btn.addEventListener('click', function() {\n                        document.querySelectorAll('.cp-time-btn').forEach(b => b.classList.remove('active'));\n                        this.classList.add('active');\n                        state.chartPeriod = this.dataset.period;\n                        renderChart();\n                    });\n                });\n                \n                \/\/ Order types\n                document.querySelectorAll('.cp-order-tab').forEach(tab => {\n                    tab.addEventListener('click', function() {\n                        document.querySelectorAll('.cp-order-tab').forEach(t => t.classList.remove('active'));\n                        this.classList.add('active');\n                        state.orderType = this.dataset.ordertype;\n                        \n                        const stopPriceInput = document.getElementById('cpStopPrice');\n                        if (state.orderType.includes('stop')) {\n                            stopPriceInput.disabled = false;\n                        } else {\n                            stopPriceInput.disabled = true;\n                            stopPriceInput.value = '';\n                        }\n                    });\n                });\n                \n                \/\/ Buy\/Sell from order panel\n                document.getElementById('cpPlaceBuyOrder').addEventListener('click', function() {\n                    const symbol = state.activeAsset.symbol;\n                    const quantity = parseInt(document.getElementById('cpOrderQuantity').value || 1);\n                    const price = parseFloat(document.getElementById('cpOrderPrice').value) || null;\n                    buyAsset(symbol, quantity, price, state.orderType);\n                });\n                \n                document.getElementById('cpPlaceSellOrder').addEventListener('click', function() {\n                    const symbol = state.activeAsset.symbol;\n                    const quantity = parseInt(document.getElementById('cpOrderQuantity').value || 1);\n                    const price = parseFloat(document.getElementById('cpOrderPrice').value) || null;\n                    sellAsset(symbol, quantity, price, state.orderType);\n                });\n                \n                \/\/ Tournament\n                document.getElementById('cpJoinTournamentBtn').addEventListener('click', function() {\n                    isInTournament = !isInTournament;\n                    this.innerHTML = isInTournament ? '\u2705 You are in the tournament' : '\u2694\ufe0f Join competition';\n                    this.style.background = isInTournament ? '#00a32a' : 'var(--cp-warning)';\n                    this.style.color = isInTournament ? 'white' : 'black';\n                    tournamentPlayers = generateTournamentPlayers();\n                    renderTournament();\n                });\n                \n                \/\/ Reset\n                document.getElementById('cpResetBtn').addEventListener('click', function() {\n                    if (confirm('Reset demo account to $100,000?')) {\n                        state.balance = INITIAL_CAPITAL;\n                        state.portfolio = {};\n                        state.stopLosses = [];\n                        state.takeProfits = [];\n                        saveState();\n                        renderAll();\n                        renderChart();\n                        showNotification('\u2705 Account reset to $100,000');\n                    }\n                });\n                \n                \/\/ Click on asset to select it\n                document.getElementById('cpAssetsGrid').addEventListener('click', function(e) {\n                    const item = e.target.closest('.cp-asset-item');\n                    if (item) {\n                        const symbol = item.dataset.symbol;\n                        if (symbol) selectAsset(symbol);\n                    }\n                });\n                \n                \/\/ Update prices every 10 seconds\n                await refreshPrices();\n                setInterval(refreshPrices, 10000);\n            });\n        })();\n    <\/script>\n<\/div>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83d\udcd8 INSTRUCTION MANUAL FOR BEGINNER TRADERS<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Want to get into trading but scared? \ud83e\udd76 Start with a free stock market simulator! Become a pro trader without risk! \ud83d\ude80 Online stock exchange simulator for beginners: crypto, stocks, NASDAQ, MOEX, NYSE. Real charts, stop-losses and tournaments. Trading simulator with charts like on real exchanges. \ud83c\udfae Experience the thrill of trading without losses! Earn $100,000 virtually!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to use the exchange trading simulator?<\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83c\udfaf <strong>1. START \u2013 YOUR ACCOUNT<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Upon launch, you have <strong>$100,000 virtual dollars<\/strong>. These are practice funds, you are not risking anything.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Where to check the balance?<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>At the top of the page, a green label <strong>&#8220;Balance: $100,000&#8221;<\/strong>;<\/li>\n\n\n\n<li>Next to it <strong>&#8220;Portfolio: $0&#8221;<\/strong> \u2013 the value of your purchased assets;<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd0d <strong>2. SELECTING AN ASSET FOR TRADING<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Assets<\/strong> are what you can buy\/sell (stocks, cryptocurrencies).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>How to choose:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Enter the name in the <strong>\u00abAsset Search\u00bb<\/strong> field (e.g.: <code>AAPL<\/code>, <code>BTC<\/code>, <code>SBER<\/code>);<\/li>\n\n\n\n<li>Or simply click on any asset in the <strong>\u00abAvailable Assets\u00bb<\/strong> block;<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705 <strong>After clicking \u2013 the chart and prices will change for the selected asset<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udcc8 <strong>3. CHART AND PRICE<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The chart shows how the asset&#8217;s price has changed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What do the numbers under the chart mean?<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>BTC\/USD<\/strong> \u2013 asset name;<\/li>\n\n\n\n<li><strong>$48,500<\/strong> \u2013 current price;<\/li>\n\n\n\n<li><strong>\u25b2 +2.4%<\/strong> \u2013 percentage price increase;<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Buttons 1M, 5M, 15M, 1H, 1D, 1W, 1MO<\/strong> \u2013 chart scale (from 1 minute to 1 month).<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udcb0 <strong>4. HOW TO BUY AN ASSET (THE MOST IMPORTANT PART)<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Method 1. Quick buy via the simulator chart:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Below the chart, find the <strong>\u00abQuantity\u00bb<\/strong> panel<\/li>\n\n\n\n<li>Enter the number of shares\/coins (e.g.: <code>5<\/code>);<\/li>\n\n\n\n<li>Press the <strong>green \u00abBuy\u00bb button<\/strong>;<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Method 2. Buy from the asset list:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In the \u00abAvailable Assets\u00bb block, find the desired asset;<\/li>\n\n\n\n<li>Click <strong>\u00abBuy\u00bb<\/strong> below it;<\/li>\n\n\n\n<li>Quantity can be adjusted in the input field;<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705 <strong>After purchase<\/strong> \u2013 the asset will appear in the <strong>\u00abMy Portfolio\u00bb<\/strong> block on the right.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udcb8 <strong>5. HOW TO SELL AN ASSET<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Method 1. Via the chart:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Press the <strong>red \u00abSell\u00bb button<\/strong> under the chart.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Method 2. From the portfolio:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>In the right column, in the <strong>\u00abMy Portfolio\u00bb<\/strong> block, find the asset;<\/li>\n\n\n\n<li>Click <strong>\u00abSell\u00bb<\/strong>;<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udee1\ufe0f <strong>6. PROTECTION AGAINST LOSSES (STOP-LOSS)<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Stop-loss<\/strong> \u2013 automatic sale if the price drops to a specified level. Protects against large losses.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>How to set it up:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Buy an asset;<\/li>\n\n\n\n<li>In the portfolio, click <strong>\u00abSL -5%\u00bb<\/strong>;<\/li>\n\n\n\n<li>The system will automatically sell the asset if the price drops by 5%;<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705 Displayed in the simulator in the <strong>\u00abStop-Losses\u00bb<\/strong> block on the right.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83c\udfaf <strong>7. PROFIT TAKING (TAKE PROFIT)<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Take profit<\/strong> \u2013 automatic sale when the price rises to the desired level.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>How to set it up:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>In the portfolio, click <strong>\u00abTP +10%\u00bb<\/strong>;<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705 The asset will sell itself when the price increases by 10%.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udcca <strong>8. PROFESSIONAL ORDERS (FOR EXPERIENCED TRADERS)<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Below the online chart of our exchange simulator, there is a panel with order types:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Button<\/th><th>What it does<\/th><\/tr><\/thead><tbody><tr><td><strong>Market<\/strong><\/td><td>Buy\/sell <strong>instantly<\/strong> at the current price<\/td><\/tr><tr><td><strong>Limit<\/strong><\/td><td>Buy <strong>only at your specified price<\/strong> (cheaper\/more expensive)<\/td><\/tr><tr><td><strong>Stop<\/strong><\/td><td>Sell when the price drops to a certain level<\/td><\/tr><tr><td><strong>Stop-limit<\/strong><\/td><td>Combination of stop and limit price<\/td><\/tr><tr><td><strong>Take profit<\/strong><\/td><td>Sell when the price rises to a certain level<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">\ud83d\udcd8 PROFESSIONAL ORDERS \u2013 CLEAR EXPLANATION<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\">5 order types in the online simulator and on real exchanges<\/h5>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udfe2 <strong>MARKET ORDER<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>The simplest and fastest order.<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u2705 <strong>What it does:<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Buys or sells an asset <strong>INSTANTLY<\/strong> at the price currently on the exchange.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udcf1 <strong>Real-life example:<\/strong><\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">You walk into a store, see the price tag <strong>\u00abiPhone \u2013 $100,000\u00bb<\/strong>, immediately go to the register and buy it. You don&#8217;t haggle, you don&#8217;t wait for a discount \u2013 you just buy it now.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udcbb <strong>How to use in the simulator:<\/strong><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Select an asset (e.g., <code>BTC<\/code>);<\/li>\n\n\n\n<li>Make sure the <strong>\u00abMarket\u00bb<\/strong> tab is active;<\/li>\n\n\n\n<li>Enter the quantity, e.g., &#8220;1&#8221;;<\/li>\n\n\n\n<li>Click <strong>\u00abBuy\u00bb<\/strong>;<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705 <strong>The trade happens immediately<\/strong> at the current price.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udfe1 <strong>LIMIT ORDER<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>An order for those who want to save.<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u2705 <strong>What it does:<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Buys on the exchange <strong>ONLY AT YOUR SPECIFIED PRICE<\/strong> or lower.<br>Sells online <strong>ONLY AT YOUR SPECIFIED PRICE<\/strong> or higher.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udcf1 <strong>Real-life example:<\/strong><\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">You want to buy an iPhone, but you&#8217;re only willing to pay <strong>$90,000<\/strong>, no more. You leave a request at the store: <em>&#8220;Call me when the price drops to $90,000.&#8221;<\/em> The store calls you when it gets cheaper.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udcbb <strong>How to use in the trading simulator:<\/strong><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Click the <strong>\u00abLimit\u00bb<\/strong> tab;<\/li>\n\n\n\n<li>In the <strong>\u00abPrice\u00bb<\/strong> field, enter your price (e.g.: <code>47000<\/code> for Bitcoin);<\/li>\n\n\n\n<li>Enter the quantity of assets to trade;<\/li>\n\n\n\n<li>Click <strong>\u00abBuy\u00bb<\/strong>;<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\u23f3 <strong>The order waits in the queue<\/strong> until the price reaches your level.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udd34 <strong>STOP ORDER or STOP-LOSS<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Protection against losses. The most important order!<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u2705 <strong>What it does:<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>AUTOMATICALLY SELLS<\/strong> the asset when the price <strong>FALLS<\/strong> to a dangerous level.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udcf1 <strong>Real-life example:<\/strong><\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">You bought an iPhone for $100,000 and are afraid it will lose value. You tell a friend: <em>&#8220;If the price drops to $90,000 \u2013 <strong>sell it immediately<\/strong>, don&#8217;t think twice!&#8221;<\/em> Your friend watches and sells, without asking.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udcbb <strong>How to use in the online simulator:<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Method 1. Quick (recommended):<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Buy an asset;<\/li>\n\n\n\n<li>In the portfolio, click <strong>\u00abSL -5%\u00bb<\/strong>;<br>\ud83d\udc49 <em>Automatically sets a sale if the price drops by 5%<\/em>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Method 2. Manual (\u00abStop\u00bb tab):<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Click <strong>\u00abStop\u00bb<\/strong>;<\/li>\n\n\n\n<li>In the <strong>\u00abStop price\u00bb<\/strong> field, enter the level (e.g.: <code>46000<\/code>);<\/li>\n\n\n\n<li>Click <strong>\u00abSell\u00bb<\/strong>;<\/li>\n<\/ol>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f <strong>WITHOUT A STOP-LOSS YOU COULD LOSE EVERYTHING!<\/strong> Always use it.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udfe0 <strong>STOP-LIMIT ORDER<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A combination of protection and price control.<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u2705 <strong>What it does:<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">When the price on the exchange drops to the stop price \u2013 a <strong>LIMIT ORDER TO SELL<\/strong> at your specified price is <strong>ACTIVATED<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udcf1 <strong>Real-life example:<\/strong><\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">You bought an iPhone for $100,000. You want to sell if the price drops to $90,000, <strong>BUT NOT BELOW $89,000<\/strong>.<br><em>&#8220;If the price drops to $90,000 \u2013 place a sell order for $89,500, but not cheaper!&#8221;<\/em><\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udcbb <strong>How to use in the trading simulator:<\/strong><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Click the <strong>\u00abStop-limit\u00bb<\/strong> tab;<\/li>\n\n\n\n<li><strong>\u00abStop price\u00bb<\/strong> \u2013 activation level (e.g.: <code>47000<\/code>);<\/li>\n\n\n\n<li><strong>\u00abPrice\u00bb<\/strong> \u2013 minimum sale price (e.g.: <code>46900<\/code>);<\/li>\n\n\n\n<li>Click <strong>\u00abSell\u00bb<\/strong>;<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705 <strong>Protection against slippage:<\/strong> you won&#8217;t sell for less than you want.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udfe3 <strong>TAKE PROFIT ORDER<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Automatic profit taking.<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u2705 <strong>What it does:<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>AUTOMATICALLY SELLS<\/strong> the asset when the price <strong>RISES<\/strong> to the desired level.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udcf1 <strong>Real-life example:<\/strong><\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">You bought an iPhone for $100,000, want to make $10,000 profit. You say: <em>&#8220;When the price reaches $110,000 \u2013 sell it immediately, take the profit!&#8221;<\/em><\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udcbb <strong>How to use in the simulator:<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Method 1. Quick:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Buy an asset;<\/li>\n\n\n\n<li>In the portfolio, click <strong>\u00abTP +10%\u00bb<\/strong>;<br>\ud83d\udc49 <em>Automatically sells when the price rises by 10%<\/em>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Method 2. Manual (\u00abTake profit\u00bb tab):<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Click <strong>\u00abTake profit\u00bb<\/strong>;<\/li>\n\n\n\n<li>In the <strong>\u00abPrice\u00bb<\/strong> field, enter the desired sale price;<\/li>\n\n\n\n<li>Click <strong>\u00abSell\u00bb<\/strong>;<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udcb0 <strong>Profit is fixed automatically!<\/strong> No need to watch the screen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udcca <strong>COMPARISON OF ALL ORDER TYPES<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Order Type<\/th><th>When it executes<\/th><th>Price<\/th><th>Why it&#8217;s used<\/th><\/tr><\/thead><tbody><tr><td><strong>Market<\/strong><\/td><td><strong>Immediately<\/strong><\/td><td>Any current price<\/td><td>Buy\/sell quickly<\/td><\/tr><tr><td><strong>Limit<\/strong><\/td><td>When price reaches your level<\/td><td>Your price only<\/td><td>Save money\/get a better price<\/td><\/tr><tr><td><strong>Stop (SL)<\/strong><\/td><td>When price drops to the level<\/td><td>Market price<\/td><td><strong>Protection against losses<\/strong><\/td><\/tr><tr><td><strong>Stop-limit<\/strong><\/td><td>When price drops to the level<\/td><td>Not below your price<\/td><td>Protection + price control<\/td><\/tr><tr><td><strong>Take profit<\/strong><\/td><td>When price rises to the level<\/td><td>Market price<\/td><td><strong>Locking in profits<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83c\udfaf <strong>EXAMPLE: COMPLETE TRADING STRATEGY<\/strong><\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>You bought Bitcoin at $50,000<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Action<\/th><th>Order type<\/th><th>Purpose<\/th><\/tr><\/thead><tbody><tr><td>\u2705 <strong>Buy<\/strong><\/td><td><strong>Market<\/strong><\/td><td>Enter the trade quickly<\/td><\/tr><tr><td>\ud83d\udee1\ufe0f <strong>Set protection<\/strong><\/td><td><strong>Stop $47,500<\/strong><\/td><td>Lose no more than 5%<\/td><\/tr><tr><td>\ud83c\udfaf <strong>Set a target<\/strong><\/td><td><strong>Take profit $55,000<\/strong><\/td><td>Earn 10%<\/td><\/tr><tr><td>\ud83d\udc8e <strong>Buy more cheaper<\/strong><\/td><td><strong>Limit $48,000<\/strong><\/td><td>Buy more if it drops<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Result:<\/strong> The system works for you 24\/7!<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2753 <strong>FREQUENTLY ASKED QUESTIONS FROM BEGINNERS<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q: What should a beginner choose first?<\/strong><br><strong>A:<\/strong> A market order to enter, a stop-loss for protection.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q: Why isn&#8217;t my limit order being executed?<\/strong><br><strong>A:<\/strong> The price hasn&#8217;t reached your level yet. Wait or change the price.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q: Are Stop-loss and Stop the same thing?<\/strong><br><strong>A:<\/strong> Yes. Stop order = Stop-loss.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q: Do I need to set a take profit?<\/strong><br><strong>A:<\/strong> It&#8217;s advisable. Otherwise, profit can &#8220;slip away&#8221; if the price drops.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 <strong>REMEMBER THE KEY POINTS:<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udd25 <strong>Market<\/strong> \u2013 I want it NOW!<br>\ud83d\udcb0 <strong>Limit<\/strong> \u2013 I want a GOOD DEAL!<br>\ud83d\udee1\ufe0f <strong>Stop<\/strong> \u2013 I fear LOSSES!<br>\ud83c\udfaf <strong>Take profit<\/strong> \u2013 I want PROFIT!<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<figure class=\"wp-block-pullquote\"><blockquote><p><strong>\ud83c\udf93 Practice in our exchange simulator, try all order types \u2013 <\/strong><\/p><cite><strong>it&#8217;s FREE and RISK-FREE!<\/strong><\/cite><\/blockquote><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udccb <strong>9. ORDER BOOK (ON THE RIGHT)<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Shows who wants to buy\/sell and at what prices.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Red<\/strong> \u2013 people want to sell;<\/li>\n\n\n\n<li><strong>Green<\/strong> \u2013 people want to buy;<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udc49 If you double-click on a price in the order book, it will be highlighted for copying. You can copy it and paste it into the order field.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83c\udfc6 <strong>10. TRADER TOURNAMENT<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Compete against other users.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>How to participate:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Click <strong>\u00abJoin competition\u00bb<\/strong>;<\/li>\n\n\n\n<li>Your name will appear in the table with your profit;<\/li>\n\n\n\n<li>The more you earn, the higher your rank;<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udcc9 <strong>11. RISK MONITORING<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In the <strong>\u00abRisk monitoring\u00bb<\/strong> block on the right:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Margin<\/strong> \u2013 ratio of portfolio value to balance;<\/li>\n\n\n\n<li><strong>Risk level<\/strong> \u2013 Low \/ Medium \/ High;<\/li>\n\n\n\n<li><strong>Daily P&#038;L<\/strong> \u2013 how much you&#8217;ve earned\/lost today;<\/li>\n\n\n\n<li><strong>Open P&#038;L<\/strong> \u2013 total profit\/loss;<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd04 <strong>12. RESET ACCOUNT<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If you want to start over:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Click the <strong>red \u00abReset demo account\u00bb button<\/strong> at the very bottom;<\/li>\n\n\n\n<li>Confirm the action;<\/li>\n\n\n\n<li>The balance becomes $100,000, the portfolio is cleared;<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83c\udf93 <strong>KEY RULES FOR BEGINNERS:<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u2705 <strong>DO<\/strong><\/th><th>\u274c <strong>DON&#8217;T<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Start with small amounts<\/td><td>Don&#8217;t buy everything at once<\/td><\/tr><tr><td>Use stop-losses<\/td><td>Don&#8217;t leave a trade unprotected<\/td><\/tr><tr><td>Watch the price movement<\/td><td>Don&#8217;t buy at the peak of a rally<\/td><\/tr><tr><td>Participate in the tournament<\/td><td>Don&#8217;t get upset over losses<\/td><\/tr><tr><td>Experiment<\/td><td>This is a simulator \u2013 learn risk-free!<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u26a1 <strong>QUICK START IN 1 MINUTE:<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In the search, enter <code>BTC<\/code> \u2192 click on Bitcoin;<\/li>\n\n\n\n<li>In the \u00abQuantity\u00bb field, enter <code>0.01<\/code>;<\/li>\n\n\n\n<li>Press the <strong>green \u00abBuy\u00bb button<\/strong>;<\/li>\n\n\n\n<li>In the portfolio, click <strong>\u00abSL -5%\u00bb<\/strong> (protection);<\/li>\n\n\n\n<li>Follow the chart;<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\ud83c\udf89 CONGRATULATIONS! YOU&#8217;VE MADE YOUR FIRST TRADE!<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><em>Remember: this is an online exchange simulator. You lose nothing, but gain invaluable professional trader experience.<\/em><\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>HKE6A63443GQM203 https:\/\/www.cbr-xml-daily.ru\/daily_json.js \ud83d\udcc8 PRO TRADER \ud83d\udcb0 Balance: $100,000.00 \ud83d\udcca Portfolio: $0.00 \ud83c\uddf7\ud83c\uddfa USD\/RUB: 91.50 \u25cf LIVE BTC\/USD $48,500 \u25b2 +2.4%&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_daextam_enable_autolinks":"1","footnotes":""},"class_list":["post-250","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/investopedia.su\/en\/wp-json\/wp\/v2\/pages\/250","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/investopedia.su\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/investopedia.su\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/investopedia.su\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/investopedia.su\/en\/wp-json\/wp\/v2\/comments?post=250"}],"version-history":[{"count":28,"href":"https:\/\/investopedia.su\/en\/wp-json\/wp\/v2\/pages\/250\/revisions"}],"predecessor-version":[{"id":2249,"href":"https:\/\/investopedia.su\/en\/wp-json\/wp\/v2\/pages\/250\/revisions\/2249"}],"wp:attachment":[{"href":"https:\/\/investopedia.su\/en\/wp-json\/wp\/v2\/media?parent=250"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}