{"id":5601,"date":"2026-07-24T08:17:20","date_gmt":"2026-07-24T08:17:20","guid":{"rendered":"https:\/\/seagreen-pigeon-152322.hostingersite.com\/?page_id=5601"},"modified":"2026-07-24T20:07:17","modified_gmt":"2026-07-24T20:07:17","slug":"cross","status":"publish","type":"page","link":"https:\/\/bulltradebot.com\/fr\/cross\/","title":{"rendered":"CROSS"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"5601\" class=\"elementor elementor-5601\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-c41eea3 elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no\" data-id=\"c41eea3\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-13538ab\" data-id=\"13538ab\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0e48085 elementor-widget elementor-widget-html\" data-id=\"0e48085\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- LIBRER\u00cdAS EXTERNAS (Optimizadas para WordPress con 'defer') -->\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\" defer><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/ccxt@4.2.19\/dist\/ccxt.browser.js\" defer><\/script>\n\n<div id=\"bullbot-rocket-wrapper\">\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Orbitron:wght@400;900&family=Share+Tech+Mono&display=swap');\n#bullbot-rocket-wrapper{background-color:#121212;color:white;padding:15px;font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;width:100%;max-width:100%;overflow-x:hidden;box-sizing:border-box;}\n#bullbot-rocket-wrapper *{box-sizing:border-box;}\n#crypto-widget-container{background-color:#1e1e2d;color:#ffffff;padding:25px;border-radius:12px;max-width:1200px;margin:0 auto;box-shadow:0 4px 15px rgba(0,0,0,0.3);position:relative;min-height:auto;}\n#orbidex-loader{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#1e1e2d;z-index:9999;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;padding-top:100px;border-radius:12px;transition:opacity 0.5s ease;}\n.ai-spinner{width:60px;height:60px;border:4px solid rgba(108,92,231,0.2);border-radius:50%;border-top-color:#6c5ce7;animation:spin 1s ease-in-out infinite;margin-bottom:20px;}\n.ai-text{font-family:monospace;font-size:1.4rem;font-weight:bold;color:#6c5ce7;text-transform:uppercase;animation:pulse 1.5s infinite;text-align:center;}\n.ai-subtext{font-family:monospace;font-size:0.9rem;color:#888;margin-top:8px;text-align:center;}\n@keyframes spin{to{transform:rotate(360deg);}}\n@keyframes pulse{0%{opacity:0.6;}50%{opacity:1;}100%{opacity:0.6;}}\n.cw-app-header{text-align:center;margin-bottom:20px;border-bottom:1px solid #333;padding-bottom:15px;}\n.cw-app-title{margin:0;font-size:1.8rem;font-weight:800;color:#fff;text-transform:uppercase;letter-spacing:1px;}\n#bullbot-rocket-wrapper select,#bullbot-rocket-wrapper input[type=\"text\"],#bullbot-rocket-wrapper input:not([type=\"radio\"]):not([type=\"checkbox\"]){background-color:#2b2b40 !important;color:#fff !important;border:1px solid #555 !important;padding:0 10px !important;border-radius:6px !important;height:38px !important;width:100% !important;font-size:13px !important;outline:none !important;display:block !important;margin:0 0 5px 0 !important;max-width:100%;}\n.tp-input-mini,#tp-single-val{color:#aaa !important;font-weight:bold;}\n.scan-tag{background:#6c5ce7;color:white;padding:4px 10px;border-radius:12px;font-size:0.75rem;display:flex;align-items:center;gap:5px;border:1px solid #a29bfe;box-shadow:0 2px 5px rgba(0,0,0,0.2);margin-top:5px;}\n.scan-tag span{cursor:pointer;font-weight:bold;color:#ffb3b3;padding-left:5px;border-left:1px solid rgba(255,255,255,0.3);transition:color 0.2s;}\n.scan-tag span:hover{color:#ff0000;}\n.cw-btn{background:#444;color:white;border:1px solid #555;padding:0 12px;border-radius:6px;height:42px;width:100%;font-weight:bold;cursor:pointer;transition:0.3s;}\n.cw-btn:hover{background:#555;}\n.cw-grid{display:grid;grid-template-columns:1fr;gap:20px;}\n@media(min-width:1024px){.cw-grid{grid-template-columns:1.8fr 1.2fr;}}\n.cw-controls-wrapper{display:flex;gap:10px;margin-bottom:20px;flex-wrap:wrap;align-items:flex-end;}\n.cw-control-group{display:flex;flex-direction:column;flex:1;min-width:120px;}\n.cw-label-top{font-size:0.75rem;color:#bbb;margin-bottom:4px;font-weight:600;text-transform:uppercase;display:block;}\n.cw-info-card{background:#2b2b40;padding:15px;border-radius:8px;margin-bottom:10px;display:flex;justify-content:space-between;align-items:center;border:1px solid #3d3d5c;}\n.cw-price{font-size:1.5rem;font-weight:bold;color:#fff;}\n.cw-trend{font-weight:bold;padding:4px 10px;border-radius:4px;font-size:0.85rem;}\n.cw-indicators{font-size:0.8rem;color:#aaa;margin-bottom:10px;background:#161621;padding:10px;border-radius:4px;display:flex;flex-wrap:wrap;gap:12px;border:1px solid #333;}\n.cw-ind-item{display:flex;flex-direction:column;border-right:1px solid #333;padding-right:12px;}\n.cw-ind-item:last-child{border-right:none;}\n.cw-ind-val-display{font-size:0.85rem;color:#fff;font-weight:bold;font-family:monospace;}\n.cw-ind-sub{font-size:0.65em;color:#888;margin-top:2px;text-transform:uppercase;}\n.chart-box{background:#262636;padding:10px;border-radius:8px;height:650px;position:relative;border:1px solid #3d3d5c;display:flex;flex-direction:column;gap:10px;}\n.chart-toggles{display:flex;gap:15px;margin-bottom:5px;justify-content:center;align-items:center;}\n.btn-toggle{background:#1e1e2d;color:#888;border:1px solid #444;padding:4px 16px;border-radius:20px;font-size:0.75rem;font-weight:bold;cursor:pointer;transition:all 0.3s;display:flex;align-items:center;gap:6px;box-shadow:0 2px 5px rgba(0,0,0,0.3);}\n.btn-toggle:hover{background:#2a2a3d;color:#ccc;}\n.btn-toggle.active{background:rgba(108,92,231,0.15);color:#a29bfe;border-color:#6c5ce7;box-shadow:inset 0 0 10px rgba(108,92,231,0.2);}\n.bot-panel{background:#262636;padding:15px;border-radius:8px;border:1px solid #6c5ce7;box-shadow:0 0 10px rgba(108,92,231,0.1);}\n.bot-title{margin:0 0 15px 0;font-size:1rem;border-bottom:1px solid #444;padding-bottom:8px;color:white;font-weight:bold;}\n.bot-subtitle{font-size:0.75rem;color:#6c5ce7;font-weight:bold;text-transform:uppercase;margin:12px 0 6px 0;letter-spacing:1px;}\n.bot-row{display:flex;gap:8px;margin-bottom:8px;}\n.bot-col{flex:1;}\n.tp-mode-selector{display:flex;gap:15px;margin-bottom:10px;font-size:0.8rem;color:#ccc;}\n.tp-mode-selector label{cursor:pointer;display:flex;align-items:center;gap:5px;}\n.tp-single-box{display:none;}\n.tp-ladder-box{display:block;background:rgba(0,0,0,0.2);padding:8px;border-radius:6px;}\n.tp-row-small{display:flex;gap:5px;align-items:center;margin-bottom:4px;font-size:0.75rem;color:#aaa;}\n.tp-input-mini{width:60px !important;text-align:center;height:30px !important;color:#aaa !important;font-weight:bold;}\n.trade-direction-box{display:flex;gap:10px;margin-bottom:10px;}\n.btn-direction{flex:1;padding:8px;border:1px solid #444;background:#1e1e2d;color:#888;border-radius:6px;cursor:pointer;font-weight:bold;opacity:0.5;}\n.btn-direction.active-long{background:#1b5e20;color:white;opacity:1;border-color:#2e7d32;box-shadow:0 0 8px rgba(46,125,50,0.4);}\n.btn-direction.active-short{background:#b71c1c;color:white;opacity:1;border-color:#c62828;box-shadow:0 0 8px rgba(198,40,40,0.4);}\n.btn-direction.active-auto{background:#ff9800;color:white;opacity:1;border-color:#f57c00;box-shadow:0 0 8px rgba(255,152,0,0.4);}\n.slider-container{display:flex;align-items:center;gap:10px;background:#2b2b40;padding:15px 10px;border-radius:6px;border:1px solid #555;}\n.cw-range{-webkit-appearance:none;width:100%;height:8px;background:#444;border-radius:4px;outline:none;margin:0;cursor:pointer;}\n.cw-range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:24px;height:24px;background:#6c5ce7;border-radius:50%;cursor:pointer;border:2px solid #fff;box-shadow:0 0 5px rgba(0,0,0,0.5);transition:transform 0.1s;}\n.cw-range::-webkit-slider-thumb:hover{transform:scale(1.1);}\n.val-display{font-family:monospace;font-size:1.1rem;font-weight:bold;color:#6c5ce7;min-width:50px;text-align:right;}\n.cw-results{margin-top:15px;padding:10px;background:rgba(255,255,255,0.05);border-radius:6px;font-size:0.9rem;}\n.cw-res-row{display:flex;justify-content:space-between;margin-bottom:5px;}\n.cw-res-val{color:#4caf50;font-weight:bold;font-size:1.1em;}\n.cw-res-loss{color:#ff5252;font-weight:bold;font-size:1.1em;}\n.btn-launch-bot{background:linear-gradient(45deg,#6c5ce7,#a29bfe);color:#fff;border:none;font-weight:bold;margin-top:15px;box-shadow:0 4px 10px rgba(108,92,231,0.3);width:100%;height:45px;cursor:pointer;border-radius:6px;transition:0.2s;}\n.btn-launch-bot.scanning{background:linear-gradient(45deg,#1b5e20,#66bb6a);animation:pulseBtn 2s infinite;}\n@keyframes pulseBtn{0%{box-shadow:0 0 0 0 rgba(102,187,106,0.7);}70%{box-shadow:0 0 0 10px rgba(102,187,106,0);}100%{box-shadow:0 0 0 0 rgba(102,187,106,0);}}\n.cw-orders-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;}\n.live-indicator{background:rgba(0,188,212,0.15);color:#00bcd4;border:1px solid #00bcd4;padding:4px 10px;border-radius:20px;font-size:0.7rem;font-weight:bold;display:flex;align-items:center;gap:6px;}\n.live-dot{width:6px;height:6px;background:#00bcd4;border-radius:50%;animation:blink 1.5s infinite;}\n.btn-view-chart{background:#6c5ce7;color:#fff;border:none;padding:2px 6px;font-size:0.65em;border-radius:3px;margin-top:3px;cursor:pointer;text-transform:uppercase;letter-spacing:0.5px;transition:background 0.2s;}\n.btn-view-chart:hover{background:#5649c0;}\n.cw-stats-bar{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:15px;background:#1e1e2d;padding:10px;border-radius:6px;border:1px solid #333;}\n.cw-stat-box{text-align:center;}\n.cw-stat-label{font-size:0.7rem;color:#aaa;text-transform:uppercase;margin-bottom:4px;}\n.cw-stat-val{font-size:1.1rem;font-weight:bold;}\n.cw-orders-table-wrap{overflow-x:auto;width:100%;}\n.cw-orders-table{width:100%;border-collapse:collapse;min-width:900px;}\n.cw-orders-table th{text-align:left;padding:6px;background:#1e1e2d;color:#aaa;border-bottom:2px solid #444;font-size:0.75rem;}\n.cw-orders-table td{padding:6px;border-bottom:1px solid #333;color:#eee;vertical-align:middle;font-size:0.75rem;}\n.progress-col-container{width:100%;max-width:160px;margin:0 auto;}\n@media(max-width:900px){\n.cw-orders-table{min-width:100%;}\n.cw-orders-table thead{display:none;}\n.cw-orders-table,.cw-orders-table tbody,.cw-orders-table tr,.cw-orders-table td{display:block;width:100%;}\n.cw-orders-table tr{background:#262636;margin-bottom:15px;border-radius:8px;border:1px solid #444;padding:10px;}\n.cw-orders-table td{display:flex;justify-content:space-between;align-items:center;border:none;border-bottom:1px solid rgba(255,255,255,0.05);padding:8px 0;text-align:right;font-size:0.85rem;}\n.cw-orders-table td:last-child{border-bottom:none;}\n.cw-orders-table td::before{content:attr(data-label);color:#a29bfe;font-size:0.7rem;text-transform:uppercase;font-weight:bold;text-align:left;margin-right:15px;}\n.cw-orders-table td[data-label=\"Progreso Visual\"]{flex-direction:column;align-items:flex-start;width:100% !important;max-width:100% !important;}\n.cw-orders-table td[data-label=\"Progreso Visual\"]::before{margin-bottom:10px;}\n.progress-col-container{max-width:100% !important;}\n}\n.tracker-wrapper{position:relative;width:100%;height:35px;display:flex;align-items:flex-end;margin-top:5px;}\n.trade-tracker-container{width:100%;height:12px;background:#111;border-radius:6px;position:relative;overflow:hidden;border:1px solid #444;}\n.tracker-center-line{position:absolute;left:50%;height:100%;width:1px;background:#666;top:0;z-index:1;}\n.tracker-bar{height:100%;position:absolute;top:0;transition:width 0.5s ease;opacity:0.9;}\n.tracker-bar.profit{left:50%;background:#4caf50;}\n.tracker-bar.loss{right:50%;background:#ff5252;}\n.tracker-floating-price{position:absolute;top:0;font-size:0.65em;font-weight:bold;color:#fff;background:#222;padding:1px 5px;border-radius:3px;border:1px solid #666;transform:translateX(-50%);white-space:nowrap;z-index:10;transition:left 0.5s ease;box-shadow:0 2px 5px rgba(0,0,0,0.5);}\n.tracker-floating-price::after{content:'';position:absolute;bottom:-4px;left:50%;margin-left:-4px;border-width:4px;border-style:solid;border-color:#666 transparent transparent transparent;}\n.tracker-labels{display:flex;justify-content:space-between;font-size:0.65em;color:#888;margin-top:2px;font-family:monospace;}\n.tracker-labels span{flex:1;text-align:center;}\n.tracker-labels span:first-child{text-align:left;color:#ff5252;}\n.tracker-labels span:last-child{text-align:right;color:#4caf50;}\n.btn-market-close{background:#f44336;color:white;border:none;padding:4px 8px;border-radius:3px;font-size:0.7em;cursor:pointer;}\n.trend-bull{color:#66bb6a;} .trend-bear{color:#ff5252;} .trend-neutral{color:#aaa;}\n.pnl-pos{color:#4caf50 !important;} .pnl-neg{color:#ff5252 !important;}\n.sl-secured{color:#2196f3;font-weight:bold;animation:pulseBlue 2s infinite;}\n@keyframes pulseBlue{0%{opacity:0.7;}50%{opacity:1;}100%{opacity:0.7;} }\n.cw-charts-grid{display:grid;grid-template-columns:1fr;gap:20px;margin-top:20px;}\n@media(min-width:768px){.cw-charts-grid{grid-template-columns:1fr 1fr;}}\n.pnl-chart-container{height:220px;width:100%;background:#1e1e2d;border-radius:6px;padding:10px;border:1px solid #333;}\n.chart-title{font-size:0.85rem;color:#aaa;margin-bottom:10px;text-align:center;}\n#moon-app{--bg:#0b0c10;--primary:#00ff41;--danger:#ff0055;--gold:#ffd700;--font-head:'Orbitron',sans-serif;--font-mono:'Share Tech Mono',monospace;position:relative;width:100%;height:500px;background-color:var(--bg);margin-top:20px;border:2px solid #333;box-shadow:0 0 20px rgba(0,0,0,0.5);font-family:var(--font-mono);color:white;overflow:hidden;user-select:none;border-radius:8px;}\n#moon-app.mode-short{--primary:#ff0055;}\n#moon-app canvas{display:block;width:100%;height:100%;}\n.ui-layer{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;display:flex;flex-direction:column;justify-content:space-between;z-index:10;}\n.watermark{position:absolute;bottom:20px;width:100%;text-align:center;opacity:0.15;pointer-events:none;z-index:0;}\n.wm-main{font-family:var(--font-head);font-size:2rem;font-weight:900;}\n.wm-sub{font-size:0.8rem;letter-spacing:4px;color:var(--gold);margin-top:5px;}\n.hud{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px;padding:10px;background:linear-gradient(to bottom,rgba(0,0,0,0.95),transparent);pointer-events:auto;align-items:center;}\n.stat{background:rgba(0,0,0,0.6);padding:5px;border-radius:4px;border:1px solid #333;text-align:center;display:flex;flex-direction:column;justify-content:center;}\n.stat label{font-size:0.5rem;color:#aaa;margin-bottom:2px;}\n.stat span{font-size:0.8rem;color:white;font-weight:bold;}\n.entry-val{color:var(--gold) !important;}\n.thermo-container{position:absolute;right:10px;top:15%;bottom:10%;width:160px;pointer-events:none;display:flex;flex-direction:column;justify-content:center;}\n.thermo-bar{position:absolute;right:0;top:0;bottom:0;width:6px;background:#222;border-radius:3px;overflow:visible;}\n.thermo-zero{position:absolute;top:50%;right:-5px;width:20px;height:2px;background:#fff;z-index:2;}\n.fill-up{position:absolute;bottom:50%;left:0;width:100%;height:0%;background:var(--primary);transition:height 0.2s;box-shadow:0 0 10px var(--primary);}\n.fill-down{position:absolute;top:50%;left:0;width:100%;height:0%;background:var(--danger);transition:height 0.2s;box-shadow:0 0 10px var(--danger);}\n.level-marker{position:absolute;right:15px;font-size:0.85rem;color:white;font-weight:bold;opacity:0.8;transition:0.3s;text-align:right;white-space:nowrap;text-shadow:1px 1px 2px rgba(0,0,0,0.8);}\n.level-marker span{display:block;font-size:0.75rem;font-weight:normal;color:#ccc;}\n.level-marker::after{content:'';position:absolute;top:50%;right:-15px;width:10px;height:1px;background:#fff;}\n.level-marker.hit{opacity:1;color:var(--gold);font-size:1rem;text-shadow:0 0 5px var(--gold);transform:scale(1.1);}\n.level-marker.hit span{color:#fff;}\n.center-display{flex-grow:1;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:5;margin-bottom:20px;}\n.big-mult{font-family:var(--font-head);font-size:3rem;font-weight:900;text-shadow:4px 4px 0 #000;transition:color 0.1s;}\n.status-badge{background:rgba(0,0,0,0.8);border:1px solid #fff;padding:5px 15px;color:#fff;letter-spacing:2px;margin-top:5px;font-size:0.9rem;}\n.realized-pnl{color:var(--gold);font-size:0.8rem;margin-top:5px;opacity:0;}\n.trade-detail-panel{margin-top:20px;background:#1e1e2d;padding:15px;border-radius:8px;border:1px solid #3d3d5c;}\n.td-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;}\n.td-item{display:flex;flex-direction:column;}\n.td-label{font-size:0.75rem;color:#888;text-transform:uppercase;margin-bottom:3px;}\n.td-val{font-size:1rem;font-weight:bold;color:#fff;font-family:monospace;}\n.blink-red{color:#ff5252;font-weight:bold;animation:blink-text 0.8s infinite;margin:10px 0;padding:10px;border:1px solid #ff5252;background:rgba(255, 82, 82, 0.1);border-radius:6px;font-size:0.85rem;text-align:center;}\n.blink-text-small{color:#ff5252;font-size:0.75rem;font-weight:bold;animation:blink-text 1s infinite;display:block;text-align:right;margin-top:5px;}\n@keyframes blink-text{0%{opacity:1;}50%{opacity:0.5;}100%{opacity:1;}}\n.blink-row{animation:blink-bg 1s infinite;}\n@keyframes blink-bg{0%{background-color:rgba(255,82,82,0.05);}50%{background-color:rgba(255,82,82,0.25);}100%{background-color:rgba(255,82,82,0.05);}}\n.cw-dash-module{margin-top:40px;border-top:2px solid #333;padding-top:20px;}\n.cw-dash-title{font-size:1.4rem;color:#fff;margin-bottom:20px;font-weight:800;text-transform:uppercase;border-left:5px solid #6c5ce7;padding-left:10px;}\n.cw-dash-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;}\n.cw-dash-card{background:#2b2b40;border-radius:8px;padding:15px;border:1px solid #3d3d5c;display:flex;flex-direction:column;}\n.cw-dash-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;border-bottom:1px solid #444;padding-bottom:10px;}\n.cw-dash-header h4{margin:0;color:#bbb;font-size:0.9rem;text-transform:uppercase;}\n.cw-dash-btn{background:#6c5ce7;color:white;border:none;padding:5px 10px;font-size:0.75rem;border-radius:4px;cursor:pointer;text-transform:uppercase;font-weight:bold;transition:background 0.2s;}\n.cw-dash-btn:hover{background:#5649c0;}\n.cw-dash-content{min-height:100px;font-size:0.9rem;}\n.cw-dash-table{width:100%;border-collapse:collapse;font-size:0.8rem;}\n.cw-dash-table th{text-align:left;color:#888;padding:5px;border-bottom:1px solid #444;}\n.cw-dash-table td{padding:5px;border-bottom:1px solid #333;color:#eee;}\n.cw-dash-val-pos{color:#4caf50;font-weight:bold;}\n.cw-dash-val-neg{color:#ff5252;font-weight:bold;}\n.radar-mini{width:80px;height:80px;position:relative;margin:0 auto;border-radius:50%;border:1px solid #00ff00;background:radial-gradient(circle,#001a00 0,#000 80%);box-shadow:0 0 10px rgba(0,255,0,0.2);overflow:hidden;}\n.radar-scan-mini{position:absolute;top:50%;left:50%;width:40px;height:40px;background:conic-gradient(from 0deg,transparent 70%,rgba(0,255,0,0.6) 100%);transform-origin:0 0;animation:radar-scan 2s linear infinite;border-radius:0 100% 0 0;z-index:2;}\n@keyframes radar-scan{100%{transform:rotate(360deg);}}\n.tactical-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-bottom:15px;}\n.tg-box{background:#1e1e2d;border:1px solid #3d3d5c;border-radius:8px;padding:12px;position:relative;box-shadow:inset 0 0 10px rgba(0,0,0,0.3);}\n.tg-title{font-size:0.7rem;font-weight:bold;color:#aaa;text-transform:uppercase;margin-bottom:10px;text-align:center;border-bottom:1px solid #333;padding-bottom:5px;}\n.sentiment-bar{width:100%;height:18px;background:#333;border-radius:9px;display:flex;overflow:hidden;margin-top:20px;box-shadow:inset 0 2px 4px rgba(0,0,0,0.5);}\n.sen-bull{background:linear-gradient(90deg,#2e7d32,#4caf50);display:flex;align-items:center;justify-content:flex-start;padding-left:10px;font-size:0.7rem;font-weight:bold;color:#fff;transition:width 0.5s ease-out;}\n.sen-bear{background:linear-gradient(90deg,#f44336,#c62828);display:flex;align-items:center;justify-content:flex-end;padding-right:10px;font-size:0.7rem;font-weight:bold;color:#fff;transition:width 0.5s ease-out;}\n.mtf-container{display:flex;justify-content:space-around;align-items:center;margin-top:15px;}\n.mtf-item{text-align:center;}\n.mtf-label{font-size:0.65rem;color:#bbb;font-weight:bold;margin-bottom:5px;}\n.mtf-led{width:14px;height:14px;border-radius:50%;background:#444;margin:0 auto;box-shadow:inset 0 0 4px #000;border:1px solid #222;transition:all 0.3s;}\n.led-green{background:#00e676;box-shadow:0 0 10px #00e676;border-color:#00e676;}\n.led-red{background:#ff1744;box-shadow:0 0 10px #ff1744;border-color:#ff1744;}\n.led-yellow{background:#ffea00;box-shadow:0 0 10px #ffea00;border-color:#ffea00;}\n.cw-analysis-box{padding:15px;border-radius:6px;margin-bottom:15px;border-left:5px solid #444;background:rgba(255,255,255,.05);transition:all .3s ease}\n.cw-analysis-title{font-size:.85rem;font-weight:700;color:#ccc;margin-bottom:8px;text-transform:uppercase;display:flex;align-items:center;gap:5px}\n.cw-analysis-text{font-size:.95rem;line-height:1.5}\n.status-green{border-left-color:#4caf50;background:rgba(76,175,80,.1)}\n.status-green .cw-analysis-text{color:#81c784}\n.status-yellow{border-left-color:#ffb300;background:rgba(255,179,0,.1)}\n.status-yellow .cw-analysis-text{color:#ffd54f}\n.status-red{border-left-color:#f44336;background:rgba(244,67,54,.1)}\n.status-red .cw-analysis-text{color:#e57373}\n.status-neutral{border-left-color:#888;background:rgba(255,255,255,.05)}\n.status-neutral .cw-analysis-text{color:#bbb}\n@media(max-width:768px){\n#bullbot-rocket-wrapper{padding:5px;}\n#crypto-widget-container{padding:15px 10px;}\n.cw-controls-wrapper{flex-direction:column;}\n.cw-control-group{width:100%;margin-bottom:10px;}\n.cw-btn{width:100%;}\n.trade-direction-box{flex-direction:row;flex-wrap:wrap;}\n.btn-direction{flex:1 1 30%;font-size:0.8rem;}\n.cw-stats-bar{grid-template-columns:1fr 1fr !important;}\n.cw-stats-bar .cw-stat-box:last-child{grid-column:span 2;}\n.bot-row{flex-direction:column;gap:10px;}\n.bot-col{width:100%;}\n#bullbot-rocket-wrapper input,#bullbot-rocket-wrapper select{height:42px !important;font-size:14px !important;}\n.cw-charts-grid{grid-template-columns:1fr !important;}\n.pnl-chart-container{height:200px;}\n#moon-app{height:350px;}\n.wm-main{font-size:1.5rem;}\n.big-mult{font-size:2rem !important;}\n.td-grid{grid-template-columns:1fr !important;}\n.cw-dash-grid{grid-template-columns:1fr;}\n.tactical-grid{grid-template-columns:1fr;}\n}\n<\/style>\n<div id=\"crypto-widget-container\">\n<div id=\"orbidex-loader\"><div class=\"ai-spinner\"><\/div><div class=\"ai-text\" id=\"ai-status-text\">Iniciando BULL TRADING BOT...<\/div><div class=\"ai-subtext\" id=\"ai-sub-text\">Cargando m\u00f3dulos de gesti\u00f3n institucional<\/div><\/div>\n<div class=\"cw-app-header\"><h2 class=\"cw-app-title\"><span style=\"color:#ffffff\">AI-PRO<\/span> <span style=\"color:#888; font-size:0.7em;\">( Trader Virtual )<\/span><\/h2><div style=\"color:#d500f9;font-weight:bold;font-size:1.2rem;letter-spacing:2px;margin-top:8px;animation:pulse 0.8s infinite;\">ORBIDEX AI<\/div><\/div>\n<div class=\"cw-controls-wrapper\">\n<div class=\"cw-control-group\"><span class=\"cw-label-top\">Mercado (Filtro Global)<\/span><select id=\"cw-asset-group\" onchange=\"changeAssetGroup()\"><option value=\"CRYPTO\">Criptomonedas<\/option><option value=\"FOREX\">Forex<\/option><option value=\"FUNDS\">Fondos\/Comodities<\/option><\/select><\/div>\n<div class=\"cw-control-group\"><span class=\"cw-label-top\">Activo en Pantalla<\/span><input type=\"text\" id=\"cw-coin\" list=\"crypto-list\" value=\"BTCUSDT\" placeholder=\"Ej. DOGEUSDT...\" onchange=\"updateApp()\" autocomplete=\"off\"><datalist id=\"crypto-list\"><\/datalist><\/div>\n<div class=\"cw-control-group\"><span class=\"cw-label-top\">Temporalidad<\/span><select id=\"cw-interval\" onchange=\"updateApp()\"><option value=\"1m\">1 Minuto (Scalping)<\/option><option value=\"5m\">5 Minutos (Intraday)<\/option><option value=\"15m\">15 Minutos (Swing)<\/option><option value=\"1h\">1 Hora (Trend)<\/option><option value=\"4h\">4 Horas (Macro)<\/option><option value=\"5s\" style=\"color:#ff5252; font-weight:bold;\">ULTRA FAST (5s) \u26a0\ufe0f <\/option><\/select><\/div>\n<div class=\"cw-control-group\" style=\"flex:0 0 auto;\"><span class=\"cw-label-top\">Acci\u00f3n<\/span><button onclick=\"updateApp()\" class=\"cw-btn\" style=\"min-width:100px;\"> \u21bb Reset<\/button><\/div>\n<\/div>\n<div id=\"warning-ultrafast\" class=\"blink-red\" style=\"display:none;\">\u26a0\ufe0f ADVERTENCIA: Usar temporalidad ULTRA R\u00c1PIDA (5s) conlleva un RIESGO EXTREMO de liquidaci\u00f3n.<\/div>\n<div class=\"cw-grid\">\n<div>\n<div class=\"cw-info-card\" style=\"align-items:center;\">\n<div style=\"flex:1;\"><div style=\"font-size:0.85rem;color:#aaa;font-weight:bold;\">PRECIO EN VIVO<\/div><div id=\"cw-display-price\" class=\"cw-price\">---<\/div><\/div>\n<div style=\"flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;\"><div class=\"radar-mini\"><div class=\"radar-scan-mini\"><\/div><div style=\"width:100%;height:100%;position:absolute;top:0;left:0;z-index:5;\"><canvas id=\"liveRadarChart\"><\/canvas><\/div><\/div><span style=\"font-size:0.55rem;color:#00ff00;margin-top:6px;font-weight:bold;letter-spacing:1px;background:rgba(0,255,0,0.1);padding:2px 6px;border-radius:4px;border:1px solid #00ff00;\">SCANNER ACTIVO<\/span><\/div>\n<div style=\"flex:1;text-align:right;\"><div style=\"font-size:0.85rem;color:#aaa;font-weight:bold;\">SE\u00d1AL ACTUAL<\/div><div id=\"cw-display-trend\" class=\"cw-trend trend-neutral\">ANALIZANDO...<\/div><\/div>\n<\/div>\n<div id=\"analysis-box\" class=\"cw-analysis-box status-neutral\"><div class=\"cw-analysis-title\">\ud83d\udca1 AN\u00c1LISIS DEL MOTOR AI:<\/div><div id=\"analysis-text\" class=\"cw-analysis-text\">Selecciona un activo y haz clic en analizar.<\/div><\/div>\n<div class=\"tactical-grid\">\n<div class=\"tg-box\"><div class=\"tg-title\">\ud83d\udcc8 Micro-Ticks (Pulso)<\/div><div style=\"height:65px;width:100%;margin-top:5px;\"><canvas id=\"microTickChart\"><\/canvas><\/div><\/div>\n<div class=\"tg-box\"><div class=\"tg-title\" id=\"title-gauge\">\ud83c\udfaf MIRA TELESC\u00d3PICA<\/div><div style=\"height:55px;width:100%;position:relative;margin-top:5px;\"><canvas id=\"gaugeChart\"><\/canvas><\/div><div style=\"width:100%;text-align:center;margin-top:2px;\"><div id=\"gaugeVal\" style=\"font-weight:bold;color:#fff;font-size:1.1rem;font-family:monospace;line-height:1;\">--<\/div><div id=\"gaugeStatus\" style=\"font-size:0.55rem;color:#aaa;font-weight:bold;text-transform:uppercase;margin-top:3px;\">ESPERANDO...<\/div><\/div><div style=\"margin-top:8px;background:rgba(0,0,0,0.3);padding:6px;border-radius:4px;border:1px solid #333;font-size:0.65rem;text-align:center;line-height:1.4;\"><div style=\"color:#bbb;\">RSI Ideal: <span id=\"ideal-rsi-range\" style=\"color:#fff;font-weight:bold;\">--<\/span><\/div><div style=\"color:#bbb;\">Gatillo: <span id=\"ideal-price-range\" style=\"color:#ffd54f;font-weight:bold;\">--<\/span><\/div><\/div><\/div>\n<div class=\"tg-box\"><div class=\"tg-title\">\u2696\ufe0f Term\u00f3metro Sentimiento<\/div><div class=\"sentiment-bar\"><div id=\"sen-bull-bar\" class=\"sen-bull\" style=\"width:50%;\">50%<\/div><div id=\"sen-bear-bar\" class=\"sen-bear\" style=\"width:50%;\">50%<\/div><\/div><div style=\"display:flex;justify-content:space-between;font-size:0.6rem;color:#888;margin-top:5px;font-weight:bold;\"><span>\ud83d\udfe2 COMPRADORES<\/span><span>VENDEDORES \ud83d\udd34 <\/span><\/div><\/div>\n<div class=\"tg-box\"><div class=\"tg-title\" id=\"title-mtf\">\ud83c\udf9b\ufe0f Matriz Multi-Temporal<\/div><div class=\"mtf-container\"><div class=\"mtf-item\"><div class=\"mtf-label\">1m<\/div><div id=\"led-1m\" class=\"mtf-led\"><\/div><\/div><div class=\"mtf-item\"><div class=\"mtf-label\">5m<\/div><div id=\"led-5m\" class=\"mtf-led\"><\/div><\/div><div class=\"mtf-item\"><div class=\"mtf-label\">15m<\/div><div id=\"led-15m\" class=\"mtf-led\"><\/div><\/div><div class=\"mtf-item\"><div class=\"mtf-label\">1h<\/div><div id=\"led-1h\" class=\"mtf-led\"><\/div><\/div><\/div><\/div>\n<\/div>\n<div class=\"cw-indicators\" id=\"tech-panel\">\n<div class=\"cw-ind-item\"><span class=\"cw-ind-sub\" id=\"lbl-ema-fast\">EMA RAP<\/span><span class=\"cw-ind-val-display\" id=\"val-ema-fast\">---<\/span><\/div>\n<div class=\"cw-ind-item\"><span class=\"cw-ind-sub\" id=\"lbl-ema-slow\">EMA LENT<\/span><span class=\"cw-ind-val-display\" id=\"val-ema-slow\">---<\/span><\/div>\n<div class=\"cw-ind-item\"><span class=\"cw-ind-sub\">CONVERG<\/span><span class=\"cw-ind-val-display\" id=\"val-conv\">---<\/span><\/div>\n<div class=\"cw-ind-item\"><span class=\"cw-ind-sub\">Velas<br>Cruce<\/span><span class=\"cw-ind-val-display\" id=\"val-candles\" style=\"color:#ff9800\">---<\/span><\/div>\n<div class=\"cw-ind-item\"><span class=\"cw-ind-sub\">RSI (14)<\/span><span class=\"cw-ind-val-display\" id=\"val-rsi\">---<\/span><\/div>\n<div class=\"cw-ind-item\" style=\"border-left:2px solid #6c5ce7;padding-left:12px;\"><span class=\"cw-ind-sub\" style=\"color:#a29bfe;\">Fuerza ADX<\/span><div id=\"val-adx\" class=\"cw-ind-val-display\" style=\"display:flex;align-items:center;gap:5px;\">---<\/div><\/div>\n<div class=\"cw-ind-item\" style=\"border-right:none;\"><span class=\"cw-ind-sub\" style=\"color:#a29bfe;\">Ox\u00edgeno Fractal<\/span><div style=\"display:flex;flex-direction:column;width:70px;margin-top:2px;\"><span class=\"cw-ind-val-display\" id=\"val-oxygen-txt\" style=\"font-size:0.75rem;\">---<\/span><div style=\"width:100%;height:4px;background:#333;border-radius:2px;margin-top:3px;\"><div id=\"bar-oxygen\" style=\"width:0%;height:100%;background:#4caf50;border-radius:2px;transition:width 0.3s;\"><\/div><\/div><\/div><\/div>\n<div class=\"cw-ind-item\" style=\"border-left:1px solid #333;padding-left:12px;border-right:none;\"><span class=\"cw-ind-sub\">MACD<\/span><span class=\"cw-ind-val-display\" id=\"val-macd\">---<\/span><\/div>\n<\/div>\n<div id=\"cvd-panel\" style=\"width:100%;margin-top:10px;padding:15px;background:rgba(255,193,7,0.05);border:1px solid #ffc107;border-radius:6px;display:none;text-align:center;box-shadow:inset 0 0 10px rgba(255,193,7,0.1);\">\n<span style=\"font-size:0.85rem;color:#ffc107;font-weight:800;text-transform:uppercase;letter-spacing:1px;display:block;border-bottom:1px solid rgba(255,193,7,0.3);padding-bottom:5px;margin-bottom:10px;\">\ud83d\udd25 PRESI\u00d3N CVD (ORDER FLOW)<\/span>\n<div style=\"display:grid;grid-template-columns:repeat(3,1fr);gap:10px;font-size:0.8rem;color:#aaa;margin-bottom:10px;\">\n<div style=\"background:rgba(0,0,0,0.3);padding:8px;border-radius:4px;\">Total Operado<br><span id=\"cvd-val-total\" style=\"color:#fff;font-weight:bold;font-size:1rem;\">0.00<\/span><\/div>\n<div style=\"background:rgba(76,175,80,0.1);padding:8px;border-radius:4px;border:1px solid rgba(76,175,80,0.3);\">Agresores Compra<br><span id=\"cvd-val-buy\" style=\"color:#4caf50;font-weight:bold;font-size:1rem;\">0.00<\/span> \ud83d\udfe2<\/div>\n<div style=\"background:rgba(244,67,54,0.1);padding:8px;border-radius:4px;border:1px solid rgba(244,67,54,0.3);\">Agresores Venta<br><span id=\"cvd-val-sell\" style=\"color:#ff5252;font-weight:bold;font-size:1rem;\">0.00<\/span> \ud83d\udd34<\/div>\n<\/div>\n<div style=\"font-size:0.75rem;color:#aaa;text-transform:uppercase;\">Delta (Fuerza Neta)<\/div><div id=\"val-cvd\" style=\"font-size:2.2rem;font-weight:bold;font-family:monospace;color:#fff;margin-top:2px;text-shadow:0 0 5px rgba(0,0,0,0.5);\">0.00 \u26aa<\/div>\n<\/div>\n<div class=\"chart-box\" style=\"height:650px;display:flex;flex-direction:column;gap:10px;margin-top:10px;\">\n<div class=\"chart-toggles\" id=\"chart-toggles-container\"><button id=\"toggle-emas\" class=\"btn-toggle active\" onclick=\"toggleIndicator('emas')\"><span style=\"display:inline-block;width:8px;height:8px;background:#00bcd4;border-radius:50%;\"><\/span> EMAs<\/button><button id=\"toggle-bb\" class=\"btn-toggle\" onclick=\"toggleIndicator('bb')\"><span style=\"display:inline-block;width:8px;height:8px;background:#a29bfe;border-radius:50%;\"><\/span> Bollinger<\/button><\/div>\n<div style=\"flex:3;position:relative;width:100%;min-height:0;\"><canvas id=\"cryptoChart\"><\/canvas><\/div>\n<div style=\"flex:1;position:relative;width:100%;min-height:0;\"><canvas id=\"rsiChart\"><\/canvas><\/div>\n<div id=\"cvd-chart-wrapper\" style=\"flex:1;position:relative;width:100%;min-height:0;display:none;\"><canvas id=\"cvdChart\"><\/canvas><\/div>\n<\/div>\n<div id=\"moon-app\">\n<div class=\"watermark\"><div class=\"wm-main\">ROCKET GAME<\/div><div class=\"wm-sub\">BULL TRADING BOT<\/div><\/div>\n<canvas id=\"gameCanvas\"><\/canvas>\n<div class=\"ui-layer\">\n<div class=\"hud\">\n<div class=\"stat\"><label>COIN<\/label><span id=\"ui-coin\">---<\/span><\/div><div class=\"stat\"><label>ENTRY<\/label><span id=\"ui-entry-top\" class=\"entry-val\">---<\/span><\/div><div class=\"stat\"><label>PRICE<\/label><span id=\"ui-price\">---<\/span><\/div><div class=\"stat\"><label>PNL ($)<\/label><span id=\"ui-pnl\">$0.00<\/span><\/div>\n<\/div>\n<div class=\"thermo-container\" id=\"thermo\"><div class=\"thermo-bar\"><div class=\"thermo-zero\"><\/div><div class=\"fill-up\" id=\"bar-up\"><\/div><div class=\"fill-down\" id=\"bar-down\"><\/div><\/div><\/div>\n<div class=\"center-display\"><div class=\"big-mult\" id=\"ui-mult\">0.00%<\/div><div class=\"status-badge\" id=\"ui-status\">WAITING FOR SIGNAL...<\/div><div class=\"realized-pnl\" id=\"ui-realized\">SECURED: $0.00<\/div><\/div>\n<\/div>\n<\/div>\n<div id=\"trade-detail-module\" class=\"trade-detail-panel\" style=\"display:none;\">\n<h3 style=\"margin:0 0 15px 0;font-size:1rem;border-bottom:1px solid #444;padding-bottom:8px;color:#fff;\">DETALLES DEL TRADE SELECCIONADO<\/h3>\n<div class=\"td-grid\">\n<div class=\"td-item\"><span class=\"td-label\">Trade (Par\/Estado)<\/span><span class=\"td-val\" id=\"td-pair\">---<\/span><\/div>\n<div class=\"td-item\"><span class=\"td-label\">Direcci\u00f3n<\/span><span class=\"td-val\" id=\"td-dir\">---<\/span><\/div>\n<div class=\"td-item\"><span class=\"td-label\">Inicio<\/span><span class=\"td-val\" id=\"td-start\">---<\/span><\/div>\n<div class=\"td-item\"><span class=\"td-label\">Cierre<\/span><span class=\"td-val\" id=\"td-end\">---<\/span><\/div>\n<div class=\"td-item\"><span class=\"td-label\">Duraci\u00f3n<\/span><span class=\"td-val\" id=\"td-dur\">---<\/span><\/div>\n<div class=\"td-item\"><span class=\"td-label\">ROI Obtenido<\/span><span class=\"td-val\" id=\"td-roi\">---<\/span><\/div>\n<div class=\"td-item\"><span class=\"td-label\">PNL Total ($)<\/span><span class=\"td-val\" id=\"td-pnl\">---<\/span><\/div>\n<div class=\"td-item\"><span class=\"td-label\">Resultado<\/span><span class=\"td-val\" id=\"td-res\">---<\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"bot-panel\">\n<h3 class=\"bot-title\">CONFIGURACI\u00d3N DEL BOT<\/h3>\n\n<!-- INYECCI\u00d3N: M\u00d3DULO FUEGO REAL BROWSER (VERSI\u00d3N DEFINITIVA) -->\n<div class=\"bot-subtitle\" style=\"color:#00ff88; margin-top:5px;\"> \ud83d\ude80 ENRUTAMIENTO MULTI-EXCHANGE (TEST BROWSER)<\/div>\n<div style=\"background:rgba(0,0,0,0.2); padding:15px; border-radius:6px; border:1px dashed #00ff88; margin-bottom:15px;\">\n    <div class=\"bot-row\">\n        <div class=\"bot-col\" style=\"flex: 1.5;\">\n            <label class=\"cw-label-top\" style=\"color:#00ff88;\">MODO DE OPERACI\u00d3N<\/label>\n            <select id=\"config-modo-operacion\" onchange=\"verificarCamposExchange()\" style=\"border:1px solid #00ff88; color:#00ff88; font-weight:bold;\">\n                <option value=\"PAPER\">\ud83e\uddea SIMULACI\u00d3N VIRTUAL ($500k Locales)<\/option>\n                <option value=\"REAL\">\u2622\ufe0f FUEGO REAL (CORS PROXY)<\/option>\n            <\/select>\n        <\/div>\n        <div class=\"bot-col\" style=\"flex: 1;\">\n            <label class=\"cw-label-top\">EXCHANGE<\/label>\n            <select id=\"config-exchange\" onchange=\"verificarCamposExchange()\">\n                <option value=\"binance\">Binance<\/option>\n                <option value=\"bybit\">Bybit<\/option>\n                <option value=\"okx\">OKX<\/option>\n                <option value=\"kucoin\">KuCoin<\/option>\n            <\/select>\n        <\/div>\n    <\/div>\n    <div id=\"panel-api-keys\" style=\"display:none; margin-top:10px; border-top:1px solid #333; padding-top:10px;\">\n        <label class=\"cw-label-top\" style=\"color:#ff5252;\">\u26a0\ufe0f API KEY (Sin restricci\u00f3n IP para Proxy)<\/label>\n        <input type=\"text\" id=\"api-key\" placeholder=\"Pega tu API Key...\" autocomplete=\"off\">\n        \n        <label class=\"cw-label-top\" style=\"margin-top:5px;\">SECRET KEY<\/label>\n        <input type=\"password\" id=\"api-secret\" placeholder=\"Pega tu Secret Key...\" autocomplete=\"off\">\n        \n        <div id=\"caja-passphrase\" style=\"display:none; margin-top:5px;\">\n            <label class=\"cw-label-top\" style=\"color:#ffc107;\">API PASSPHRASE (Solo OKX\/KuCoin)<\/label>\n            <input type=\"password\" id=\"api-passphrase\" placeholder=\"Contrase\u00f1a de la API...\" autocomplete=\"off\">\n        <\/div>\n\n        <button onclick=\"conectarExchangeReal()\" class=\"cw-btn\" style=\"background:linear-gradient(45deg, #00bcd4, #0097a7); color:#fff; border:none; margin-top:15px; width:100%; box-shadow:0 0 10px rgba(0, 188, 212, 0.3);\">\n            \ud83d\udd17 CONECTAR Y VERIFICAR SALDO\n        <\/button>\n        <div id=\"api-status-msg\" style=\"font-size:0.8rem; margin-top:10px; text-align:center; font-family:monospace; font-weight:bold;\"><\/div>\n    <\/div>\n<\/div>\n<!-- FIN INYECCI\u00d3N -->\n\n<div class=\"bot-subtitle\" style=\"color:#ffc107;\">\ud83e\udde0 MACROCEREBRO ACTIVO<\/div>\n<div class=\"bot-row\" style=\"margin-bottom:15px;\"><div class=\"bot-col\"><select id=\"bot-macrocerebro\" onchange=\"toggleMacrocerebro()\" style=\"border:1px solid #ffc107;color:#ffc107;font-weight:bold;background:rgba(255,193,7,0.1) !important;\"><option value=\"1\">1. Acci\u00f3n del Precio (Cl\u00e1sico)<\/option><option value=\"2\">2. Order Flow & CVD (Alta Frecuencia)<\/option><\/select><\/div><\/div>\n<div class=\"bot-subtitle\">1. GESTI\u00d3N DE CAPITAL<\/div>\n\n<!-- BLOQUE DE CAPITAL MODIFICADO CON ID PARA CONMUTACI\u00d3N -->\n<div class=\"bot-row\" id=\"row-capital\">\n    <div class=\"bot-col\">\n        <label class=\"cw-label-top\" id=\"label-capital\">Capital Fijo Lock (USD)<\/label>\n        <input type=\"number\" id=\"calc-amount\" value=\"500000\" disabled style=\"color:#aaa !important;cursor:not-allowed;\">\n    <\/div>\n<\/div>\n\n<div class=\"bot-row\"><div class=\"bot-col\"><label class=\"cw-label-top\">MIO ($ Max\/Ord)<\/label><input type=\"number\" id=\"bot-mio\" value=\"100\" oninput=\"calculateResults();\"><\/div><div class=\"bot-row\" style=\"display:none;\"><label class=\"cw-label-top\">MOA (Max\/Coin)<\/label><input type=\"number\" id=\"bot-moa\" value=\"1\"><\/div><div class=\"bot-col\"><label class=\"cw-label-top\">MAC (M\u00e1x Activos)<\/label><input type=\"number\" id=\"bot-mac\" value=\"3\"><\/div><\/div>\n<div class=\"bot-subtitle\">2. DIRECCI\u00d3N & ESCANEO MULTI-PAR<\/div>\n<div class=\"bot-row\" id=\"row-scan-mode\"><div class=\"bot-col\"><label class=\"cw-label-top\">Rango de Escaneo (Bot)<\/label><select id=\"bot-scan-mode\" onchange=\"toggleScanMode()\"><optgroup label=\"\ud83d\udd25 NARRATIVA TENDENCIA\"><option value=\"TENDENCIA_TOP10\">\ud83d\udc51 Top 10 Blue Chips<\/option><option value=\"TENDENCIA_MEMES\">\ud83e\udd21 Memecoins Vol\u00e1tiles<\/option><option value=\"TENDENCIA_TECH\">\ud83e\udde0 IA & Tecnol\u00f3gicas<\/option><\/optgroup><optgroup label=\"\ud83c\udf0d MERCADO GLOBAL\"><option value=\"GLOBAL\">Top 50 Alta Liquidez<\/option><\/optgroup><optgroup label=\"\ud83c\udfaf ESPEC\u00cdFICO\"><option value=\"ENFOCADO\">Enfocado (Solo en pantalla)<\/option><option value=\"CUSTOM\">Personalizado (Max 7)<\/option><\/optgroup><\/select><\/div><\/div>\n<div id=\"custom-scan-container\" style=\"display:none;margin-bottom:10px;background:rgba(0,0,0,0.2);padding:10px;border-radius:6px;border:1px dashed #555;\"><label class=\"cw-label-top\" style=\"color:#a29bfe;\">Buscador de Activos<\/label><input type=\"text\" id=\"custom-scan-input\" list=\"crypto-list\" placeholder=\"Escribe y selecciona... (Max 7)\" autocomplete=\"off\" style=\"margin-bottom:5px !important;\"><div id=\"custom-scan-tags\" style=\"display:flex;flex-wrap:wrap;gap:5px;margin-top:5px;\"><\/div><\/div>\n<div class=\"cw-input-group\"><div class=\"trade-direction-box\"><button id=\"btn-long\" class=\"btn-direction active-long\" onclick=\"setDirection('LONG')\">LONG \ud83d\udfe2<\/button><button id=\"btn-short\" class=\"btn-direction\" onclick=\"setDirection('SHORT')\">SHORT \ud83d\udd34<\/button><button id=\"btn-auto\" class=\"btn-direction\" onclick=\"setDirection('AUTO')\">AUTO \ud83e\udd16<\/button><\/div><\/div>\n<div class=\"bot-row\" style=\"display:none;\"><div class=\"bot-col\"><select id=\"calc-mode\" onchange=\"toggleMode()\"><option value=\"FUTURES\">FUTUROS<\/option><option value=\"SPOT\">SPOT<\/option><\/select><\/div><\/div>\n<div class=\"bot-row\" id=\"row-entry-mode\"><div class=\"bot-col\"><label class=\"cw-label-top\">Modo de Entrada AI-PRO<\/label><select id=\"bot-entry-mode\" onchange=\"updateApp()\"><option value=\"SNIPER\">SNIPER (Cruce Exacto) \ud83c\udfaf<\/option><option value=\"RELAXED\">RELAXED (Tendencia) \ud83c\udf0a<\/option><\/select><\/div><\/div>\n<div class=\"bot-row\" id=\"row-risk-profile\"><div class=\"bot-col\"><label class=\"cw-label-top\">Perfil de Riesgo (Motor AI)<\/label><select id=\"bot-risk-profile\" onchange=\"updateApp()\"><option value=\"INSTITUTIONAL\">\ud83d\udee1\ufe0f INSTITUCIONAL (M\u00e1xima Seguridad)<\/option><option value=\"LIGHT\">\ud83d\udd25 LIGHT (Cl\u00e1sico - Riesgo Retail)<\/option><\/select><\/div><\/div>\n<div class=\"cw-input-group\"><label class=\"cw-label-top\">Apalancamiento (Leverage)<\/label><div class=\"slider-container\"><input type=\"range\" id=\"leverage-slider\" class=\"cw-range\" min=\"1\" max=\"150\" value=\"10\" oninput=\"updateLeverageDisplay(this.value)\"><span id=\"lev-val\" class=\"val-display\">10x<\/span><\/div><div id=\"warning-leverage\" class=\"blink-text-small\" style=\"display:none;\">El usuario acepta los riesgos de usar alto apalancamiento.<\/div><\/div>\n<div class=\"bot-subtitle\">3. TAKE PROFIT & STOP LOSS<\/div>\n<div class=\"cw-input-group\"><select id=\"bot-preset\" onchange=\"applyStrategyPreset()\"><option value=\"SCALPER\">SCALPER PRO (Scalping 1m)<\/option><option value=\"FAST\">FAST PROFIT (Intraday 5m)<\/option><option value=\"SWING_SHORT\">SWING SHORT (Swing 15m)<\/option><option value=\"ROCKIE\">ROCKIE TRADER (Trend 1h)<\/option><option value=\"HOLDER\">HOLDER TRADER (Macro 4h)<\/option><\/select><\/div>\n<div class=\"tp-mode-selector\"><label><input type=\"radio\" name=\"tp-mode\" value=\"single\" onclick=\"toggleTPMode('single')\"> TP \u00danico<\/label><label><input type=\"radio\" name=\"tp-mode\" value=\"multi\" checked onclick=\"toggleTPMode('multi')\"> TP Escalonado<\/label><\/div>\n<div id=\"tp-single-box\" class=\"tp-single-box\"><label class=\"cw-label-top\">% Profit Meta<\/label><input type=\"number\" id=\"tp-single-val\" class=\"tp-input-mini\" value=\"1.5\" step=\"0.1\" style=\"width:100% !important;color:#aaa;\" oninput=\"calculateResults()\"><\/div>\n<div id=\"tp-ladder-box\" class=\"tp-ladder-box\"><div class=\"tp-row-small\"><span style=\"width:30px\">TP1<\/span> <input type=\"number\" id=\"tp1-pct\" class=\"tp-input-mini\" value=\"0.25\"> % Dist \u2b95 <input type=\"number\" id=\"tp1-vol\" class=\"tp-input-mini\" value=\"50\"> % Vol<\/div><div class=\"tp-row-small\"><span style=\"width:30px\">TP2<\/span> <input type=\"number\" id=\"tp2-pct\" class=\"tp-input-mini\" value=\"0.45\"> % Dist \u2b95 <input type=\"number\" id=\"tp2-vol\" class=\"tp-input-mini\" value=\"25\"> % Vol<\/div><div class=\"tp-row-small\"><span style=\"width:30px\">TP3<\/span> <input type=\"number\" id=\"tp3-pct\" class=\"tp-input-mini\" value=\"0.65\"> % Dist \u2b95 <input type=\"number\" id=\"tp3-vol\" class=\"tp-input-mini\" value=\"15\"> % Vol<\/div><div class=\"tp-row-small\"><span style=\"width:30px\">TP4<\/span> <input type=\"number\" id=\"tp4-pct\" class=\"tp-input-mini\" value=\"0.87\"> % Dist \u2b95 <input type=\"number\" id=\"tp4-vol\" class=\"tp-input-mini\" value=\"10\"> % Vol<\/div><\/div>\n<div class=\"slider-container\" style=\"margin-top:15px;\"><span style=\"font-size:0.8rem;color:#ff5252;min-width:30px;\">SL<\/span><input type=\"range\" id=\"sl-slider\" class=\"cw-range\" min=\"0.1\" max=\"50\" step=\"0.1\" value=\"2\" oninput=\"document.getElementById('sl-val').innerText=this.value+'%';calculateResults();\"><span id=\"sl-val\" class=\"val-display\" style=\"color:#ff5252\">2%<\/span><\/div>\n<div class=\"bot-subtitle\">4. TRAILING DIN\u00c1MICO<\/div>\n<div class=\"bot-row\"><div class=\"bot-col\"><label class=\"cw-label-top\">Trailing SL (%)<\/label><input type=\"number\" id=\"input-trailing-sl\" value=\"0\" step=\"0.1\"><\/div><div class=\"bot-col\"><label class=\"cw-label-top\">Trailing TP (%)<\/label><input type=\"number\" id=\"input-trailing-tp\" value=\"0\" step=\"0.1\"><\/div><\/div>\n<div class=\"cw-results\"><div class=\"cw-res-row\"><span>Precio TP Objetivo:<\/span><span id=\"res-tp-price\" style=\"color:white;font-weight:bold;\">---<\/span><\/div><div class=\"cw-res-row\"><span>Ganancia (Est):<\/span><span id=\"res-profit\" class=\"cw-res-val\">---<\/span><\/div><hr style=\"border-color:#444;opacity:0.3;margin:5px 0;\"><div class=\"cw-res-row\"><span>Precio SL Riesgo:<\/span><span id=\"res-sl-price\" style=\"color:white;font-weight:bold;\">---<\/span><\/div><div class=\"cw-res-row\"><span>P\u00e9rdida (Est):<\/span><span id=\"res-loss\" class=\"cw-res-loss\">---<\/span><\/div><\/div>\n<button id=\"btn-bot-toggle\" onclick=\"toggleBotExecution()\" class=\"btn-launch-bot\">\ud83e\udd16 LANZAR BOT<\/button>\n<div id=\"scan-status\" style=\"text-align:center;font-size:0.8em;color:#aaa;margin-top:5px;height:20px;\"><\/div>\n<\/div><\/div>\n<div class=\"cw-orders-module\">\n<div class=\"cw-orders-header\"><h3 style=\"margin:0;font-size:1.1rem;color:white;\">PORTAFOLIO DE TRADING<\/h3><div class=\"live-indicator\"><div class=\"live-dot\"><\/div> MONITORIZANDO<\/div><\/div>\n<div class=\"cw-stats-bar\"><div class=\"cw-stat-box\"><div class=\"cw-stat-label\">Trades<\/div><div class=\"cw-stat-val\" id=\"stat-total-trades\">0<\/div><\/div><div class=\"cw-stat-box\"><div class=\"cw-stat-label\">Win Rate<\/div><div class=\"cw-stat-val\" id=\"stat-winrate\" style=\"color:#00bcd4;\">0%<\/div><\/div><div class=\"cw-stat-box\"><div class=\"cw-stat-label\">PNL Flotante<\/div><div class=\"cw-stat-val\" id=\"stat-pnl-floating\">$0.00<\/div><\/div><div class=\"cw-stat-box\"><div class=\"cw-stat-label\">PNL Realizado<\/div><div class=\"cw-stat-val\" id=\"stat-pnl-realized\">$0.00<\/div><\/div><div class=\"cw-stat-box\"><div class=\"cw-stat-label\">Total Asegurado<\/div><div class=\"cw-stat-val\" id=\"stat-secured\" style=\"color:#ffd700;text-shadow:0 0 5px rgba(255,215,0,0.3);\">$0.00<\/div><\/div><\/div>\n<div class=\"cw-orders-table-wrap\">\n<table class=\"cw-orders-table\"><thead><tr><th>Fecha<br>Hora<\/th><th>Par \/<br>Acci\u00f3n<\/th><th>Direcci\u00f3n<\/th><th>Entrada<\/th><th>Monto<br>(xLev)<\/th><th>Target<br>TP\/SL<\/th><th>Flotante(%)<\/th><th>Flotante($)<\/th><th>Asegurado($)<\/th><th>TOTAL($)<\/th><th style=\"width:160px;min-width:160px;text-align:center;\">Progreso Visual<\/th><th>Estado<\/th><\/tr><\/thead><tbody id=\"cw-orders-body\"><tr><td colspan=\"12\" style=\"text-align:center;padding:20px;\">El bot est\u00e1 inactivo.<\/td><\/tr><\/tbody><\/table>\n<\/div>\n<div style=\"text-align:right;\"><button onclick=\"clearHistory()\" style=\"background:none;border:none;color:#ff5252;cursor:pointer;text-decoration:underline;font-size:0.8em;margin-top:10px;\">Limpiar Historial<\/button><\/div>\n<div class=\"cw-charts-grid\"><div class=\"pnl-chart-container\"><div class=\"chart-title\">Ganancia vs P\u00e9rdida Diaria (%)<\/div><canvas id=\"chartWinLoss\"><\/canvas><\/div><div class=\"pnl-chart-container\"><div class=\"chart-title\">Rendimiento Neto Diario ($)<\/div><canvas id=\"chartDailyUsd\"><\/canvas><\/div><\/div>\n<\/div>\n<div class=\"cw-orders-module\" id=\"backtest-module\" style=\"margin-top:20px;border-color:#ff9800;\">\n<div class=\"cw-orders-header\"><h3 style=\"margin:0;font-size:1.1rem;color:#ff9800;\">\ud83e\uddea Laboratorio de Backtesting<\/h3><\/div>\n<div class=\"cw-controls-wrapper\"><div class=\"cw-control-group\"><span class=\"cw-label-top\">Velas Hist\u00f3ricas<\/span><select id=\"bt-candles\"><option value=\"500\">\u00daltimas 500<\/option><option value=\"1000\">\u00daltimas 1000<\/option><\/select><\/div><div class=\"cw-control-group\"><span class=\"cw-label-top\">Acci\u00f3n<\/span><button onclick=\"runBacktest()\" class=\"cw-btn\" style=\"background:#ff9800;border-color:#f57c00;\">\u25b6 Iniciar Test<\/button><\/div><\/div>\n<div id=\"bt-results\" class=\"cw-stats-bar\" style=\"display:none;grid-template-columns:repeat(3,1fr);\"><\/div><div id=\"bt-analyst-report\" style=\"margin-top:15px;background:rgba(0,0,0,0.3);padding:10px;border-radius:6px;display:none;\"><\/div><div style=\"height:200px;margin-top:15px;display:none;\" id=\"bt-chart-container\"><canvas id=\"bt-chart\"><\/canvas><\/div><div id=\"bt-log\" style=\"max-height:150px;overflow-y:auto;background:rgba(0,0,0,0.2);padding:10px;font-size:0.75rem;font-family:monospace;display:none;margin-top:10px;border-radius:6px;color:#aaa;\"><\/div>\n<\/div>\n<div class=\"cw-dash-module\" id=\"cw-dashboard-container\">\n<h3 class=\"cw-dash-title\">AI-PRO ANALYTICS DASHBOARD<\/h3>\n<div class=\"cw-dash-grid\">\n<div class=\"cw-dash-card\"><div class=\"cw-dash-header\"><h4>KPIs Globales<\/h4><button class=\"cw-dash-btn\" onclick=\"renderDashBlock1()\">Generar<\/button><\/div><div id=\"dash-content-1\" class=\"cw-dash-content\"><p style=\"color:#666;text-align:center;\">Esperando...<\/p><\/div><\/div>\n<div class=\"cw-dash-card\"><div class=\"cw-dash-header\"><h4>Ranking Ganancia Neta<\/h4><button class=\"cw-dash-btn\" onclick=\"renderDashBlock2()\">Generar<\/button><\/div><div id=\"dash-content-2\" class=\"cw-dash-content\"><p style=\"color:#666;text-align:center;\">Esperando...<\/p><\/div><\/div>\n<div class=\"cw-dash-card\"><div class=\"cw-dash-header\"><h4>Eficiencia por Par<\/h4><button class=\"cw-dash-btn\" onclick=\"renderDashBlock3()\">Generar<\/button><\/div><div id=\"dash-content-3\" class=\"cw-dash-content\"><p style=\"color:#666;text-align:center;\">Esperando...<\/p><\/div><\/div>\n<div class=\"cw-dash-card\"><div class=\"cw-dash-header\"><h4>Riesgo Cr\u00edtico (Drawdown)<\/h4><button class=\"cw-dash-btn\" onclick=\"renderDashBlock4()\">Generar<\/button><\/div><div id=\"dash-content-4\" class=\"cw-dash-content\"><p style=\"color:#666;text-align:center;\">Esperando...<\/p><\/div><\/div>\n<div class=\"cw-dash-card\"><div class=\"cw-dash-header\"><h4>An\u00e1lisis de Direcci\u00f3n<\/h4><button class=\"cw-dash-btn\" onclick=\"renderDashBlock5()\">Generar<\/button><\/div><div id=\"dash-content-5\" class=\"cw-dash-content\"><p style=\"color:#666;text-align:center;\">Esperando...<\/p><\/div><\/div>\n<\/div>\n<\/div>\n<div class=\"cw-dash-module\" id=\"cw-adv-charts-container\">\n<h3 class=\"cw-dash-title\">GENERADOR DE GR\u00c1FICOS AVANZADOS<\/h3>\n<div class=\"cw-controls-wrapper\"><div class=\"cw-control-group\" style=\"flex:2;\"><span class=\"cw-label-top\">Tipo de Gr\u00e1fico<\/span><select id=\"adv-chart-type\"><option value=\"1\">1. Ranking ponderado por trades<\/option><option value=\"2\">2. An\u00e1lisis de riesgo por par<\/option><option value=\"3\">3. Top 3 maximizar ganancias<\/option><option value=\"4\">4. Eficiencia por par<\/option><option value=\"5\">5. Riesgo (P\u00e9rdidas vs ganancias)<\/option><option value=\"6\">6. Distribuci\u00f3n por tipo de cierre<\/option><option value=\"7\">7. Direcci\u00f3n (Long vs Short)<\/option><\/select><\/div><div class=\"cw-control-group\"><span class=\"cw-label-top\">Acci\u00f3n<\/span><button class=\"cw-btn\" onclick=\"generateAdvancedChart()\" style=\"background:#6c5ce7;\">\ud83d\udcca Generar Gr\u00e1fico<\/button><\/div><\/div><div class=\"pnl-chart-container\" style=\"height:400px;margin-top:15px;\"><canvas id=\"advChartCanvas\"><\/canvas><\/div>\n<\/div>\n<div class=\"cw-dash-module\" id=\"cw-brain-comparison-container\">\n<h3 class=\"cw-dash-title\">\u2694\ufe0f COMPARATIVA DE MOTORES (CEREBRO 1 VS 2)<\/h3>\n<div class=\"cw-controls-wrapper\"><div class=\"cw-control-group\"><button class=\"cw-btn\" onclick=\"generateBrainComparison()\" style=\"background:#00bcd4;font-size:1.1rem;height:50px;\">\ud83d\udcca Generar An\u00e1lisis de Eficiencia por Cerebro<\/button><\/div><\/div>\n<div id=\"brain-comp-results\" style=\"display:none;margin-top:15px;\"><\/div>\n<\/div>\n<\/div>\n<script>\nlet ccxtExchange = null;\n\n\/\/ GESTOR DE ESTADO DE CAPITAL VIRTUAL \/ REAL\nfunction verificarCamposExchange() {\n    const modo = document.getElementById('config-modo-operacion').value;\n    const exchange = document.getElementById('config-exchange').value;\n    const panelApi = document.getElementById('panel-api-keys');\n    const cajaPassphrase = document.getElementById('caja-passphrase');\n    const labelCapital = document.getElementById('label-capital');\n    const calcAmount = document.getElementById('calc-amount');\n    \n    if (modo === 'REAL') {\n        panelApi.style.display = 'block';\n        \/\/ RESTRICCI\u00d3N MODIFICADA: Ahora se muestra tanto para OKX como para KuCoin\n        if (exchange === 'okx' || exchange === 'kucoin') { cajaPassphrase.style.display = 'block'; } \n        else { cajaPassphrase.style.display = 'none'; }\n        \n        labelCapital.innerHTML = \"\u26a0\ufe0f ESPERANDO CONEXI\u00d3N API (Capital Real)\";\n        labelCapital.style.color = \"#ff5252\";\n        calcAmount.value = \"\"; \n        calcAmount.placeholder = \"Conecta API para ver saldo...\";\n    } else {\n        panelApi.style.display = 'none';\n        labelCapital.innerHTML = \"Capital Fijo Lock (USD)\";\n        labelCapital.style.color = \"#bbb\";\n        calcAmount.value = 500000;\n        calcAmount.placeholder = \"\";\n        document.getElementById('api-status-msg').innerHTML = \"\";\n        ccxtExchange = null; \n    }\n}\n\nasync function conectarExchangeReal() {\n    const statusMsg = document.getElementById('api-status-msg');\n    const exName = document.getElementById('config-exchange').value;\n    const apiKey = document.getElementById('api-key').value.trim();\n    const secret = document.getElementById('api-secret').value.trim();\n    const passphrase = document.getElementById('api-passphrase').value.trim();\n    \n    if (!apiKey || !secret) { statusMsg.innerHTML = '<span style=\"color:#ff5252;\">\u274c Faltan credenciales API.<\/span>'; return; }\n    statusMsg.innerHTML = '<span style=\"color:#ffc107;\">\u23f3 Conectando con ' + exName.toUpperCase() + '...<\/span>';\n    \n    try {\n        let configEx = { apiKey: apiKey, secret: secret, proxy: 'https:\/\/corsproxy.io\/?' };\n        \n        \/\/ RESTRICCI\u00d3N MODIFICADA: Inyecta Passphrase para OKX o KuCoin\n        if ((exName === 'okx' || exName === 'kucoin') && passphrase !== '') { \n            configEx.password = passphrase; \n        }\n        \n        if (window.ccxt && window.ccxt[exName]) {\n            ccxtExchange = new window.ccxt[exName](configEx);\n            const balance = await ccxtExchange.fetchBalance();\n            let usdtBalance = 0;\n            if(balance.USDT && balance.USDT.total) usdtBalance = balance.USDT.total;\n            else if (balance.total && balance.total.USDT) usdtBalance = balance.total.USDT;\n            \n            statusMsg.innerHTML = `<span style=\"color:#4caf50;\">\u2705 CONECTADO. SALDO REAL: $${usdtBalance.toFixed(2)} USDT<\/span>`;\n            \n            document.getElementById('label-capital').innerHTML = \"\ud83d\udcb0 CAPITAL REAL DISPONIBLE (USDT)\";\n            document.getElementById('label-capital').style.color = \"#4caf50\";\n            document.getElementById('calc-amount').value = usdtBalance.toFixed(2);\n            \n        } else { statusMsg.innerHTML = '<span style=\"color:#ff5252;\">\u274c Error: Librer\u00eda CCXT no disponible.<\/span>'; }\n    } catch(err) { console.error(\"Error de CCXT:\", err); statusMsg.innerHTML = `<span style=\"color:#ff5252;\">\u274c Error de conexi\u00f3n: Revisa tus claves o restricciones de IP.<\/span>`; }\n}\n\nwindow.renderCustomTags=function(){const container=document.getElementById('custom-scan-tags');if(!container)return;container.innerHTML='';customScanList.forEach(sym=>{const tag=document.createElement('div');tag.className='scan-tag';tag.innerHTML=`${sym} <span onclick=\"removeCustomTag('${sym}')\">\u2715<\/span>`;container.appendChild(tag);});};\nwindow.removeCustomTag=function(sym){customScanList=customScanList.filter(s=>s!==sym);window.renderCustomTags();};\nlet myChart=null,chartInstance1=null,chartInstance2=null,btChartInstance=null,advChartInstance=null,rsiChartInstance=null;\nlet currentPrice=0,priceSocket=null,currentDirection='LONG',currentAlgoScore=0;\nlet manualToggleEmas=null,manualToggleBb=null,lastMacroRegime=\"TREND\";\nlet currentPriceSymbol=null,currentDetailSymbol=null,customScanList=[];\nlet currentMacrocerebro=1;\nconst FOOTPRINT_COINS=[\"BTCUSDT\",\"ETHUSDT\",\"BNBUSDT\",\"SOLUSDT\",\"BCHUSDT\"];\nlet footprintSockets={};\nlet cvdData={\"BTCUSDT\":0,\"ETHUSDT\":0,\"BNBUSDT\":0,\"SOLUSDT\":0,\"BCHUSDT\":0};\nlet cvdVolData={\"BTCUSDT\":{buy:0,sell:0,total:0},\"ETHUSDT\":{buy:0,sell:0,total:0},\"BNBUSDT\":{buy:0,sell:0,total:0},\"SOLUSDT\":{buy:0,sell:0,total:0},\"BCHUSDT\":{buy:0,sell:0,total:0}};\nlet currentLiveCVD=0;\nconst TENDENCIA_TOP10=[\"BTCUSDT\",\"ETHUSDT\",\"SOLUSDT\",\"BNBUSDT\",\"XRPUSDT\",\"ADAUSDT\",\"LINKUSDT\",\"BCHUSDT\",\"HYPEUSDT\",\"HBARUSDT\"];\nconst TENDENCIA_MEMES=[\"PEPEUSDT\",\"WIFUSDT\",\"BONKUSDT\",\"FLOKIUSDT\",\"PENGUUSDT\",\"FARTCOINUSDT\"];\nconst TENDENCIA_TECH=[\"RNDRUSDT\",\"FETUSDT\",\"INJUSDT\",\"ARBUSDT\",\"OPUSDT\",\"NEARUSDT\"];\nconst GLOBAL_TOP50=[...TENDENCIA_TOP10,...TENDENCIA_MEMES,...TENDENCIA_TECH,\"LTCUSDT\",\"UNIUSDT\",\"ETCUSDT\",\"XLMUSDT\",\"SUIUSDT\"];\nwindow.ASSET_GROUPS={'CRYPTO':GLOBAL_TOP50,'FOREX':['EUR\/USD','GBP\/USD','USD\/JPY','USD\/CHF','AUD\/USD','USD\/CAD','NZD\/USD','EUR\/GBP','EUR\/JPY','GBP\/JPY'],'FUNDS':['GLD','SLV','USO','UNG','DBA','DBC','PPLT','PALL','CORN','WEAT'],'TENDENCIA_TOP10':TENDENCIA_TOP10,'TENDENCIA_MEMES':TENDENCIA_MEMES,'TENDENCIA_TECH':TENDENCIA_TECH,'GLOBAL':GLOBAL_TOP50,'ENFOCADO':[],'CUSTOM':[],'TOP5_ORDERFLOW':FOOTPRINT_COINS};\nfunction getAdxThreshold(sym){const m={'PEPEUSDT':35,'SHIBUSDT':32,'LUNCUSDT':35,'DOGEUSDT':30,'SOLUSDT':30,'FLOKIUSDT':35,'BONKUSDT':35,'WLDUSDT':32,'BTCUSDT':25,'ETHUSDT':25,'BCHUSDT':28,'INJUSDT':26,'RNDRUSDT':26,'OPUSDT':25,'ARBUSDT':25,'FTMUSDT':28,'AVAXUSDT':26,'LINKUSDT':25,'GALAUSDT':28,'APTUSDT':26,'SUIUSDT':26,'LDOUSDT':25,'CFXUSDT':28,'RUNEUSDT':26,'YFIUSDT':28,'SNXUSDT':26,'DYDXUSDT':26,'CRVUSDT':26,'CHZUSDT':26,'SANDUSDT':26,'MANAUSDT':26,'AXSUSDT':28,'BNBUSDT':22,'LTCUSDT':20,'ATOMUSDT':20,'NEARUSDT':22,'UNIUSDT':20,'XLMUSDT':20,'QNTUSDT':22,'AAVEUSDT':22,'EGLDUSDT':22,'FLOWUSDT':22,'ALGOUSDT':22,'THETAUSDT':22,'KCSUSDT':20,'NEOUSDT':20,'EOSUSDT':20,'MINAUSDT':22,'ROSEUSDT':22,'CAKEUSDT':20,'KAVAUSDT':20,'GMXUSDT':22,'COMPUSDT':22,'ZILUSDT':22,'KLAYUSDT':20,'ARUSDT':22,'ENJUSDT':22,'1INCHUSDT':22,'IOTAUSDT':20,'DASHUSDT':20,'XMRUSDT':20,'GNOUSDT':20,'BATUSDT':20,'NEXOUSDT':20,'ZRXUSDT':22,'HOTUSDT':22,'XECUSDT':22,'RVNUSDT':22,'CVXUSDT':22,'KSMUSDT':22,'BALUSDT':22,'SUSHIUSDT':22,'OCEANUSDT':22,'SRMUSDT':22,'CELOUSDT':22,'BANDUSDT':22,'ANKRUSDT':22,'RAYUSDT':22,'ONTUSDT':22,'WAXPUSDT':22,'CVCUSDT':22,'STPTUSDT':22,'AUDIOUSDT':22,'JSTUSDT':22,'ADAUSDT':18,'XRPUSDT':18,'TRXUSDT':15,'MATICUSDT':16,'DOTUSDT':18,'VETUSDT':16,'ICPUSDT':18,'FILUSDT':18,'HBARUSDT':18,'MKRUSDT':18,'FTTUSDT':18,'EUR\/USD':15,'GBP\/USD':18,'USD\/JPY':20,'USD\/CHF':15,'AUD\/USD':18,'USD\/CAD':18,'NZD\/USD':18,'EUR\/GBP':15,'EUR\/JPY':18,'GBP\/JPY':20,'GLD':15,'SLV':20,'USO':25,'UNG':25,'DBA':15,'DBC':15,'PPLT':20,'PALL':20,'CORN':20,'WEAT':20,'SPY':15,'QQQ':18};return m[sym]||22;}\nwindow.demoOrders=JSON.parse(localStorage.getItem('bullBotAlgorithmic_orders'))||[];\nlet demoOrders=window.demoOrders;\nlet isBotRunning=false,botConfig={};\nconst TD_API_KEY='df7d19ff87624ab69b6dee0182dd68de';\nlet currentGroup='CRYPTO',scanIndex=0,technicalData={};\nfunction calcEMA(p,per){let k=2\/(per+1),e=[p[0]];for(let i=1;i<p.length;i++)e.push(p[i]*k+e[i-1]*(1-k));return e;}\nfunction calcBollingerBands(c,per){let u=[],m=[],l=[],bw=[],s=[];for(let i=0;i<c.length;i++){if(i<per-1){s.push(c[i]);continue;}let sum=0;for(let j=0;j<per;j++)sum+=c[i-j];s.push(sum\/per);}for(let i=0;i<clength;i++){if(i<per-1){u.push(c[i]);m.push(c[i]);l.push(c[i]);bw.push(0);continue;}let sumSq=0;for(let j=0;j<per;j++)sumSq+=Math.pow(c[i-j]-s[i],2);let stdev=Math.sqrt(sumSq\/per);u.push(s[i]+stdev*2);m.push(s[i]);l.push(s[i]-stdev*2);bw.push(s[i]===0?0:(((s[i]+stdev*2)-(s[i]-stdev*2))\/s[i]*100));}return{upper:u,middle:m,lower:l,bandwidth:bw};}\nfunction calcRSI(p,per){let r=[],gains=0,losses=0;for(let i=1;i<=per;i++){let c=p[i]-p[i-1];if(c>0)gains+=c;else losses-=c;}let avgG=gains\/per,avgL=losses\/per;for(let i=0;i<per;i++)r.push(50);r.push(avgL===0?100:100-(100\/(1+(avgG\/avgL))));for(let i=per+1;i<p.length;i++){let c=p[i]-p[i-1],g=c>0?c:0,l=c<0?-c:0;avgG=(avgG*(per-1)+g)\/per;avgL=(avgL*(per-1)+l)\/per;r.push(avgL===0?100:100-(100\/(1+(avgG\/avgL))));}return r;}\nfunction calcADX(h,l,c,per){if(c.length<per*2)return Array(c.length).fill(0);let tr=[],pDM=[],nDM=[];for(let i=1;i<c.length;i++){tr.push(Math.max(h[i]-l[i],Math.abs(h[i]-c[i-1]),Math.abs(l[i]-c[i-1])));let uM=h[i]-h[i-1],dM=l[i-1]-l[i];if(uM>dM&&uM>0){pDM.push(uM);nDM.push(0);}else if(dM>uM&&dM>0){pDM.push(0);nDM.push(dM);}else{pDM.push(0);nDM.push(0);}}function wS(arr,p){let r=[],s=0;for(let i=0;i<p;i++)s+=arr[i];r.push(s);for(let i=p;i<arr.length;i++)r.push(r[r.length-1]-(r[r.length-1]\/p)+arr[i]);return r;}let sTR=wS(tr,per),sPDM=wS(pDM,per),sNDM=wS(nDM,per),dx=[];for(let i=0;i<sTR.length;i++){let sDI=(100*(sPDM[i]\/sTR[i])||0)+(100*(sNDM[i]\/sTR[i])||0);dx.push(sDI===0?0:100*Math.abs((100*(sPDM[i]\/sTR[i])||0)-(100*(sNDM[i]\/sTR[i])||0))\/sDI);}let dS=0;for(let i=0;i<per;i++)dS+=dx[i];let adx=[dS\/per];for(let i=per;i<dx.length;i++)adx.push((adx[adx.length-1]*(per-1)+dx[i])\/per);return Array(c.length-adx.length).fill(0).concat(adx);}\nfunction getPrecision(price,sym){if(!sym)return 2;if(window.ASSET_GROUPS['FOREX']&&window.ASSET_GROUPS['FOREX'].includes(sym)){if(sym.includes('JPY'))return 3;return 5;}if((window.ASSET_GROUPS['CRYPTO']&&window.ASSET_GROUPS['CRYPTO'].includes(sym))||sym==='PAXGUSDT'){if(price<0.0001)return 8;if(price<1)return 6;if(price<10)return 4;return 2;}return 2;}\nfunction calcMACD(p,f,s,sig){let ef=calcEMA(p,f),es=calcEMA(p,s),m=[],sg=[];for(let i=0;i<p.length;i++)m.push(ef[i]-es[i]);sg=calcEMA(m,sig);return{macd:m,signal:sg};}\nfunction checkUltraFastMode(){const interval=document.getElementById('cw-interval').value;const slider=document.getElementById('leverage-slider');const warnMain=document.getElementById('warning-ultrafast');if(interval==='5s'){warnMain.style.display='block';if(slider.min!=='50'){slider.min='50';slider.max='100';slider.value='100';updateLeverageDisplay(slider.value);}}else{warnMain.style.display='none';if(slider.min==='50'){slider.min='1';slider.max='150';}}}\nwindow.toggleMacrocerebro=function(){currentMacrocerebro=parseInt(document.getElementById('bot-macrocerebro').value);const cvdPanel=document.getElementById('cvd-panel');const cvdChartWrapper=document.getElementById('cvd-chart-wrapper');const rowEntry=document.getElementById('row-entry-mode');const rowRisk=document.getElementById('row-risk-profile');const scanModeSelect=document.getElementById('bot-scan-mode');document.getElementById('bot-entry-mode').value='SNIPER';document.getElementById('bot-risk-profile').value='INSTITUTIONAL';if(currentMacrocerebro===2){cvdPanel.style.display='block';if(cvdChartWrapper)cvdChartWrapper.style.display='block';rowEntry.style.display='flex';rowRisk.style.display='flex';scanModeSelect.innerHTML=`<option value=\"TOP5_ORDERFLOW\">\ud83d\udd25 TOP 5 ORDER FLOW (BTC, ETH, BNB, SOL, BCH)<\/option><option value=\"ENFOCADO\">\ud83c\udfaf ENFOCADO (Solo en pantalla)<\/option><option value=\"CUSTOM\">\u2699\ufe0f PERSONALIZADO (M\u00e1x 4)<\/option>`;document.getElementById('cw-asset-group').value='CRYPTO';changeAssetGroup(true);customScanList=customScanList.filter(sym=>FOOTPRINT_COINS.includes(sym));window.renderCustomTags();alert(\"\u26a0\ufe0f CEREBRO 2 ACTIVO: Escaneo restringido a los 5 titanes (BTC, ETH, BNB, SOL, BCH). Indicadores cl\u00e1sicos seguir\u00e1n activos para Visi\u00f3n 360\u00ba de confluencia.\\n\\nFiltros reseteados a SNIPER e INSTITUCIONAL por seguridad.\");FOOTPRINT_COINS.forEach(sym=>{cvdData[sym]=0;cvdVolData[sym]={buy:0,sell:0,total:0};if(!footprintSockets[sym]){try{let ws=new WebSocket(`wss:\/\/stream.binance.com:9443\/ws\/${sym.toLowerCase()}@aggTrade`);ws.onmessage=e=>{let d=JSON.parse(e.data);let qty=parseFloat(d.q);cvdVolData[sym].total+=qty;if(!d.m){cvdData[sym]+=qty;cvdVolData[sym].buy+=qty;}else{cvdData[sym]-=qty;cvdVolData[sym].sell+=qty;}if(sym===currentPriceSymbol){let cVal=cvdData[sym];currentLiveCVD=cVal;document.getElementById('cvd-val-total').innerText=cvdVolData[sym].total.toFixed(2);document.getElementById('cvd-val-buy').innerText=cvdVolData[sym].buy.toFixed(2);document.getElementById('cvd-val-sell').innerText=cvdVolData[sym].sell.toFixed(2);let cvdDisplay=document.getElementById('val-cvd');if(cVal>0)cvdDisplay.innerHTML=`<span style=\"color:#4caf50\">+${cVal.toFixed(2)} BTC \ud83d\udfe2<\/span>`;else if(cVal<0)cvdDisplay.innerHTML=`<span style=\"color:#ff5252\">${cVal.toFixed(2)} BTC \ud83d\udd34<\/span>`;else cvdDisplay.innerHTML=`0.00 BTC \u26aa`;}};footprintSockets[sym]=ws;}catch(e){}}});}else{cvdPanel.style.display='none';if(cvdChartWrapper)cvdChartWrapper.style.display='none';rowEntry.style.display='flex';rowRisk.style.display='flex';scanModeSelect.innerHTML=`<optgroup label=\"\ud83d\udd25 NARRATIVA TENDENCIA\"><option value=\"TENDENCIA_TOP10\">\ud83d\udc51 Top 10 Blue Chips<\/option><option value=\"TENDENCIA_MEMES\">\ud83e\udd21 Memecoins Vol\u00e1tiles<\/option><option value=\"TENDENCIA_TECH\">\ud83e\udde0 IA & Tecnol\u00f3gicas<\/option><\/optgroup><optgroup label=\"\ud83c\udf0d MERCADO GLOBAL\"><option value=\"GLOBAL\">Top 50 Alta Liquidez<\/option><\/optgroup><optgroup label=\"\ud83c\udfaf ESPEC\u00cdFICO\"><option value=\"ENFOCADO\">Enfocado (Solo en pantalla)<\/option><option value=\"CUSTOM\">Personalizado (Max 7)<\/option><\/optgroup>`;Object.values(footprintSockets).forEach(ws=>{if(ws)ws.close();});footprintSockets={};changeAssetGroup(true);}toggleScanMode();updateApp();};\nfunction startLiveTicker(s){if(priceSocket)priceSocket.close();if((window.ASSET_GROUPS['CRYPTO']&&window.ASSET_GROUPS['CRYPTO'].includes(s))||s==='PAXGUSDT'){try{priceSocket=new WebSocket(`wss:\/\/stream.binance.com:9443\/ws\/${s.toLowerCase()}@trade`);priceSocket.onmessage=e=>{currentPrice=parseFloat(JSON.parse(e.data).p);currentPriceSymbol=s;let d=getPrecision(currentPrice,s);document.getElementById('cw-display-price').innerText=`$${currentPrice.toFixed(d)}`;calculateResults();};}catch(e){}}else{try{priceSocket=new WebSocket(`wss:\/\/ws.twelvedata.com\/v1\/quotes?apikey=${TD_API_KEY}`);priceSocket.onopen=()=>{priceSocket.send(JSON.stringify({\"action\":\"subscribe\",\"params\":{\"symbols\":s}}));};priceSocket.onmessage=e=>{const data=JSON.parse(e.data);if(data.event==='price'){currentPrice=parseFloat(data.price);currentPriceSymbol=s;document.getElementById('cw-display-price').innerText=`$${currentPrice.toFixed(getPrecision(currentPrice,s))}`;calculateResults();}};}catch(e){}}}\nconst watermarkPlugin={id:'watermark',beforeDraw:(chart)=>{const ctx=chart.ctx;ctx.save();ctx.globalCompositeOperation='destination-over';ctx.fillStyle='rgba(255, 255, 255, 0.04)';ctx.font='bold 30px Arial';ctx.textAlign='center';ctx.textBaseline='middle';ctx.fillText('BULL TRADING BOT',chart.width\/2,chart.height\/2);ctx.restore();}};\nfunction renderChart(l,d,ef,es,fl,sl,vol,rsiData,opens,bbUpper,bbLower,regime){const ctx=document.getElementById('cryptoChart').getContext('2d');if(myChart)myChart.destroy();const labels=l.map(ts=>{const dt=new Date(ts);return dt.getDate()+'\/'+(dt.getMonth()+1)+' '+dt.getHours()+':'+dt.getMinutes();});const vC=d.map((close,i)=>close>=opens[i]?'rgba(76, 175, 80, 0.4)':'rgba(244, 67, 54, 0.4)');let showEmas=manualToggleEmas!==null?manualToggleEmas:(regime==='TREND');let showBb=manualToggleBb!==null?manualToggleBb:(regime!=='TREND');let btnEma=document.getElementById('toggle-emas');let btnBb=document.getElementById('toggle-bb');if(btnEma)btnEma.classList.toggle('active',showEmas);if(btnBb)btnBb.classList.toggle('active',showBb);let dSets=[{label:'Precio',data:d,borderColor:'#fff',borderWidth:2,pointRadius:0,pointHoverRadius:4,tension:0.1,order:3,yAxisID:'y'}];if(showBb&&bbUpper&&bbLower){dSets.push({label:'BB Superior',data:bbUpper,borderColor:'rgba(162, 155, 254, 0.4)',borderWidth:1,pointRadius:0,borderDash:[4,4],order:1,yAxisID:'y'});dSets.push({label:'BB Inferior',data:bbLower,borderColor:'rgba(162, 155, 254, 0.4)',borderWidth:1,pointRadius:0,borderDash:[4,4],order:2,yAxisID:'y',fill:'-1',backgroundColor:'rgba(162, 155, 254, 0.05)'});}if(showEmas){dSets.push({label:fl,data:ef,borderColor:'#00bcd4',borderWidth:1.5,pointRadius:0,borderDash:[5,5],order:4,yAxisID:'y'});dSets.push({label:sl,data:es,borderColor:'#ff5252',borderWidth:1.5,pointRadius:0,order:5,yAxisID:'y'});}dSets.push({label:'Volumen',data:vol,type:'bar',backgroundColor:vC,order:6,yAxisID:'y1'});myChart=new Chart(ctx,{type:'line',data:{labels:labels,datasets:dSets},options:{responsive:true,maintainAspectRatio:false,interaction:{mode:'index',intersect:false},plugins:{legend:{labels:{color:'#aaa',font:{size:10}}},tooltip:{backgroundColor:'rgba(20,20,30,0.9)',titleColor:'#fff',bodyColor:'#ccc',borderColor:'#444',borderWidth:1,padding:10,displayColors:true,callbacks:{title:c=>c[0].label}}},scales:{x:{display:false},y:{grid:{color:'#333'},ticks:{color:'#666'},position:'right'},y1:{position:'left',display:false,min:0,max:Math.max(...vol)*4}}},plugins:[watermarkPlugin]});const ctxRsi=document.getElementById('rsiChart').getContext('2d');if(rsiChartInstance)rsiChartInstance.destroy();rsiChartInstance=new Chart(ctxRsi,{type:'line',data:{labels:labels,datasets:[{label:'RSI (14)',data:rsiData,borderColor:'#a29bfe',borderWidth:1.5,pointRadius:0,pointHoverRadius:3,tension:0.1,fill:true,backgroundColor:'rgba(162, 155, 254, 0.05)'}]},options:{responsive:true,maintainAspectRatio:false,interaction:{mode:'index',intersect:false},plugins:{legend:{display:false},tooltip:{callbacks:{title:function(c){return c[0].label;}}}},scales:{x:{display:false},y:{min:0,max:100,position:'right',ticks:{color:'#666',stepSize:30,callback:function(v){if(v===30||v===70||v===50)return v;return '';}},grid:{color:(c)=>[30,70].includes(c.tick.value)?'rgba(255,255,255,0.2)':'#333',drawBorder:false}}}},plugins:[{id:'rsiZones',beforeDraw:(c)=>{const{ctx,chartArea:{top,bottom,left,right},scales:{y}}=c;const y70=y.getPixelForValue(70);const y30=y.getPixelForValue(30);ctx.save();ctx.fillStyle='rgba(162, 155, 254, 0.1)';ctx.fillRect(left,y70,right-left,y30-y70);ctx.restore();}}]});}\nfunction toggleIndicator(type){if(type==='emas')manualToggleEmas=!(manualToggleEmas!==null?manualToggleEmas:(lastMacroRegime==='TREND'));else if(type==='bb')manualToggleBb=!(manualToggleBb!==null?manualToggleBb:(lastMacroRegime!=='TREND'));updateApp(true);}\nfunction changeAssetGroup(preventUpdate=false){const groupSelect=document.getElementById('cw-asset-group');if(currentMacrocerebro===2&&groupSelect.value!=='CRYPTO'){alert(\"\u26a0\ufe0f El Order Flow es exclusivo para Criptomonedas.\");groupSelect.value='CRYPTO';}currentGroup=groupSelect.value;const dl=document.getElementById('crypto-list');dl.innerHTML='';let assets=window.ASSET_GROUPS[currentGroup];if(currentMacrocerebro===2)assets=FOOTPRINT_COINS;assets.forEach(asset=>{const opt=document.createElement('option');opt.value=asset;dl.appendChild(opt);});const coinInput=document.getElementById('cw-coin');if(!assets.includes(coinInput.value.toUpperCase())){if(currentGroup==='CRYPTO')coinInput.value='BTCUSDT';else if(currentGroup==='FOREX')coinInput.value='EUR\/USD';else coinInput.value='GLD';}if(!preventUpdate)updateApp();}\nfunction toggleScanMode(){const mode=document.getElementById('bot-scan-mode').value;const customContainer=document.getElementById('custom-scan-container');const customInput=document.getElementById('custom-scan-input');const dl=document.getElementById('crypto-list');dl.innerHTML='';let listMode=(mode==='CUSTOM'||mode==='ENFOCADO')?currentGroup:mode;let groupArray=window.ASSET_GROUPS[listMode]||window.ASSET_GROUPS['GLOBAL'];if(currentMacrocerebro===2&&mode==='CUSTOM'){groupArray=FOOTPRINT_COINS;customInput.placeholder=\"Escribe y selecciona... (Max 4)\";}else if(currentMacrocerebro===1&&mode==='CUSTOM'){customInput.placeholder=\"Escribe y selecciona... (Max 7)\";}groupArray.forEach(asset=>{const opt=document.createElement('option');opt.value=asset;dl.appendChild(opt);});if(mode==='CUSTOM'){customContainer.style.display='block';if(customInput)customInput.disabled=false;}else{customContainer.style.display='none';customScanList=[];window.renderCustomTags();if(customInput){customInput.value='';customInput.disabled=true;}}}\nasync function updateApp(silent=false){\n    checkUltraFastMode();const symbolInput=document.getElementById('cw-coin').value.toUpperCase().trim();let symbol=symbolInput;if(!window.ASSET_GROUPS[currentGroup].includes(symbol))symbol=window.ASSET_GROUPS[currentGroup][0];const interval=document.getElementById('cw-interval').value;const isTwelveData=!(window.ASSET_GROUPS['CRYPTO']&&window.ASSET_GROUPS['CRYPTO'].includes(symbol))&&symbol!=='PAXGUSDT';if(silent&&isTwelveData){if(!window.lastTdUpdate)window.lastTdUpdate=0;if(Date.now()-window.lastTdUpdate<30000)return;window.lastTdUpdate=Date.now();}let macroInterval='1h';if(interval==='1m'||interval==='5s'||interval==='5m')macroInterval='15m';else if(interval==='15m')macroInterval='1h';else macroInterval='4h';let macroRegime=\"TREND\";let inerciaAlta=false;if(!window.macroCache)window.macroCache={};if(!window.macroCache[symbol]||Date.now()-window.macroCache[symbol].ts>300000||window.macroCache[symbol].interval!==macroInterval){try{let mCloses=[],mHighs=[],mLows=[];if(!isTwelveData){const resM=await fetch(`https:\/\/api.binance.com\/api\/v3\/klines?symbol=${symbol}&interval=${macroInterval}&limit=100`);const dataM=await resM.json();mHighs=dataM.map(d=>parseFloat(d[2]));mLows=dataM.map(d=>parseFloat(d[3]));mCloses=dataM.map(d=>parseFloat(d[4]));}else{const url=`https:\/\/api.twelvedata.com\/time_series?symbol=${encodeURIComponent(symbol)}&interval=1h&apikey=${TD_API_KEY}&outputsize=100`;const resM=await fetch(url);const dataM=await resM.json();if(!dataM.status||dataM.status!=='error'){const valM=dataM.values.reverse();mHighs=valM.map(v=>parseFloat(v.high));mLows=valM.map(v=>parseFloat(v.low));mCloses=valM.map(v=>parseFloat(v.close));}}if(mCloses.length>50){const mAdx=calcADX(mHighs,mLows,mCloses,14);const mBb=calcBollingerBands(mCloses,20);let currentMAdx=mAdx[mAdx.length-1];let prevMAdx=mAdx[mAdx.length-2];let currentMBw=mBb.bandwidth[mBb.bandwidth.length-1];inerciaAlta=(currentMAdx>20&&currentMAdx>prevMAdx);let isMacroSqueeze=currentMBw<=3.5;if(currentMAdx>25)macroRegime=\"TREND\";else if(isMacroSqueeze)macroRegime=\"SQUEEZE\";else macroRegime=\"RANGE\";window.macroCache[symbol]={ts:Date.now(),regime:macroRegime,inercia:inerciaAlta,interval:macroInterval};}}catch(e){console.log(\"Error Macro Fetch:\",e.message);}}else{macroRegime=window.macroCache[symbol].regime;inerciaAlta=window.macroCache[symbol].inercia;}if(macroRegime!==lastMacroRegime){manualToggleEmas=null;manualToggleBb=null;lastMacroRegime=macroRegime;}try{let closes=[],times=[],opens=[],highs=[],lows=[],volumes=[];const limit=500;const fetchInterval=interval==='5s'?'1m':interval;if(!isTwelveData){const res=await fetch(`https:\/\/api.binance.com\/api\/v3\/klines?symbol=${symbol}&interval=${fetchInterval}&limit=${limit}`);const data=await res.json();times=data.map(d=>d[0]);opens=data.map(d=>parseFloat(d[1]));highs=data.map(d=>parseFloat(d[2]));lows=data.map(d=>parseFloat(d[3]));closes=data.map(d=>parseFloat(d[4]));volumes=data.map(d=>parseFloat(d[5]));}else{let tdInterval='1h';if(fetchInterval==='1m')tdInterval='1min';else if(fetchInterval==='5m')tdInterval='5min';else if(fetchInterval==='15m')tdInterval='15min';else if(fetchInterval==='1h')tdInterval='1h';else if(fetchInterval==='4h')tdInterval='4h';const url=`https:\/\/api.twelvedata.com\/time_series?symbol=${encodeURIComponent(symbol)}&interval=${tdInterval}&apikey=${TD_API_KEY}&outputsize=${limit}`;const res=await fetch(url);const data=await res.json();if(data.status==='error'||!data.values)return;const values=data.values.reverse();times=values.map(v=>new Date(v.datetime).getTime());opens=values.map(v=>parseFloat(v.open));highs=values.map(v=>parseFloat(v.high));lows=values.map(v=>parseFloat(v.low));closes=values.map(v=>parseFloat(v.close));volumes=values.map(v=>parseFloat(v.volume)||0);}if(document.getElementById('cw-coin').value.toUpperCase()!==symbolInput&&symbolInput!=='')return;if(closes.length===0)return;currentPrice=closes[closes.length-1];currentPriceSymbol=symbol;let dPrecision=getPrecision(currentPrice,symbol);let fastEma,slowEma,fastLbl,slowLbl;const ema9=calcEMA(closes,9),ema13=calcEMA(closes,13),ema21=calcEMA(closes,21),ema34=calcEMA(closes,34),ema50=calcEMA(closes,50),ema55=calcEMA(closes,55);const ema100=calcEMA(closes,100),ema200=calcEMA(closes,200);if(interval==='1m'||interval==='5s'){fastEma=ema21;slowEma=ema55;fastLbl=\"EMA 21\";slowLbl=\"EMA 55\";}else if(interval==='5m'){fastEma=ema13;slowEma=ema34;fastLbl=\"EMA 13\";slowLbl=\"EMA 34\";}else{fastEma=ema9;slowEma=ema21;fastLbl=\"EMA 9\";slowLbl=\"EMA 21\";}const rsi=calcRSI(closes,14);const adx=calcADX(highs,lows,closes,14);const macdData=calcMACD(closes,12,26,9);const bbData=calcBollingerBands(closes,20);let cA=adx[adx.length-1];let cP=currentPrice;let cR=rsi[rsi.length-1];document.getElementById('lbl-ema-fast').innerText=fastLbl;document.getElementById('val-ema-fast').innerText=fastEma[fastEma.length-1].toFixed(dPrecision);document.getElementById('lbl-ema-slow').innerText=slowLbl;document.getElementById('val-ema-slow').innerText=slowEma[slowEma.length-1].toFixed(dPrecision);const conv=document.getElementById('val-conv');let cD=fastEma[fastEma.length-1]>slowEma[slowEma.length-1]?'LONG':'SHORT';if(cD==='LONG'){conv.innerText=\"ALCISTA\";conv.style.color=\"#4caf50\";}else{conv.innerText=\"BAJISTA\";conv.style.color=\"#ff5252\";}let cSC=0;for(let i=closes.length-2;i>=0;i--){let pD=fastEma[i]>slowEma[i]?'LONG':'SHORT';if(pD!==cD)break;cSC++;}document.getElementById('val-candles').innerText=cSC;document.getElementById('val-rsi').innerText=cR.toFixed(1);document.getElementById('val-macd').innerText=macdData.macd[macdData.macd.length-1].toFixed(4);const riskProfile=document.getElementById('bot-risk-profile').value;let rA=getAdxThreshold(symbol);let adxFlame=\"\ud83d\udca8\",adxColor=\"#888\",adxTrend=cA>adx[adx.length-2]?\"\u2197\ufe0f\":\"\u2198\ufe0f\";if(cA>40){adxFlame=\"\ud83d\udd25\ud83d\udd25\ud83d\udd25\";adxColor=\"#ffeb3b\";}else if(cA>25){adxFlame=\"\ud83d\udd25\ud83d\udd25\";adxColor=\"#ff9800\";}else if(cA>20){adxFlame=\"\ud83d\udd25\";adxColor=\"#4caf50\";}document.getElementById('val-adx').innerHTML=`<span style=\"color:${adxColor}; font-weight:bold;\">${cA.toFixed(1)} ${adxFlame} ${adxTrend}<\/span>`;let dist100=(Math.abs(cP-ema100[ema100.length-1])\/cP)*100;let dist200=(Math.abs(cP-ema200[ema200.length-1])\/cP)*100;let gapAuto=(interval==='1m'||interval==='5s')?0.2:(interval==='5m'?0.35:0.65);let oxLong=(cP>ema100[ema100.length-1]||dist100>gapAuto)&&(cP>ema200[ema200.length-1]||dist200>gapAuto);let oxShort=(cP<ema100[ema100.length-1]||dist100>gapAuto)&&(cP<ema200[ema200.length-1]||dist200>gapAuto);let oxActive=cD==='LONG'?oxLong:oxShort;let oxColor=oxActive?\"#4caf50\":\"#ff5252\";let oxWidth=Math.min(100,(dist200\/gapAuto)*50);document.getElementById('val-oxygen-txt').innerHTML=`<span style=\"color:${oxColor}\">${dist200.toFixed(2)}%<\/span>`;document.getElementById('bar-oxygen').style.width=`${oxWidth}%`;document.getElementById('bar-oxygen').style.background=oxColor;let trendAbs=cSC;let cicloVida=trendAbs<15?\"\ud83d\udc76 NACIENTE\":trendAbs<40?\"\ud83d\ude80 DESARROLLADO\":trendAbs<80?\"\ud83d\udc74 SENIOR\":\"\u26a0\ufe0f AGOTADO\";const aB=document.getElementById('analysis-box');const em=document.getElementById('bot-entry-mode').value;let sT=\"\",bC=\"status-neutral\",m=\"\";\n    \n    if(currentMacrocerebro===1){\n        let motorBloqueado=false;let requiresOxygen=true;\n        if(riskProfile==='LIGHT'){requiresOxygen=false;}else{motorBloqueado=macroRegime===\"SQUEEZE\"||!inerciaAlta||!oxActive;}\n        if(motorBloqueado){\n            sT=`\ud83d\udd12 BLOQUEO SQUEEZE \/ SIN OX\u00cdGENO`;bC=\"status-red\";\n            m=`El entorno macro (${macroInterval}) est\u00e1 fuertemente comprimido (Squeeze), no tiene inercia, o el precio est\u00e1 bloqueado contra un soporte mayor (Sin Ox\u00edgeno). <b>Cualquier se\u00f1al local ser\u00e1 ignorada para proteger el capital institucional.<\/b> Esperando ruptura.`;\n        }else if(macroRegime===\"TREND\"){\n            let oxygenCheck=requiresOxygen?oxActive:true;\n            if(em==='SNIPER'){\n                if(cSC<=2){\n                    if(cA>rA&&cA>adx[adx.length-2]&&oxygenCheck){\n                        sT=`\ud83d\udfe2 SE\u00d1AL SNIPER EXACTA`;bC=\"status-green\";\n                        m=`Se ha detectado un cruce institucional fresco en las \u00faltimas ${cSC} velas. La fuerza de la tendencia es s\u00f3lida y el espacio de ca\u00edda\/subida (Ox\u00edgeno) est\u00e1 despejado.`;\n                    }else{\n                        sT=`\ud83d\udfe1 CRUCE SIN CONFIRMACI\u00d3N`;bC=\"status-yellow\";\n                        m=`Se detect\u00f3 un cruce en las \u00faltimas ${cSC} velas, pero el volumen no acompa\u00f1a (Falta ADX) o el precio est\u00e1 bloqueado por un soporte\/resistencia (Sin Ox\u00edgeno).`;\n                    }\n                }else{\n                    sT=`\ud83d\udd34 TENDENCIA VIEJA PARA SNIPER`;bC=\"status-red\";\n                    m=`Han pasado ${cSC} velas desde el inicio del impulso. El modo Sniper solo opera nacimientos de tendencia (m\u00e1ximo 2 velas). Cambia a modo \"Relaxed\" si deseas evaluar la continuaci\u00f3n, de lo contrario hay alto riesgo de FOMO.`;\n                }\n            }else{\n                if(cSC<=40){\n                    if(cA>rA&&oxygenCheck){\n                        sT=`\ud83d\udfe2 TENDENCIA MADURA EN CURSO`;bC=\"status-green\";\n                        m=`El movimiento lleva ${cSC} velas de desarrollo. El volumen institucional sigue respaldando el movimiento y el ADX supera el umbral requerido. Operando retrocesos (Pullbacks).`;\n                    }else{\n                        sT=`\ud83d\udfe1 CONSOLIDACI\u00d3N LOCAL`;bC=\"status-yellow\";\n                        m=`El impulso actual se ha detenido o ha perdido fuerza moment\u00e1neamente. Esperando que el ADX recupere el nivel de ${rA} o confirme un retroceso a la EMA r\u00e1pida para entrar.`;\n                    }\n                }else{\n                    sT=`\ud83d\udd34 TENDENCIA VIEJA \/ EXPIRADA`;bC=\"status-red\";\n                    m=`El movimiento lleva ${cSC} velas, superando el l\u00edmite seguro de madurez. Existe un alt\u00edsimo riesgo de distribuci\u00f3n o reversi\u00f3n inminente. Se recomienda esperar un nuevo ciclo o cruce.`;\n                }\n            }\n        }else if(macroRegime===\"RANGE\"){\n            sT=`\ud83d\udfe1 NAVEGANDO RANGO MACRO`;bC=\"status-yellow\";\n            m=`El mercado est\u00e1 oscilando lateralmente sin direcci\u00f3n clara. El motor est\u00e1 utilizando las Bandas de Bollinger y los extremos del RSI para cazar rebotes de alta probabilidad.`;\n        }else if(macroRegime===\"BREAKOUT\"){\n            sT=`\ud83d\udfe1 ESPERANDO EXPLOSI\u00d3N`;bC=\"status-neutral\";\n            m=`Bandas de Bollinger cr\u00edticamente comprimidas. El mercado es una olla a presi\u00f3n. Mantente alerta a la ruptura inminente con inyecci\u00f3n de volumen.`;\n        }else if(macroRegime===\"SQUEEZE\"){\n            sT=`\u26a0\ufe0f COMPRESI\u00d3N EXTREMA (SQUEEZE)`;bC=\"status-yellow\";\n            m=`El mercado se encuentra fuertemente comprimido sin direcci\u00f3n clara. Al estar en MODO LIGHT (Filtro institucional desactivado), el bot seguir\u00e1 escaneando oportunidades locales en temporalidades menores, pero existe un alt\u00edsimo riesgo de falsos rompimientos (\"Whipsaws\"). Operando bajo tu propio riesgo.`;\n        }\n        let borderColor=bC==='status-green'?'#4caf50':(bC==='status-red'?'#ff5252':'#ffb300');m+=`<div style=\"margin-top:12px;background:rgba(0,0,0,0.3);padding:10px;border-radius:6px;font-size:0.9em;border-left:3px solid ${borderColor};\"><div style=\"display:flex;justify-content:space-between;margin-bottom:6px;border-bottom:1px solid #333;padding-bottom:4px;\"><span style=\"color:#aaa;\">Fuerza ADX:<\/span> <span>${cA.toFixed(1)} ${adxFlame} ${adxTrend} <span style=\"color:#666;font-size:0.85em;\">(M\u00edn: ${rA})<\/span><\/span><\/div><div style=\"display:flex;justify-content:space-between;margin-bottom:6px;border-bottom:1px solid #333;padding-bottom:4px;\"><span style=\"color:#aaa;\">Velas desde Cruce:<\/span> <span style=\"color:${cSC>40?'#ff5252':'#fff'};font-weight:bold;\">${cSC}<\/span><\/div><div style=\"display:flex;justify-content:space-between;\"><span style=\"color:#aaa;\">Ox\u00edgeno (Dist. EMA):<\/span> <span style=\"font-weight:bold;color:${oxColor}\">${dist200.toFixed(2)}%<\/span><\/div><\/div>`;if(riskProfile==='LIGHT'){m+=`<div style=\"margin-top:8px;color:#ff9800;font-size:0.85em;text-align:center;padding:5px;border:1px dashed #ff9800;background:rgba(255,152,0,0.1);border-radius:4px;\">\u26a0\ufe0f <b>MODO LIGHT:<\/b> Filtros institucionales desactivados.<\/div>`;}aB.className=`cw-analysis-box ${bC}`;let riskBadge=riskProfile==='INSTITUTIONAL'?'\ud83d\udee1\ufe0f INST':'\ud83d\udd25 LIGHT';let regimeBadge=`<span style=\"background:rgba(108,92,231,0.2);color:#a29bfe;padding:2px 6px;border-radius:4px;font-size:0.7em;border:1px solid #6c5ce7;margin-left:10px;\">\u2699\ufe0f MOTOR: ${macroRegime} | ${riskBadge}<\/span>`;aB.innerHTML=`<div class=\"cw-analysis-title\">\ud83d\udca1 AN\u00c1LISIS DEL MOTOR AI: ${regimeBadge}<\/div><div class=\"cw-analysis-text\"><strong>${sT}<\/strong><br><br>${m}<\/div>`;\n    }else if(currentMacrocerebro===2){\n        let activeCVD=cvdData[symbol]||0;\n        if(activeCVD>20){\n            sT=`\ud83d\udfe2 DESEQUILIBRIO COMPRADOR (IMBALANCE)`;bC=\"status-green\";\n            m=`Agresi\u00f3n masiva en el Ask (Oferta). El Delta (CVD) est\u00e1 en <span style=\"color:#4caf50; font-weight:bold;\">+${activeCVD.toFixed(2)} \ud83d\udfe2<\/span>. Las ballenas est\u00e1n inyectando liquidez direccional. Buscando entrada LONG.`;\n        }else if(activeCVD<-20){\n            sT=`\ud83d\udd34 DESEQUILIBRIO VENDEDOR (IMBALANCE)`;bC=\"status-red\";\n            m=`Agresi\u00f3n masiva en el Bid (Demanda). El Delta (CVD) est\u00e1 en <span style=\"color:#ff5252; font-weight:bold;\">${activeCVD.toFixed(2)} \ud83d\udd34<\/span>. Presi\u00f3n institucional de venta detectada. Buscando entrada SHORT.`;\n        }else if((cD==='LONG'&&activeCVD<-5)||(cD==='SHORT'&&activeCVD>5)){\n            sT=`\u26a0\ufe0f TRAMPA DE LIQUIDEZ (ABSORCI\u00d3N)`;bC=\"status-yellow\";\n            m=`Divergencia cr\u00edtica: El precio t\u00e9cnico va en contra del Order Flow. Delta CVD: <span style=\"color:${activeCVD>0?'#4caf50':'#ff5252'}; font-weight:bold;\">${activeCVD.toFixed(2)}<\/span>. Los institucionales est\u00e1n absorbiendo la liquidez mediante \u00f3rdenes pasivas. Peligro de Fakeout.`;\n        }else{\n            sT=`\u26aa ZONA DE EQUILIBRIO (CHOP)`;bC=\"status-neutral\";\n            m=`Guerra de trincheras. El volumen de compras y ventas est\u00e1 equilibrado (CVD: ${activeCVD.toFixed(2)}). No hay dominancia institucional clara en el Order Flow en este momento. Esperando ruptura de liquidez.`;\n        }\n        m+=`<br><span style=\"color:#ffc107; font-size:0.85em; margin-top:8px; display:block; padding: 5px; border: 1px dashed #ffc107; border-radius: 4px; background: rgba(255,193,7,0.1);\">\ud83d\udd25 <b>VISI\u00d3N 360\u00ba:<\/b> Order Flow guiando gatillos. Indicadores cl\u00e1sicos solo como pre-armado de confluencia.<\/span>`;aB.className=`cw-analysis-box ${bC}`;let regimeBadge=`<span style=\"background:rgba(255, 193, 7, 0.2);color:#ffc107;padding:2px 6px;border-radius:4px;font-size:0.7em;border:1px solid #ffc107;margin-left:10px;\">\ud83e\udde0 MOTOR: FOOTPRINT \/ CVD<\/span>`;aB.innerHTML=`<div class=\"cw-analysis-title\">\ud83d\udca1 AN\u00c1LISIS DEL MOTOR AI: ${regimeBadge}<\/div><div class=\"cw-analysis-text\"><strong>${sT}<\/strong><br><br>${m}<\/div>`;let cvdDisplay=document.getElementById('val-cvd');if(activeCVD>0)cvdDisplay.innerHTML=`<span style=\"color:#4caf50\">+${activeCVD.toFixed(2)} BTC \ud83d\udfe2<\/span>`;else if(activeCVD<0)cvdDisplay.innerHTML=`<span style=\"color:#ff5252\">${activeCVD.toFixed(2)} BTC \ud83d\udd34<\/span>`;else cvdDisplay.innerHTML=`0.00 BTC \u26aa`;\n    }\n    \n    const trendEl=document.getElementById('cw-display-trend');const priceEl=document.getElementById('cw-display-price');if(cA<20){priceEl.style.color=\"#ffffff\";trendEl.innerText=\"NEUTRAL (SIN Fuerza)\";trendEl.style.color=\"#ffffff\";trendEl.className='cw-trend trend-neutral';}else if(fastEma[fastEma.length-1]>slowEma[slowEma.length-1]){priceEl.style.color=\"#4caf50\";trendEl.innerText=(cR>55)?\"ALCISTA (CONFIRMADO)\":\"ALCISTA (ESPERANDO)\";trendEl.style.color=(cR>55)?\"#4caf50\":\"#a5d6a7\";trendEl.className='cw-trend trend-bull';}else if(fastEma[fastEma.length-1]<slowEma[slowEma.length-1]){priceEl.style.color=\"#ff5252\";trendEl.innerText=(cR<45)?\"BAJISTA (CONFIRMADO)\":\"BAJISTA (ESPERANDO)\";trendEl.style.color=(cR<45)?\"#ff5252\":\"#ef9a9a\";trendEl.className='cw-trend trend-bear';}let tgTitle=document.getElementById('title-gauge');let mtfTitle=document.getElementById('title-mtf');if(tgTitle)tgTitle.innerHTML=`\ud83c\udfaf MIRA TELESC\u00d3PICA <span style=\"color:#a29bfe;font-size:0.8em;text-transform:none;\">(${macroRegime})<\/span>`;if(mtfTitle)mtfTitle.innerHTML=`\ud83c\udf9b\ufe0f Matriz Multi-Temporal <span style=\"color:#a29bfe;font-size:0.8em;text-transform:none;\">(${macroRegime})<\/span>`;document.getElementById('cw-display-price').innerText=`$${currentPrice.toFixed(dPrecision)}`;renderChart(times,closes,fastEma,slowEma,fastLbl,slowLbl,volumes,rsi,opens,bbData.upper,bbData.lower,macroRegime);if(!silent)startLiveTicker(symbol);calculateResults();}catch(e){console.log(\"Error:\",e.message);if(!silent){const aB=document.getElementById('analysis-box');if(aB){aB.className=`cw-analysis-box status-red`;aB.innerHTML=`<div class=\"cw-analysis-title\">\u26a0\ufe0f ERROR INTERNO \/ API<\/div><div class=\"cw-analysis-text\"><span style=\"color:#ff5252\">Detalle: ${e.message}. Reintentando...<\/span><\/div>`;}}}}\nasync function scanMarketOpportunity(){if(!isBotRunning)return;const activeSymbols=new Set(demoOrders.filter(o=>o.status==='OPEN').map(o=>o.symbol));if(activeSymbols.size>=parseFloat(document.getElementById('bot-mac').value)){document.getElementById('scan-status').innerText=`MAC Lleno. Esperando cierres...`;return;}else{document.getElementById('scan-status').innerText=\"\ud83d\udce1 ESCANEANDO MERCADO...\";document.getElementById('scan-status').style.color=\"#4caf50\";}const scanMode=document.getElementById('bot-scan-mode').value;let assetList=window.ASSET_GROUPS[scanMode]||window.ASSET_GROUPS['CRYPTO'];if(scanMode==='ENFOCADO')assetList=[document.getElementById('cw-coin').value.toUpperCase()];else if(scanMode==='CUSTOM')assetList=customScanList.length>0?[...customScanList]:[document.getElementById('cw-coin').value.toUpperCase()];if(assetList.length===0)return;scanIndex=scanIndex%assetList.length;const coinToScan=assetList[scanIndex];scanIndex=(scanIndex+1)%assetList.length;if(currentMacrocerebro===2&&!FOOTPRINT_COINS.includes(coinToScan))return;if(demoOrders.filter(o=>o.symbol===coinToScan&&o.status==='OPEN').length>0)return;const isTwelveData=!(window.ASSET_GROUPS['CRYPTO']&&window.ASSET_GROUPS['CRYPTO'].includes(coinToScan))&&coinToScan!=='PAXGUSDT';if(isTwelveData){if(!window.lastTdScan)window.lastTdScan=0;if(Date.now()-window.lastTdScan<30000)return;window.lastTdScan=Date.now();}let macroInterval='1h';const fetchInterval=botConfig.interval==='5s'?'1m':botConfig.interval;if(fetchInterval==='1m'||fetchInterval==='5m')macroInterval='15m';else if(fetchInterval==='15m')macroInterval='1h';else macroInterval='4h';let macroRegime=\"TREND\";let inerciaAlta=false;if(!window.macroCache)window.macroCache={};if(!window.macroCache[coinToScan]||Date.now()-window.macroCache[coinToScan].ts>300000||window.macroCache[coinToScan].interval!==macroInterval){try{let mCloses=[],mHighs=[],mLows=[];if(!isTwelveData){const resM=await fetch(`https:\/\/api.binance.com\/api\/v3\/klines?symbol=${coinToScan}&interval=${macroInterval}&limit=100`);const dataM=await resM.json();mHighs=dataM.map(d=>parseFloat(d[2]));mLows=dataM.map(d=>parseFloat(d[3]));mCloses=dataM.map(d=>parseFloat(d[4]));}else{const url=`https:\/\/api.twelvedata.com\/time_series?symbol=${encodeURIComponent(coinToScan)}&interval=1h&apikey=${TD_API_KEY}&outputsize=100`;const resM=await fetch(url);const dataM=await resM.json();if(!dataM.status||dataM.status!=='error'){const valM=dataM.values.reverse();mHighs=valM.map(v=>parseFloat(v.high));mLows=valM.map(v=>parseFloat(v.low));mCloses=valM.map(v=>parseFloat(v.close));}}if(mCloses.length>50){const mAdx=calcADX(mHighs,mLows,mCloses,14);const mBb=calcBollingerBands(mCloses,20);let currentMAdx=mAdx[mAdx.length-1];let prevMAdx=mAdx[mAdx.length-2];let currentMBw=mBb.bandwidth[mBb.bandwidth.length-1];inerciaAlta=(currentMAdx>20&&currentMAdx>prevMAdx);if(currentMAdx>25)macroRegime=\"TREND\";else if(currentMBw<=3.5)macroRegime=\"SQUEEZE\";else macroRegime=\"RANGE\";window.macroCache[coinToScan]={ts:Date.now(),regime:macroRegime,inercia:inerciaAlta,interval:macroInterval};}}catch(e){}}else{macroRegime=window.macroCache[coinToScan].regime;inerciaAlta=window.macroCache[coinToScan].inercia;}try{let closes=[],highs=[],lows=[];let price=0;const limit=500;if(!isTwelveData){const res=await fetch(`https:\/\/api.binance.com\/api\/v3\/klines?symbol=${coinToScan}&interval=${fetchInterval}&limit=${limit}`);const data=await res.json();highs=data.map(d=>parseFloat(d[2]));lows=data.map(d=>parseFloat(d[3]));closes=data.map(d=>parseFloat(d[4]));}else{let tdInterval='1h';if(fetchInterval==='1m')tdInterval='1min';if(fetchInterval==='5m')tdInterval='5min';if(fetchInterval==='15m')tdInterval='15min';const url=`https:\/\/api.twelvedata.com\/time_series?symbol=${encodeURIComponent(coinToScan)}&interval=${tdInterval}&apikey=${TD_API_KEY}&outputsize=${limit}`;const res=await fetch(url);const data=await res.json();if(data.status==='error'||!data.values)return;const values=data.values.reverse();highs=values.map(v=>parseFloat(v.high));lows=values.map(v=>parseFloat(v.low));closes=values.map(v=>parseFloat(v.close));}if(closes.length===0)return;price=closes[closes.length-1];let fastEma,slowEma;const ema9=calcEMA(closes,9),ema13=calcEMA(closes,13),ema21=calcEMA(closes,21),ema34=calcEMA(closes,34),ema50=calcEMA(closes,50),ema55=calcEMA(closes,55);const ema100=calcEMA(closes,100),ema200=calcEMA(closes,200);const rsi=calcRSI(closes,14);const adx=calcADX(highs,lows,closes,14);const bb=calcBollingerBands(closes,20);if(botConfig.interval==='1m'||botConfig.interval==='5s'){fastEma=ema21;slowEma=ema55;}else if(botConfig.interval==='5m'){fastEma=ema13;slowEma=ema34;}else{fastEma=ema9;slowEma=ema21;}let cSC=0;let currentTrendDir=fastEma[fastEma.length-1]>slowEma[slowEma.length-1]?'LONG':'SHORT';for(let i=closes.length-2;i>=0;i--){let prevTrendDir=fastEma[i]>slowEma[i]?'LONG':'SHORT';if(prevTrendDir!==currentTrendDir)break;cSC++;}const d={emaFast:fastEma[fastEma.length-1],emaSlow:slowEma[slowEma.length-1],emaFastPrev:fastEma[fastEma.length-2],emaSlowPrev:slowEma[slowEma.length-2],rsi:rsi[rsi.length-1],adx:adx[adx.length-1],adxPrev:adx[adx.length-2],bbUpper:bb.upper[bb.upper.length-1],bbLower:bb.lower[bb.lower.length-1],cSC:cSC};let maxVelas=(botConfig.interval==='1h'||botConfig.interval==='4h')?4:8;let halfVelas=Math.max(1,Math.floor(maxVelas\/2));let dist100=(Math.abs(price-ema100[ema100.length-1])\/price)*100;let dist200=(Math.abs(price-ema200[ema200.length-1])\/price)*100;let gapAuto=fetchInterval==='1m'?0.2:(fetchInterval==='5m'?0.35:0.65);let oxLong=(price>ema100[ema100.length-1]||dist100>gapAuto)&&(price>ema200[ema200.length-1]||dist200>gapAuto);let oxShort=(price<ema100[ema100.length-1]||dist100>gapAuto)&&(price<ema200[ema200.length-1]||dist200>gapAuto);let oxActive=currentTrendDir==='LONG'?oxLong:oxShort;const riskProfile=botConfig.riskProfile||'INSTITUTIONAL';let rA=getAdxThreshold(coinToScan);let motorBloqueado=false;let requiresOxygen=true;if(riskProfile==='LIGHT'){requiresOxygen=false;}else{motorBloqueado=macroRegime===\"SQUEEZE\"||!inerciaAlta;}if(motorBloqueado)return;let signal=0;let executionDirection=botConfig.direction;let oxygenCheck=requiresOxygen?oxActive:true;if(macroRegime===\"TREND\"||riskProfile==='LIGHT'){if(executionDirection==='AUTO'){if(botConfig.entryMode==='SNIPER'){if(d.emaFastPrev<=d.emaSlowPrev&&d.emaFast>d.emaSlow)executionDirection='LONG';else if(d.emaFastPrev>=d.emaSlowPrev&&d.emaFast<d.emaSlow)executionDirection='SHORT';else return;}else{if(d.emaFast>d.emaSlow)executionDirection='LONG';else if(d.emaFast<d.emaSlow)executionDirection='SHORT';}}if(executionDirection==='LONG'){if(botConfig.entryMode==='SNIPER'){if(d.adx>rA&&d.adx>d.adxPrev&&d.rsi>45&&d.rsi<70&&oxygenCheck&&d.emaFastPrev<=d.emaSlowPrev&&d.emaFast>d.emaSlow)signal=1;}else{let rsiValid=(d.cSC<=halfVelas)?(d.rsi>45&&d.rsi<70):(d.rsi>45&&d.rsi<55);if(d.emaFast>d.emaSlow&&d.cSC<=maxVelas&&d.adx>rA&&d.adx<40&&d.adx>d.adxPrev&&oxygenCheck&&rsiValid)signal=1;}}else if(executionDirection==='SHORT'){if(botConfig.entryMode==='SNIPER'){if(d.adx>rA&&d.adx>d.adxPrev&&d.rsi<55&&d.rsi>30&&oxygenCheck&&d.emaFastPrev>=d.emaSlowPrev&&d.emaFast<d.emaSlow)signal=-1;}else{let rsiValid=(d.cSC<=halfVelas)?(d.rsi<55&&d.rsi>30):(d.rsi<55&&d.rsi>45);if(d.emaFast<d.emaSlow&&d.cSC<=maxVelas&&d.adx>rA&&d.adx<40&&d.adx>d.adxPrev&&oxygenCheck&&rsiValid)signal=-1;}}}if(signal===0&&(macroRegime===\"RANGE\"||riskProfile==='LIGHT')){if(d.adx<rA){if(executionDirection==='AUTO'){if(price<=d.bbLower&&d.rsi<30)executionDirection='LONG';else if(price>=d.bbUpper&&d.rsi>70)executionDirection='SHORT';}if(executionDirection==='LONG'&&price<=d.bbLower&&d.rsi<30)signal=1;else if(executionDirection==='SHORT'&&price>=d.bbUpper&&d.rsi>70)signal=-1;}}if(signal===0&&(macroRegime===\"BREAKOUT\"||riskProfile==='LIGHT')){if(executionDirection==='AUTO'){if(price>d.bbUpper&&d.adx>rA)executionDirection='LONG';else if(price<d.bbLower&&d.adx>rA)executionDirection='SHORT';}if(executionDirection==='LONG'&&price>d.bbUpper&&d.adx>d.adxPrev&&d.adx>rA&&d.rsi>60&&oxygenCheck)signal=1;else if(executionDirection==='SHORT'&&price<d.bbLower&&d.adx>d.adxPrev&&d.adx>rA&&d.rsi<40&&oxygenCheck)signal=-1;}else if(currentMacrocerebro===2){let activeCVD=cvdData[coinToScan]||0;let preArmDirection='NONE';let cvdThreshold=10;if(executionDirection==='AUTO'){if(botConfig.entryMode==='SNIPER'){if(d.emaFastPrev<=d.emaSlowPrev&&d.emaFast>d.emaSlow)preArmDirection='LONG';else if(d.emaFastPrev>=d.emaSlowPrev&&d.emaFast<d.emaSlow)preArmDirection='SHORT';}else{if(d.emaFast>d.emaSlow)preArmDirection='LONG';else if(d.emaFast<d.emaSlow)preArmDirection='SHORT';}}else{preArmDirection=executionDirection;}if(preArmDirection==='LONG'){if(botConfig.entryMode==='SNIPER'){if(activeCVD>cvdThreshold&&d.adx>rA&&d.adx>d.adxPrev&&d.rsi>45&&d.rsi<70&&oxygenCheck&&d.emaFastPrev<=d.emaSlowPrev&&d.emaFast>d.emaSlow){signal=1;executionDirection='LONG';}}else{let rsiValid=(d.cSC<=halfVelas)?(d.rsi>45&&d.rsi<70):(d.rsi>45&&d.rsi<55);if(activeCVD>cvdThreshold&&d.adx>rA&&d.adx>d.adxPrev&&d.emaFast>d.emaSlow&&oxygenCheck&&rsiValid){signal=1;executionDirection='LONG';}}}else if(preArmDirection==='SHORT'){if(botConfig.entryMode==='SNIPER'){if(activeCVD<-cvdThreshold&&d.adx>rA&&d.adx>d.adxPrev&&d.rsi<55&&d.rsi>30&&oxygenCheck&&d.emaFastPrev>=d.emaSlowPrev&&d.emaFast<d.emaSlow){signal=-1;executionDirection='SHORT';}}else{let rsiValid=(d.cSC<=halfVelas)?(d.rsi<55&&d.rsi>30):(d.rsi<55&&d.rsi>45);if(activeCVD<-cvdThreshold&&d.adx>rA&&d.adx>d.adxPrev&&d.emaFast<d.emaSlow&&oxygenCheck&&rsiValid){signal=-1;executionDirection='SHORT';}}}}\n    if(signal!==0){\n        try {\n            const modoOperacion = document.getElementById('config-modo-operacion').value;\n            if (modoOperacion === 'REAL') {\n                const exName = document.getElementById('config-exchange').value;\n                const apiKey = document.getElementById('api-key').value.trim();\n                const secret = document.getElementById('api-secret').value.trim();\n                const passphrase = document.getElementById('api-passphrase').value.trim();\n                if(apiKey && secret) {\n                    if (!ccxtExchange || ccxtExchange.id !== exName) {\n                        let configEx = { apiKey: apiKey, secret: secret, proxy: 'https:\/\/corsproxy.io\/?' };\n                        \/\/ RESTRICCI\u00d3N MODIFICADA: Inyecta Passphrase para OKX o KuCoin\n                        if ((exName === 'okx' || exName === 'kucoin') && passphrase !== '') configEx.password = passphrase;\n                        if (window.ccxt && window.ccxt[exName]) { ccxtExchange = new window.ccxt[exName](configEx); }\n                    }\n                    if (ccxtExchange) {\n                        let amountBase = (botConfig.MIO * botConfig.leverage) \/ price;\n                        let orderSide = executionDirection === 'LONG' ? 'buy' : 'sell';\n                        let ccxtSymbol = coinToScan.replace('USDT', '\/USDT');\n                        console.log(`[CCXT] Ejecutando: ${orderSide} ${ccxtSymbol} x ${amountBase}`);\n                        ccxtExchange.createMarketOrder(ccxtSymbol, orderSide, amountBase)\n                            .then(res => console.log(\"\u2705 CCXT \u00c9XITO:\", res))\n                            .catch(err => console.error(\"\u274c CCXT ERROR:\", err));\n                    }\n                }\n            }\n        } catch(errCCXT) { console.error(\"Fallo general CCXT:\", errCCXT); }\n        let slPrice=0;let myTps=JSON.parse(JSON.stringify(botConfig.tpConfig));if(executionDirection==='LONG'){slPrice=price*(1-botConfig.slPct\/100);myTps.forEach(tp=>tp.price=price*(1+tp.pct\/100));}else{slPrice=price*(1+botConfig.slPct\/100);myTps.forEach(tp=>tp.price=price*(1-tp.pct\/100));}let maxTpP=myTps[myTps.length-1].price;const newOrder={id:Date.now(),timestamp:Date.now(),symbol:coinToScan,direction:executionDirection,entry:price,amount:botConfig.MIO,leverage:botConfig.leverage,tps:myTps,sl:slPrice,maxTpPrice:maxTpP,status:'OPEN',pnlUsd:0,pnlPercent:0,markPrice:price,highestPrice:price,lowestPrice:price,trailingSl:botConfig.trailingSlPct,trailingTp:botConfig.trailingTpPct,secured:0,realized:0,locked:0,floatingUsd:0,floatingPct:0,interval:botConfig.interval,brainType:currentMacrocerebro,entryMode:botConfig.entryMode,riskProfile:botConfig.riskProfile};demoOrders.unshift(newOrder);localStorage.setItem('bullBotAlgorithmic_orders',JSON.stringify(demoOrders));renderBotTable();processDailyStats(demoOrders);document.getElementById('scan-status').innerText=`\u00a1ENTRADA EN ${coinToScan}!`;document.getElementById('scan-status').style.color=\"#ffff00\";if(\"Notification\" in window&&Notification.permission===\"granted\"){try{new Notification(\"\ud83d\ude80 \u00a1Nueva Se\u00f1al Ejecutada!\",{body:`El bot acaba de entrar en ${executionDirection} para el par ${coinToScan}.`});new Audio('https:\/\/actions.google.com\/sounds\/v1\/alarms\/beep_short.ogg').play().catch(e=>console.log(\"Audio\",e));}catch(notifErr){}}\n    }\n}catch(e){}}\nasync function refreshOpenOrders(){if(demoOrders.length===0)return;const activeSymbol=document.getElementById('cw-coin').value.toUpperCase();for(let order of demoOrders){if(order.status!=='OPEN')continue;let updatedPrice=null;if(order.symbol===activeSymbol&&currentPrice>0&&currentPriceSymbol===activeSymbol){updatedPrice=currentPrice;}else{if((window.ASSET_GROUPS['CRYPTO']&&window.ASSET_GROUPS['CRYPTO'].includes(order.symbol))||order.symbol==='PAXGUSDT'){try{const res=await fetch(`https:\/\/api.binance.com\/api\/v3\/ticker\/price?symbol=${order.symbol}`);const d=await res.json();updatedPrice=parseFloat(d.price);}catch(e){}}else{try{const url=`https:\/\/api.twelvedata.com\/price?symbol=${encodeURIComponent(order.symbol)}&apikey=${TD_API_KEY}`;const res=await fetch(url);const d=await res.json();if(d.price)updatedPrice=parseFloat(d.price);}catch(e){}}}if(updatedPrice){const now=updatedPrice;order.markPrice=now;if(now>(order.highestPrice||0))order.highestPrice=now;if(now<(order.lowestPrice||Infinity))order.lowestPrice=now;if(order.trailingSl>0&&order.tps[0].filled){if(order.direction==='LONG'){let potentialSL=order.highestPrice*(1-order.trailingSl\/100);if(potentialSL>order.sl){order.sl=potentialSL;order.slLabel=\"TSL \ud83d\udcc8 \";}}else{let potentialSL=order.lowestPrice*(1+order.trailingSl\/100);if(potentialSL<order.sl){order.sl=potentialSL;order.slLabel=\"TSL \ud83d\udcc9 \";}}}let calcPrice=now;if((order.direction==='LONG'&&now<=order.sl)||(order.direction==='SHORT'&&now>=order.sl)){let isProfitableSL=(order.direction==='LONG'&&order.sl>=order.entry)||(order.direction==='SHORT'&&order.sl<=order.entry);order.status=isProfitableSL?\"TRAIL STOP \ud83d\udee1\ufe0f \":\"STOP LOSS \ud83d\uded1 \";calcPrice=order.sl;order.closeTime=Date.now();}let allFilled=true;let highestFilledIndex=-1;order.tps.forEach((tp,idx)=>{if(!tp.filled){let hitTP=(order.direction==='LONG'&&now>=tp.price)||(order.direction==='SHORT'&&now<=tp.price);if(hitTP){if(idx===0){tp.filled=true;if(order.direction==='LONG'){if(order.sl<order.entry){order.sl=order.entry;order.slLabel=\"B.E. \ud83d\udee1\ufe0f \";}}else{if(order.sl>order.entry){order.sl=order.entry;order.slLabel=\"B.E. \ud83d\udee1\ufe0f \";}}}else{if(order.trailingTp===0){tp.filled=true;}else if(!tp.triggered){tp.triggered=true;tp.peakPrice=now;}}}}if(tp.triggered&&!tp.filled){if(order.direction==='LONG'&&now>tp.peakPrice)tp.peakPrice=now;if(order.direction==='SHORT'&&now<tp.peakPrice)tp.peakPrice=now;let callbackDist=tp.peakPrice*(order.trailingTp\/100);let exitPrice=(order.direction==='LONG')?tp.peakPrice-callbackDist:tp.peakPrice+callbackDist;if((order.direction==='LONG'&&now<=exitPrice)||(order.direction==='SHORT'&&now>=exitPrice)){tp.filled=true;for(let k=idx+1;k<order.tps.length;k++){let nextTp=order.tps[k];if(!nextTp.filled){nextTp.filled=true;if(order.direction==='LONG')nextTp.pct=((now-order.entry)\/order.entry)*100;else nextTp.pct=((order.entry-now)\/order.entry)*100;}}}}if(!tp.filled)allFilled=false;if(tp.filled)highestFilledIndex=idx;});if(order.trailingSl===0){let newSL=order.sl;let slLabel=order.slLabel||'';if(highestFilledIndex===0){newSL=order.entry;slLabel=\"B.E. \ud83d\udee1\ufe0f \";}else if(highestFilledIndex>0){newSL=order.tps[highestFilledIndex-1].price;slLabel=\"TRAIL \ud83d\ude80 \";}if(order.direction==='LONG'){if(newSL>order.sl){order.sl=newSL;order.slLabel=slLabel;}}else{if(newSL<order.sl){order.sl=newSL;order.slLabel=slLabel;}}}let realizedProfit=0;let remainingVol=100;order.tps.forEach(tp=>{if(tp.filled){let gainPct=tp.pct*order.leverage;let gainUsd=(order.amount*(tp.vol\/100))*(gainPct\/100);realizedProfit+=gainUsd;remainingVol-=tp.vol;}});order.realized=realizedProfit;order.secured=realizedProfit;let activeAmount=order.amount*(remainingVol\/100);let rawPct=order.direction==='LONG'?(calcPrice-order.entry)\/order.entry:(order.entry-calcPrice)\/order.entry;order.floatingPct=rawPct*order.leverage*100;order.floatingUsd=activeAmount*(order.floatingPct\/100);if(order.status!=='OPEN'){order.realized+=order.floatingUsd;order.secured=order.realized;order.floatingUsd=0;order.floatingPct=0;}if(allFilled){order.status=\"TAKE PROFIT \ud83c\udfaf \";order.closeTime=Date.now();}}}localStorage.setItem('bullBotAlgorithmic_orders',JSON.stringify(demoOrders));renderBotTable();processDailyStats(demoOrders);}\nfunction renderBotTable(){const tbody=document.getElementById('cw-orders-body');tbody.innerHTML=\"\";if(demoOrders.length===0){tbody.innerHTML='<tr><td colspan=\"12\" style=\"text-align:center; padding:20px;\">Historial vac\u00edo.<\/td><\/tr>';return;}demoOrders.forEach(order=>{const row=document.createElement('tr');if(order.interval==='5s')row.className='blink-row';let progressPct=0;let barClass='profit';let currentP=order.markPrice||order.entry;if(order.status==='OPEN'){let diff=0;let distToMaxTP=Math.abs(order.maxTpPrice-order.entry);let distToSL=Math.abs(order.entry-order.sl);if(order.direction==='LONG')diff=currentP-order.entry;else diff=order.entry-currentP;if(diff>=0){progressPct=(diff\/distToMaxTP)*100;if(progressPct>100)progressPct=100;}else{progressPct=(diff\/distToSL)*100;if(progressPct<-100)progressPct=-100;}}else if(order.status.includes('TAKE PROFIT')){progressPct=100;}else if(order.status.includes('STOP LOSS')){progressPct=-100;}let barWidth=Math.abs(progressPct)\/2;if(progressPct<0)barClass='loss';let labelLeft=progressPct>=0?(50+barWidth):(50-barWidth);let d=getPrecision(order.entry,order.symbol);let brainEmoji=order.brainType===2?'\ud83d\udd25':'\u2699\ufe0f';const progressBarHtml=`<div class=\"progress-col-container\"><div class=\"tracker-wrapper\"><div class=\"tracker-floating-price\" style=\"left:${labelLeft}%\">${currentP.toFixed(d)}<\/div><div class=\"trade-tracker-container\"><div class=\"tracker-center-line\"><\/div><div class=\"tracker-bar ${barClass}\" style=\"width:${barWidth}%;\"><\/div><\/div><\/div><div class=\"tracker-labels\"><span>${order.sl?order.sl.toFixed(d):'-'}<\/span><span style=\"color:#fff;\">${order.entry.toFixed(d)}<\/span><span>${order.maxTpPrice.toFixed(d)}<\/span><\/div><\/div>`;let floatClass=order.floatingUsd>=0?'pnl-pos':'pnl-neg';let totalVal=(order.realized||0)+(order.floatingUsd||0);let actionBtn=order.status==='OPEN'?`<button class=\"btn-market-close\" onclick=\"closeManual(${order.id})\" style=\"margin-left:10px;\">CERRAR<\/button>`:\"\";let modeTag=order.entryMode?`<span style=\"font-size:0.65rem; color:#888;\">\ud83c\udfaf ${order.entryMode} | \ud83d\udee1\ufe0f ${order.riskProfile==='LIGHT'?'LIGHT':'INST'}<\/span><br>`:'';row.innerHTML=`<td data-label=\"Fecha\/Hora\">${new Date(order.timestamp).toLocaleString()}<\/td><td data-label=\"Par\/Acci\u00f3n\" style=\"font-weight:bold; color:#00bcd4;\">${order.symbol} ${brainEmoji}<br>${modeTag}<button class=\"btn-view-chart\" onclick=\"viewOnChart('${order.symbol}')\" style=\"margin-top:3px;\">GRAFICO<\/button><\/td><td data-label=\"Direcci\u00f3n\" style=\"color:${order.direction==='LONG'?'#66bb6a':'#ff5252'}; font-weight:bold;\">${order.direction}<\/td><td data-label=\"Entrada\">$${order.entry.toFixed(d)}<\/td><td data-label=\"Monto\">$${order.amount} <span style=\"color:#aaa\">(x${order.leverage})<\/span><\/td><td data-label=\"Target TP\/SL\" style=\"font-size:0.85em;\"><span style=\"color:#4caf50\">TP: $${order.maxTpPrice.toFixed(d)}<\/span><br><span style=\"color:#ff5252\">SL: $${order.sl.toFixed(d)}<\/span><\/td><td data-label=\"Flotante (%)\" class=\"${floatClass}\">${order.floatingPct?order.floatingPct.toFixed(2):'0.00'}%<\/td><td data-label=\"Flotante ($)\" class=\"${floatClass}\">$${order.floatingUsd?order.floatingUsd.toFixed(2):'0.00'}<\/td><td data-label=\"Asegurado\" style=\"color:#ffd700; font-weight:bold;\">$${order.secured?order.secured.toFixed(2):'0.00'}<\/td><td data-label=\"Total ($)\" style=\"font-weight:bold; color:#fff;\">$${totalVal.toFixed(2)}<\/td><td data-label=\"Progreso Visual\" style=\"min-width: 150px; width: 100%; text-align: center;\">${progressBarHtml}<\/td><td data-label=\"Estado\" style=\"text-align:right;\">${order.status} ${actionBtn}<\/td>`;tbody.appendChild(row);});}\nfunction viewOnChart(symbol){let foundGroup=null;for(const[grp,list]of Object.entries(window.ASSET_GROUPS)){if(list.includes(symbol)){foundGroup=grp;break;}}if(!foundGroup)foundGroup='CRYPTO';document.getElementById('cw-asset-group').value=foundGroup;changeAssetGroup(true);document.getElementById('cw-coin').value=symbol;updateApp();document.querySelector('.chart-box').scrollIntoView({behavior:'smooth'});window.ccGame.forceView(symbol);currentDetailSymbol=symbol;updateTradeDetails(symbol);}\nfunction updateTradeDetails(symbol){const o=demoOrders.find(x=>x.symbol===symbol&&x.status==='OPEN')||demoOrders.find(x=>x.symbol===symbol);const p=document.getElementById('trade-detail-module');if(!o){p.style.display='none';return;}p.style.display='block';document.getElementById('td-pair').innerText=o.symbol+' \/ '+o.status;document.getElementById('td-dir').innerText=o.direction;document.getElementById('td-dir').style.color=o.direction==='LONG'?'#4caf50':'#ff5252';document.getElementById('td-start').innerText=new Date(o.timestamp).toLocaleString();document.getElementById('td-end').innerText=o.status!=='OPEN'&&o.closeTime?new Date(o.closeTime).toLocaleString():'---';let durMin=o.status==='OPEN'?Math.floor((Date.now()-o.timestamp)\/60000):(o.closeTime?Math.floor((o.closeTime-o.timestamp)\/60000):0);document.getElementById('td-dur').innerText=o.status==='OPEN'?durMin+' min (En Curso)':durMin+' min (Finalizado)';let roi=o.status==='OPEN'?(o.floatingPct||0):((o.realized\/o.amount)*100);const elRoi=document.getElementById('td-roi');elRoi.innerText=(roi>0?'+':'')+roi.toFixed(2)+'%';elRoi.style.color=roi<0?'#ff5252':(roi>0?'#4caf50':'#ffffff');let tpnl=(o.realized||0)+(o.status==='OPEN'?(o.floatingUsd||0):0);const elPnl=document.getElementById('td-pnl');elPnl.innerText=(tpnl>0?'+':'')+'$'+tpnl.toFixed(2);elPnl.style.color=tpnl<0?'#ff5252':(tpnl>0?'#4caf50':'#ffffff');document.getElementById('td-res').innerText=o.status;}\nfunction updateLeverageDisplay(val){document.getElementById('lev-val').innerText=val+'x';calculateResults();}\nfunction toggleTPMode(mode){if(mode==='single'){document.getElementById('tp-single-box').style.display='block';document.getElementById('tp-ladder-box').style.display='none';}else{document.getElementById('tp-single-box').style.display='none';document.getElementById('tp-ladder-box').style.display='block';}calculateResults();}\nfunction toggleMode(){const m=document.getElementById('calc-mode').value;const s=document.getElementById('leverage-slider');if(m==='SPOT'){s.value=1;s.disabled=true;document.getElementById('lev-val').innerText='1x';setDirection('LONG');}else{s.disabled=false;}calculateResults();}\nfunction setDirection(d){currentDirection=d;document.getElementById('btn-long').className=d==='LONG'?'btn-direction active-long':'btn-direction';document.getElementById('btn-short').className=d==='SHORT'?'btn-direction active-short':'btn-direction';document.getElementById('btn-auto').className=d==='AUTO'?'btn-direction active-auto':'btn-direction';calculateResults();}\nfunction calculateResults(){const amt=parseFloat(document.getElementById('bot-mio').value);const lev=parseFloat(document.getElementById('leverage-slider').value);const sl=parseFloat(document.getElementById('sl-slider').value);const mode=document.querySelector('input[name=\"tp-mode\"]:checked').value;let tps=[];if(mode==='multi'){for(let i=1;i<=4;i++)tps.push({pct:parseFloat(document.getElementById(`tp${i}-pct`).value),vol:parseFloat(document.getElementById(`tp${i}-vol`).value)});}else{tps.push({pct:parseFloat(document.getElementById('tp-single-val').value),vol:100});}let p=typeof currentPrice!=='undefined'&&currentPrice>0?currentPrice:100;let dir=currentDirection==='AUTO'?'LONG':currentDirection;let slP=dir==='LONG'?p*(1-sl\/100):p*(1+sl\/100);let maxTp=0,profit=0;tps.forEach(tp=>{let tpP=dir==='LONG'?p*(1+tp.pct\/100):p*(1-tp.pct\/100);if(dir==='LONG'){if(tpP>maxTp)maxTp=tpP;}else{if(maxTp===0||tpP<maxTp)maxTp=tpP;}let g=(tp.pct*lev\/100)*(amt*(tp.vol\/100));profit+=g;});document.getElementById('res-tp-price').innerText='$'+maxTp.toFixed(getPrecision(maxTp,currentPriceSymbol));document.getElementById('res-sl-price').innerText='$'+slP.toFixed(getPrecision(slP,currentPriceSymbol));document.getElementById('res-profit').innerText='+$'+profit.toFixed(2);document.getElementById('res-loss').innerText='-$'+(amt*(sl*lev\/100)).toFixed(2);}\nfunction applyStrategyPreset(){const p=document.getElementById('bot-preset').value;const i=document.getElementById('cw-interval');const sl=document.getElementById('sl-slider');const tpS=document.getElementById('tp-single-val');if(p==='SCALPER'){i.value='1m';sl.value=0.5;tpS.value=0.8;}else if(p==='FAST'){i.value='5m';sl.value=1.5;tpS.value=2.0;}else if(p==='SWING_SHORT'){i.value='15m';sl.value=3.0;tpS.value=4.5;setDirection('SHORT');}else if(p==='ROCKIE'){i.value='1h';sl.value=5.0;tpS.value=8.0;}else if(p==='HOLDER'){i.value='4h';sl.value=10.0;tpS.value=20.0;}document.getElementById('sl-val').innerText=sl.value+'%';updateApp();calculateResults();}\nfunction toggleBotExecution(){const btn=document.getElementById('btn-bot-toggle');const statusEl=document.getElementById('scan-status');if(!isBotRunning){if(\"Notification\" in window){if(Notification.permission!==\"granted\"&&Notification.permission!==\"denied\"){Notification.requestPermission();}}const MIO=parseFloat(document.getElementById('bot-mio').value);const MAC=parseFloat(document.getElementById('bot-mac').value);const leverage=parseFloat(document.getElementById('leverage-slider').value);const interval=document.getElementById('cw-interval').value;const entryMode=document.getElementById('bot-entry-mode').value;const riskProfile=document.getElementById('bot-risk-profile').value;const trailingSlPct=parseFloat(document.getElementById('input-trailing-sl').value)||0;const trailingTpPct=parseFloat(document.getElementById('input-trailing-tp').value)||0;const isMulti=document.querySelector('input[name=\"tp-mode\"]:checked').value==='multi';let tpConfig=[];let maxTpDist=0;if(isMulti){let totalVol=0;for(let i=1;i<=4;i++){const pct=parseFloat(document.getElementById(`tp${i}-pct`).value);const vol=parseFloat(document.getElementById(`tp${i}-vol`).value);totalVol+=vol;tpConfig.push({pct:pct,vol:vol,filled:false,price:0});if(pct>maxTpDist)maxTpDist=pct;}if(totalVol!==100){alert(\"Suma TP volumen debe ser 100%\");return;}}else{const pct=parseFloat(document.getElementById('tp-single-val').value);tpConfig.push({pct:pct,vol:100,filled:false,price:0});maxTpDist=pct;}const slPct=parseFloat(document.getElementById('sl-slider').value);botConfig={MIO,MOA:1,MAC,leverage,interval,entryMode,slPct,tpConfig,maxTpDist,direction:currentDirection,trailingSlPct,trailingTpPct,riskProfile};isBotRunning=true;btn.innerText=\"\ud83d\uded1 DETENER BOT\";btn.classList.add('scanning');btn.style.background=\"#ff5252\";statusEl.innerText=\"\ud83d\udce1 ESCANEANDO MERCADO...\";statusEl.style.color=\"#4caf50\";}else{isBotRunning=false;btn.innerText=\"\ud83e\udd16 LANZAR BOT\";btn.classList.remove('scanning');btn.style.background=\"linear-gradient(45deg, #6c5ce7, #a29bfe)\";statusEl.innerText=\"\";}}\nfunction closeManual(id){const idx=demoOrders.findIndex(o=>o.id===id);if(idx!==-1&&demoOrders[idx].status==='OPEN'){demoOrders[idx].status='MANUAL \u270b';demoOrders[idx].realized+=demoOrders[idx].floatingUsd;demoOrders[idx].secured=demoOrders[idx].realized;demoOrders[idx].floatingUsd=0;demoOrders[idx].floatingPct=0;demoOrders[idx].closeTime=Date.now();localStorage.setItem('bullBotAlgorithmic_orders',JSON.stringify(demoOrders));renderBotTable();processDailyStats(demoOrders);}}\nfunction clearHistory(){demoOrders.length = 0;localStorage.setItem('bullBotAlgorithmic_orders',JSON.stringify([]));renderBotTable();processDailyStats([]);isBotRunning=false;const btn=document.getElementById('btn-bot-toggle');const statusEl=document.getElementById('scan-status');if(btn){btn.innerText=\"\ud83e\udd16 LANZAR BOT\";btn.classList.remove('scanning');btn.style.background=\"linear-gradient(45deg, #6c5ce7, #a29bfe)\";}if(statusEl)statusEl.innerText=\"\";botConfig={};if(window.ccGame)window.ccGame.forceReset();}\nfunction renderDualCharts(l,w,loss,n){const sl=l.length>0?l:['Sin Datos'];if(chartInstance1)chartInstance1.destroy();if(chartInstance2)chartInstance2.destroy();chartInstance1=new Chart(document.getElementById('chartWinLoss'),{type:'bar',data:{labels:sl,datasets:[{label:'Win %',data:w,backgroundColor:'#4caf50'},{label:'Loss %',data:loss,backgroundColor:'#ff5252'}]},options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{display:false}},scales:{x:{display:false},y:{grid:{color:'#333'},ticks:{color:'#888'}}}}});chartInstance2=new Chart(document.getElementById('chartDailyUsd'),{type:'bar',data:{labels:sl,datasets:[{label:'Net $',data:n,backgroundColor:n.map(v=>v>=0?'#4caf50':'#ff5252')}]},options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{display:false}},scales:{x:{ticks:{color:'#888'}},y:{grid:{color:'#333'},ticks:{color:'#888'}}}}});}\nfunction processDailyStats(orders){let totalFloating=0,totalRealized=0,totalSecured=0,wins=0,closed=0;const dailyData={};orders.forEach(o=>{let fUsd=parseFloat(o.floatingUsd)||0,rUsd=parseFloat(o.realized)||0;let sUsd=parseFloat(o.secured)||0,fPct=parseFloat(o.floatingPct)||0;if(o.status==='OPEN'){totalFloating+=fUsd;}else{closed++;if(rUsd>0)wins++;}totalRealized+=rUsd;totalSecured+=sUsd;const dKey=new Date(o.timestamp).toLocaleDateString();if(!dailyData[dKey])dailyData[dKey]={win:0,loss:0,net:0,ts:o.timestamp};let tradeTotal=rUsd+fUsd;dailyData[dKey].net+=tradeTotal;if(tradeTotal>0)dailyData[dKey].win+=fPct;else dailyData[dKey].loss+=fPct;});document.getElementById('stat-total-trades').innerText=orders.length;document.getElementById('stat-pnl-floating').innerText=`$${totalFloating.toFixed(2)}`;document.getElementById('stat-pnl-floating').style.color=totalFloating>=0?'#4caf50':'#ff5252';document.getElementById('stat-pnl-realized').innerText=`$${totalRealized.toFixed(2)}`;document.getElementById('stat-pnl-realized').style.color=totalRealized>=0?'#4caf50':'#ff5252';document.getElementById('stat-secured').innerText=`$${totalSecured.toFixed(2)}`;document.getElementById('stat-winrate').innerText=closed>0?(wins\/closed*100).toFixed(0)+'%':'0%';renderDualCharts(Object.keys(dailyData),Object.values(dailyData).map(d=>d.win),Object.values(dailyData).map(d=>d.loss),Object.values(dailyData).map(d=>d.net));renderDashBlock1();renderDashBlock2();renderDashBlock3();renderDashBlock4();renderDashBlock5();generateBrainComparison();}\nasync function runBacktest(){const btn=document.querySelector('#backtest-module .cw-btn');const resBar=document.getElementById('bt-results');const report=document.getElementById('bt-analyst-report');const chartCont=document.getElementById('bt-chart-container');const log=document.getElementById('bt-log');btn.innerText=\"Calculando...\";btn.disabled=true;try{const sym=document.getElementById('cw-coin').value.toUpperCase();const inv=document.getElementById('cw-interval').value;const limit=document.getElementById('bt-candles').value;const isTD=!(window.ASSET_GROUPS['CRYPTO']&&window.ASSET_GROUPS['CRYPTO'].includes(sym))&&sym!=='PAXGUSDT';let closes=[],highs=[],lows=[],times=[],volumes=[],takerVols=[];if(!isTD){const r=await fetch(`https:\/\/api.binance.com\/api\/v3\/klines?symbol=${sym}&interval=${inv}&limit=${limit}`);const d=await r.json();times=d.map(x=>x[0]);highs=d.map(x=>parseFloat(x[2]));lows=d.map(x=>parseFloat(x[3]));closes=d.map(x=>parseFloat(x[4]));volumes=d.map(x=>parseFloat(x[5]));takerVols=d.map(x=>parseFloat(x[9]));}else{let ti='1h';if(inv==='1m')ti='1min';if(inv==='5m')ti='5min';if(inv==='15m')ti='15min';const r=await fetch(`https:\/\/api.twelvedata.com\/time_series?symbol=${encodeURIComponent(sym)}&interval=${ti}&apikey=${TD_API_KEY}&outputsize=${limit}`);const d=await r.json();if(d.values){const v=d.values.reverse();times=v.map(x=>new Date(x.datetime).getTime());highs=v.map(x=>parseFloat(x.high));lows=v.map(x=>parseFloat(x.low));closes=v.map(x=>parseFloat(x.close));volumes=v.map(x=>parseFloat(x.volume)||0);takerVols=v.map(x=>(parseFloat(x.volume)||0)\/2);}}if(closes.length<200)throw new Error(\"Datos insuficientes (m\u00edn. 200 velas para EMAs).\");let fastEma,slowEma;if(inv==='1m'||inv==='5s'){fastEma=calcEMA(closes,7);slowEma=calcEMA(closes,21);}else if(inv==='5m'){fastEma=calcEMA(closes,9);slowEma=calcEMA(closes,21);}else{fastEma=calcEMA(closes,21);slowEma=calcEMA(closes,50);}const ema100=calcEMA(closes,100),ema200=calcEMA(closes,200);const rsi=calcRSI(closes,14);const adx=calcADX(highs,lows,closes,14);const bb=calcBollingerBands(closes,20);const brain=currentMacrocerebro;const entryMode=document.getElementById('bot-entry-mode').value;const riskProfile=document.getElementById('bot-risk-profile').value;const baseDir=currentDirection;let rA=getAdxThreshold(sym);if(riskProfile==='LIGHT')rA-=5;let trades=0,wins=0,pnl=0,logTxt=\"\",bal=1000,history=[];let inTrade=false,tradeDir='',tradeSl=0,tradeTp=0,tradeEntry=0;const lev=parseFloat(document.getElementById('leverage-slider').value);const slPct=parseFloat(document.getElementById('sl-slider').value);const tpPct=parseFloat(document.getElementById('tp-single-val').value);const investAmount=parseFloat(document.getElementById('bot-mio').value);for(let i=200;i<closes.length;i++){let p=closes[i];let h=highs[i];let l=lows[i];if(!inTrade){let cSC=0;let currD=fastEma[i]>slowEma[i]?'LONG':'SHORT';for(let j=i-1;j>=0;j--){if((fastEma[j]>slowEma[j]?'LONG':'SHORT')!==currD)break;cSC++;}let dist100=(Math.abs(p-ema100[i])\/p)*100;let dist200=(Math.abs(p-ema200[i])\/p)*100;let gapAuto=(inv==='1m'||inv==='5s')?0.2:(inv==='5m'?0.35:0.65);let oxLong=(p>ema100[i]||dist100>gapAuto)&&(p>ema200[i]||dist200>gapAuto);let oxShort=(p<ema100[i]||dist100>gapAuto)&&(p<ema200[i]||dist200>gapAuto);let oxActive=currD==='LONG'?oxLong:oxShort;let inerciaAlta=(adx[i]>20&&adx[i]>adx[i-1]);let mbw=bb.bandwidth[i];let macroRegime=\"TREND\";if(adx[i]>25)macroRegime=\"TREND\";else if(mbw<=3.5)macroRegime=\"SQUEEZE\";else macroRegime=\"RANGE\";let requiresOxygen=riskProfile!=='LIGHT';let motorBloqueado=requiresOxygen&&(macroRegime===\"SQUEEZE\"||!inerciaAlta);let signal=0;if(!motorBloqueado){let d={emaFast:fastEma[i],emaSlow:slowEma[i],emaFastPrev:fastEma[i-1],emaSlowPrev:slowEma[i-1],rsi:rsi[i],adx:adx[i],adxPrev:adx[i-1],bbUpper:bb.upper[i],bbLower:bb.lower[i],cSC:cSC};let executionDirection=baseDir;let oxygenCheck=requiresOxygen?oxActive:true;let maxVelas=(inv==='1h'||inv==='4h')?4:8;let halfVelas=Math.max(1,Math.floor(maxVelas\/2));if(brain===1){if(macroRegime===\"TREND\"||riskProfile==='LIGHT'){if(executionDirection==='AUTO'){if(entryMode==='SNIPER'){if(d.emaFastPrev<=d.emaSlowPrev&&d.emaFast>d.emaSlow)executionDirection='LONG';else if(d.emaFastPrev>=d.emaSlowPrev&&d.emaFast<d.emaSlow)executionDirection='SHORT';}else{if(d.emaFast>d.emaSlow)executionDirection='LONG';else if(d.emaFast<d.emaSlow)executionDirection='SHORT';}}if(executionDirection==='LONG'){if(entryMode==='SNIPER'){if(d.adx>rA&&d.adx>d.adxPrev&&d.rsi>45&&d.rsi<70&&oxygenCheck&&d.emaFastPrev<=d.emaSlowPrev&&d.emaFast>d.emaSlow)signal=1;}else{let rsiValid=(d.cSC<=halfVelas)?(d.rsi>45&&d.rsi<70):(d.rsi>45&&d.rsi<55);if(d.emaFast>d.emaSlow&&d.cSC<=maxVelas&&d.adx>rA&&d.adx<40&&d.adx>d.adxPrev&&oxygenCheck&&rsiValid)signal=1;}}else if(executionDirection==='SHORT'){if(entryMode==='SNIPER'){if(d.adx>rA&&d.adx>d.adxPrev&&d.rsi<55&&d.rsi>30&&oxygenCheck&&d.emaFastPrev>=d.emaSlowPrev&&d.emaFast<d.emaSlow)signal=-1;}else{let rsiValid=(d.cSC<=halfVelas)?(d.rsi<55&&d.rsi>30):(d.rsi<55&&d.rsi>45);if(d.emaFast<d.emaSlow&&d.cSC<=maxVelas&&d.adx>rA&&d.adx<40&&d.adx>d.adxPrev&&oxygenCheck&&rsiValid)signal=-1;}}}}else if(brain===2){let activeCVD=0;for(let k=0;k<3;k++){let bV=takerVols[i-k];let sV=volumes[i-k]-bV;activeCVD+=(bV-sV);}let cvdThreshold=isTD?0:5;let preArmDir='NONE';if(executionDirection==='AUTO'){if(entryMode==='SNIPER'){if(d.emaFastPrev<=d.emaSlowPrev&&d.emaFast>d.emaSlow)preArmDir='LONG';else if(d.emaFastPrev>=d.emaSlowPrev&&d.emaFast<d.emaSlow)preArmDir='SHORT';}else{if(d.emaFast>d.emaSlow)preArmDir='LONG';else if(d.emaFast<d.emaSlow)preArmDir='SHORT';}}else preArmDir=executionDirection;if(preArmDir==='LONG'){if(entryMode==='SNIPER'){if(activeCVD>cvdThreshold&&d.adx>rA&&d.adx>d.adxPrev&&d.rsi>45&&d.rsi<70&&oxygenCheck&&d.emaFastPrev<=d.emaSlowPrev&&d.emaFast>d.emaSlow){signal=1;executionDirection='LONG';}}else{let rsiValid=(d.cSC<=halfVelas)?(d.rsi>45&&d.rsi<70):(d.rsi>45&&d.rsi<55);if(activeCVD>cvdThreshold&&d.adx>rA&&d.adx>d.adxPrev&&d.emaFast>d.emaSlow&&oxygenCheck&&rsiValid){signal=1;executionDirection='LONG';}}}else if(preArmDir==='SHORT'){if(entryMode==='SNIPER'){if(activeCVD<-cvdThreshold&&d.adx>rA&&d.adx>d.adxPrev&&d.rsi<55&&d.rsi>30&&oxygenCheck&&d.emaFastPrev>=d.emaSlowPrev&&d.emaFast<d.emaSlow){signal=-1;executionDirection='SHORT';}}else{let rsiValid=(d.cSC<=halfVelas)?(d.rsi<55&&d.rsi>30):(d.rsi<55&&d.rsi>45);if(activeCVD<-cvdThreshold&&d.adx>rA&&d.adx>d.adxPrev&&d.emaFast<d.emaSlow&&oxygenCheck&&rsiValid){signal=-1;executionDirection='SHORT';}}}}}if(signal!==0){inTrade=true;tradeDir=signal===1?'LONG':'SHORT';tradeEntry=p;tradeSl=signal===1?tradeEntry*(1-slPct\/100):tradeEntry*(1+slPct\/100);tradeTp=signal===1?tradeEntry*(1+tpPct\/100):tradeEntry*(1-tpPct\/100);trades++;logTxt+=`[${new Date(times[i]).toLocaleDateString()}] ${brain===1?'\u2699\ufe0f C1':'\ud83d\udd25 C2'} ENTRADA ${tradeDir} a $${tradeEntry.toFixed(getPrecision(tradeEntry,sym))}\\n`;}}else{let hitTp=tradeDir==='LONG'?h>=tradeTp:l<=tradeTp;let hitSl=tradeDir==='LONG'?l<=tradeSl:h>=tradeSl;if(hitTp){inTrade=false;wins++;let gain=(tpPct*lev\/100)*investAmount;pnl+=gain;bal+=gain;logTxt+=`[${new Date(times[i]).toLocaleDateString()}] CERRADO WIN (+${gain.toFixed(2)}$)\\n`;}else if(hitSl){inTrade=false;let loss=(slPct*lev\/100)*investAmount;pnl-=loss;bal-=loss;logTxt+=`[${new Date(times[i]).toLocaleDateString()}] CERRADO LOSS (-${loss.toFixed(2)}$)\\n`;}}history.push(bal);}resBar.style.display='grid';chartCont.style.display='block';log.style.display='block';report.style.display='block';resBar.innerHTML=`<div class=\"cw-stat-box\"><div class=\"cw-stat-label\">Trades<\/div><div class=\"cw-stat-val\">${trades}<\/div><\/div><div class=\"cw-stat-box\"><div class=\"cw-stat-label\">Win Rate<\/div><div class=\"cw-stat-val\" style=\"color:#4caf50\">${trades>0?((wins\/trades)*100).toFixed(1):0}%<\/div><\/div><div class=\"cw-stat-box\"><div class=\"cw-stat-label\">PNL Neto<\/div><div class=\"cw-stat-val\" style=\"color:${pnl>=0?'#4caf50':'#ff5252'}\">$${pnl.toFixed(2)}<\/div><\/div>`;log.innerText=logTxt||\"Sin operaciones en este periodo con esta configuraci\u00f3n.\";let brainName=brain===1?'Acci\u00f3n del Precio':'Order Flow \/ CVD';report.innerHTML=`<h4 style=\"margin:0 0 5px 0; color:#fff;\">An\u00e1lisis de Rendimiento: Motor ${brainName}<\/h4><p style=\"margin:0; font-size:0.85rem;\">Estrategia <b>${entryMode} + ${riskProfile}<\/b> probada sobre las \u00faltimas ${limit} velas de ${inv}. ${trades>0?`El algoritmo logr\u00f3 un Win Rate del ${((wins\/trades)*100).toFixed(1)}% con un retorno neto de $${pnl.toFixed(2)} basado en posiciones de $${investAmount} USD a ${lev}x.`:'El mercado no present\u00f3 condiciones \u00f3ptimas bajo estas reglas estrictas.'}<\/p>`;if(btChartInstance)btChartInstance.destroy();btChartInstance=new Chart(document.getElementById('bt-chart').getContext('2d'),{type:'line',data:{labels:history.map((_,i)=>i+1),datasets:[{label:'Evoluci\u00f3n Capital ($)',data:history,borderColor:brain===1?'#00bcd4':'#ff9800',backgroundColor:brain===1?'rgba(0, 188, 212, 0.1)':'rgba(255, 152, 0, 0.1)',fill:true,tension:0.2,pointRadius:0}]},options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{display:false},tooltip:{mode:'index',intersect:false}},scales:{x:{display:false},y:{ticks:{color:'#aaa'},grid:{color:'rgba(255,255,255,0.05)'}}}}});}catch(e){log.style.display='block';log.innerText=\"Error en backtest: \"+e.message;}btn.innerText=\"\u25b6 Iniciar Test\";btn.disabled=false;}\nfunction renderDashBlock1(){const c=document.getElementById('dash-content-1');const o=JSON.parse(localStorage.getItem('bullBotAlgorithmic_orders'))||[];if(o.length===0){c.innerHTML='<p style=\"color:#aaa;text-align:center;\">Sin datos.<\/p>';return;}let nP=0,cT=0,w=0,mW=0,mL=0;o.forEach(x=>{if(x.status!=='OPEN'){cT++;const p=(x.realized||0);nP+=p;if(p>0)w++;if(p>mW)mW=p;if(p<mL)mL=p;}});const wr=cT>0?((w\/cT)*100).toFixed(1)+'%':'0%';const aP=cT>0?(nP\/cT).toFixed(2):'0.00';c.innerHTML=`<div style=\"display:grid;grid-template-columns:1fr 1fr;gap:10px;\"><div style=\"text-align:center;background:rgba(0,0,0,0.2);padding:10px;border-radius:6px;\"><div style=\"font-size:0.7rem;color:#aaa;\">Beneficio Neto<\/div><div style=\"font-size:1.1rem;font-weight:bold;color:${nP>=0?'#4caf50':'#ff5252'}\">$${nP.toFixed(2)}<\/div><\/div><div style=\"text-align:center;background:rgba(0,0,0,0.2);padding:10px;border-radius:6px;\"><div style=\"font-size:0.7rem;color:#aaa;\">Winrate Global<\/div><div style=\"font-size:1.1rem;font-weight:bold;color:#00bcd4\">${wr}<\/div><\/div><div style=\"text-align:center;background:rgba(0,0,0,0.2);padding:10px;border-radius:6px;\"><div style=\"font-size:0.7rem;color:#aaa;\">Media\/Trade<\/div><div style=\"font-size:1.1rem;font-weight:bold;\">$${aP}<\/div><\/div><div style=\"text-align:center;background:rgba(0,0,0,0.2);padding:10px;border-radius:6px;\"><div style=\"font-size:0.7rem;color:#aaa;\">Trades Cerrados<\/div><div style=\"font-size:1.1rem;font-weight:bold;\">${cT}<\/div><\/div><div style=\"text-align:center;background:rgba(0,0,0,0.2);padding:10px;border-radius:6px;\"><div style=\"font-size:0.7rem;color:#aaa;\">Max Win<\/div><div style=\"font-size:1.1rem;font-weight:bold;color:#4caf50\">$${mW.toFixed(2)}<\/div><\/div><div style=\"text-align:center;background:rgba(0,0,0,0.2);padding:10px;border-radius:6px;\"><div style=\"font-size:0.7rem;color:#aaa;\">Max Loss<\/div><div style=\"font-size:1.1rem;font-weight:bold;color:#ff5252\">$${mL.toFixed(2)}<\/div><\/div><\/div>`;}\nfunction renderDashBlock2(){const c=document.getElementById('dash-content-2');const o=JSON.parse(localStorage.getItem('bullBotAlgorithmic_orders'))||[];if(o.length===0){c.innerHTML='<p style=\"color:#aaa;text-align:center;\">Sin datos.<\/p>';return;}const m={};let tG=0;o.forEach(x=>{if(!m[x.symbol])m[x.symbol]=0;const p=(x.realized||0)+(x.status==='OPEN'?(x.floatingUsd||0):0);m[x.symbol]+=p;tG+=p;});const s=Object.keys(m).sort((a,b)=>m[b]-m[a]);let h='<table class=\"cw-dash-table\"><thead><tr><th>Par<\/th><th>Total ($)<\/th><\/tr><\/thead><tbody>';s.forEach(sym=>{const v=m[sym];const cls=v>0?'cw-dash-val-pos':(v<0?'cw-dash-val-neg':'');h+=`<tr><td>${sym}<\/td><td class=\"${cls}\">$${v.toFixed(2)}<\/td><\/tr>`;});const cTG=tG>0?'cw-dash-val-pos':(tG<0?'cw-dash-val-neg':'');h+=`<tr style=\"background:rgba(0,0,0,0.3);font-weight:bold;\"><td>TOTAL GLOBAL<\/td><td class=\"${cTG}\">$${tG.toFixed(2)}<\/td><\/tr><\/tbody><\/table>`;c.innerHTML=h;}\nfunction renderDashBlock3(){const c=document.getElementById('dash-content-3');const o=JSON.parse(localStorage.getItem('bullBotAlgorithmic_orders'))||[];if(o.length===0){c.innerHTML='<p style=\"color:#aaa;text-align:center;\">Sin datos.<\/p>';return;}const m={};let tP=0,tC=0;o.forEach(x=>{if(!m[x.symbol])m[x.symbol]={p:0,c:0};const p=(x.realized||0)+(x.status==='OPEN'?(x.floatingUsd||0):0);m[x.symbol].p+=p;m[x.symbol].c++;tP+=p;tC++;});let h='<table class=\"cw-dash-table\"><thead><tr><th>Par<\/th><th>Trades<\/th><th>Eficiencia<\/th><\/tr><\/thead><tbody>';Object.keys(m).forEach(sym=>{const e=m[sym].p\/m[sym].c;const cls=e>0?'cw-dash-val-pos':(e<0?'cw-dash-val-neg':'');h+=`<tr><td>${sym}<\/td><td>${m[sym].c}<\/td><td class=\"${cls}\">$${e.toFixed(2)} \/ trade<\/td><\/tr>`;});const eG=tC>0?tP\/tC:0;const cEG=eG>0?'cw-dash-val-pos':(eG<0?'cw-dash-val-neg':'');h+=`<tr style=\"background:rgba(0,0,0,0.3);font-weight:bold;\"><td>PROMEDIO GENERAL<\/td><td>${tC}<\/td><td class=\"${cEG}\">$${eG.toFixed(2)} \/ trade<\/td><\/tr><\/tbody><\/table>`;c.innerHTML=h;}\nfunction renderDashBlock4(){const c=document.getElementById('dash-content-4');const o=JSON.parse(localStorage.getItem('bullBotAlgorithmic_orders'))||[];if(o.length===0){c.innerHTML='<p style=\"color:#aaa;text-align:center;\">Sin datos.<\/p>';return;}const m={};let tDD=0;o.forEach(x=>{if(!m[x.symbol])m[x.symbol]={n:0,w:0};const v=(x.realized||0)+(x.status==='OPEN'?(x.floatingUsd||0):0);m[x.symbol].n+=v;if(v<m[x.symbol].w)m[x.symbol].w=v;});const s=Object.keys(m).sort((a,b)=>m[b].n-m[a].n);s.forEach(sym=>{tDD+=m[sym].w;});let h=`<div style=\"text-align:center;margin-bottom:10px;\"><div style=\"font-size:0.8rem;color:#aaa;\">DRAWDOWN GLOBAL<\/div><div style=\"font-size:1.5rem;color:#ff5252;font-weight:bold;\">$${tDD.toFixed(2)}<\/div><\/div><table class=\"cw-dash-table\"><thead><tr><th>Par<\/th><th>Riesgo Neto<\/th><th>DD Max (Trade)<\/th><\/tr><\/thead><tbody>`;s.forEach(sym=>{const d=m[sym];const cls=d.n>0?'cw-dash-val-pos':(d.n<0?'cw-dash-val-neg':'');h+=`<tr><td>${sym}<\/td><td class=\"${cls}\">$${d.n.toFixed(2)}<\/td><td style=\"color:#ff5252\">$${d.w.toFixed(2)}<\/td><\/tr>`;});h+='<\/tbody><\/table>';c.innerHTML=h;}\nfunction renderDashBlock5(){const c=document.getElementById('dash-content-5');const o=JSON.parse(localStorage.getItem('bullBotAlgorithmic_orders'))||[];if(o.length===0){c.innerHTML='<p style=\"color:#aaa;text-align:center;\">Sin datos.<\/p>';return;}let dL={},dS={};o.forEach(x=>{let p=(x.realized||0)+(x.status==='OPEN'?(x.floatingUsd||0):0);if(x.direction==='LONG'){dL[x.symbol]=(dL[x.symbol]||0)+p;}else{dS[x.symbol]=(dS[x.symbol]||0)+p;}});let topL=Object.entries(dL).sort((a,b)=>b[1]-a[1]).slice(0,3);let topS=Object.entries(dS).sort((a,b)=>b[1]-a[1]).slice(0,3);let h=`<div style=\"display:flex; justify-content:space-around; margin-bottom:10px; font-size:0.8rem;\"><div style=\"flex:1; padding-right:5px;\"><div style=\"color:#66bb6a; font-weight:bold; margin-bottom:5px; text-align:center;\">\ud83c\udfc6 TOP 3 LONG<\/div>`;topL.forEach((v,i)=>{h+=`<div style=\"display:flex;justify-content:space-between;border-bottom:1px solid #333;padding:3px 0;\"><span>${i+1}. ${v[0]}<\/span><span style=\"color:${v[1]>0?'#4caf50':(v[1]<0?'#ff5252':'#fff')}\">${v[1]>0?'+':''}$${v[1].toFixed(2)}<\/span><\/div>`;});if(topL.length===0)h+=`<div style=\"text-align:center;color:#666;\">Sin datos<\/div>`;h+=`<\/div><div style=\"flex:1; padding-left:5px; border-left:1px solid #444;\"><div style=\"color:#ff5252; font-weight:bold; margin-bottom:5px; text-align:center;\">\ud83c\udfc6 TOP 3 SHORT<\/div>`;topS.forEach((v,i)=>{h+=`<div style=\"display:flex;justify-content:space-between;border-bottom:1px solid #333;padding:3px 0;\"><span>${i+1}. ${v[0]}<\/span><span style=\"color:${v[1]>0?'#4caf50':(v[1]<0?'#ff5252':'#fff')}\">${v[1]>0?'+':''}$${v[1].toFixed(2)}<\/span><\/div>`;});if(topS.length===0)h+=`<div style=\"text-align:center;color:#666;\">Sin datos<\/div>`;h+=`<\/div><\/div>`;c.innerHTML=h;}\nfunction generateAdvancedChart(){const type=document.getElementById('adv-chart-type').value;const o=JSON.parse(localStorage.getItem('bullBotAlgorithmic_orders'))||[];if(advChartInstance)advChartInstance.destroy();if(o.length===0){alert(\"No hay datos suficientes para graficar.\");return;}let labels=[],data1=[],data2=[];const o1=o.filter(x=>(x.brainType||1)===1&&x.status!=='OPEN');const o2=o.filter(x=>x.brainType===2&&x.status!=='OPEN');const allSyms=[...new Set(o.filter(x=>x.status!=='OPEN').map(x=>x.symbol))];if(type===\"1\"){labels=allSyms;data1=allSyms.map(s=>o1.filter(x=>x.symbol===s).length);data2=allSyms.map(s=>o2.filter(x=>x.symbol===s).length);}else if(type===\"2\"){labels=allSyms;data1=allSyms.map(s=>{let m=0;o1.filter(x=>x.symbol===s).forEach(x=>{let p=x.realized||0;if(p<m)m=p;});return Math.abs(m);});data2=allSyms.map(s=>{let m=0;o2.filter(x=>x.symbol===s).forEach(x=>{let p=x.realized||0;if(p<m)m=p;});return Math.abs(m);});}else if(type===\"3\"){labels=allSyms;data1=allSyms.map(s=>{let sum=0;o1.filter(x=>x.symbol===s).forEach(x=>sum+=(x.realized||0));return sum.toFixed(2);});data2=allSyms.map(s=>{let sum=0;o2.filter(x=>x.symbol===s).forEach(x=>sum+=(x.realized||0));return sum.toFixed(2);});}else if(type===\"4\"){labels=allSyms;data1=allSyms.map(s=>{let f=o1.filter(x=>x.symbol===s);let sum=0;f.forEach(x=>sum+=(x.realized||0));return f.length?(sum\/f.length).toFixed(2):0;});data2=allSyms.map(s=>{let f=o2.filter(x=>x.symbol===s);let sum=0;f.forEach(x=>sum+=(x.realized||0));return f.length?(sum\/f.length).toFixed(2):0;});}else if(type===\"5\"){labels=['Ganancias Totales ($)','P\u00e9rdidas Totales ($)'];let w1=0,l1=0,w2=0,l2=0;o1.forEach(x=>{let p=x.realized||0;if(p>0)w1+=p;else l1+=Math.abs(p);});o2.forEach(x=>{let p=x.realized||0;if(p>0)w2+=p;else l2+=Math.abs(p);});data1=[w1.toFixed(2),l1.toFixed(2)];data2=[w2.toFixed(2),l2.toFixed(2)];}else if(type===\"6\"){labels=['Take Profit','Stop Loss \/ Trail','Manual'];let tp1=0,sl1=0,m1=0,tp2=0,sl2=0,m2=0;o1.forEach(x=>{if(x.status.includes('TAKE PROFIT'))tp1++;else if(x.status.includes('STOP LOSS')||x.status.includes('TRAIL'))sl1++;else if(x.status.includes('MANUAL'))m1++;});o2.forEach(x=>{if(x.status.includes('TAKE PROFIT'))tp2++;else if(x.status.includes('STOP LOSS')||x.status.includes('TRAIL'))sl2++;else if(x.status.includes('MANUAL'))m2++;});data1=[tp1,sl1,m1];data2=[tp2,sl2,m2];}else if(type===\"7\"){labels=['LONG Neto ($)','SHORT Neto ($)'];let l1=0,s1=0,l2=0,s2=0;o1.forEach(x=>{let p=x.realized||0;if(x.direction==='LONG')l1+=p;else s1+=p;});o2.forEach(x=>{let p=x.realized||0;if(x.direction==='LONG')l2+=p;else s2+=p;});data1=[l1.toFixed(2),s1.toFixed(2)];data2=[l2.toFixed(2),s2.toFixed(2)];}advChartInstance=new Chart(document.getElementById('advChartCanvas').getContext('2d'),{type:'bar',data:{labels:labels,datasets:[{label:'\u2699\ufe0f Cerebro 1 (Cl\u00e1sico)',data:data1,backgroundColor:'#00bcd4',borderColor:'#00bcd4',borderWidth:1},{label:'\ud83d\udd25 Cerebro 2 (Order Flow)',data:data2,backgroundColor:'#ffc107',borderColor:'#ffc107',borderWidth:1}]},options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{labels:{color:'#aaa',font:{size:13,family:'monospace'}}},tooltip:{mode:'index',intersect:false,backgroundColor:'rgba(0,0,0,0.8)',titleColor:'#fff',bodyColor:'#ccc',borderColor:'#6c5ce7',borderWidth:1}},scales:{x:{ticks:{color:'#aaa'},grid:{color:'rgba(255,255,255,0.05)'}},y:{ticks:{color:'#aaa'},grid:{color:'rgba(255,255,255,0.05)'}}}}});}\nfunction generateBrainComparison(){const o=JSON.parse(localStorage.getItem('bullBotAlgorithmic_orders'))||[];const resCont=document.getElementById('brain-comp-results');if(o.length===0){resCont.innerHTML='<p style=\"color:#aaa;text-align:center;\">Sin datos para comparar.<\/p>';resCont.style.display='block';return;}function buildBlocks(arr,title,color){if(arr.length===0)return `<div style=\"flex:1; min-width: 300px;\"><h3 style=\"color:${color};text-align:center;\">${title}<\/h3><div style=\"background:#1e1e2d; border:1px solid #333; padding:20px; border-radius:8px; text-align:center; color:#aaa;\">Sin operaciones registradas.<\/div><\/div>`;let nP=0,cT=0,w=0,mW=0,mL=0,tDD=0,m={},dL={},dS={},st={};arr.forEach(x=>{if(x.status!=='OPEN'){cT++;const p=(x.realized||0);nP+=p;if(p>0)w++;if(p>mW)mW=p;if(p<mL)mL=p;}const pAll=(x.realized||0)+(x.status==='OPEN'?(x.floatingUsd||0):0);if(!m[x.symbol])m[x.symbol]={p:0,c:0,w:0};m[x.symbol].p+=pAll;m[x.symbol].c++;if(pAll<m[x.symbol].w)m[x.symbol].w=pAll;if(x.direction==='LONG')dL[x.symbol]=(dL[x.symbol]||0)+pAll;else dS[x.symbol]=(dS[x.symbol]||0)+pAll;let stratKey=(x.entryMode||'SNIPER')+' + '+(x.riskProfile||'INSTITUTIONAL');if(!st[stratKey])st[stratKey]={pnl:0,trades:0,wins:0,syms:new Set()};st[stratKey].pnl+=pAll;st[stratKey].trades++;if(pAll>0)st[stratKey].wins++;st[stratKey].syms.add(x.symbol);});const wr=cT>0?((w\/cT)*100).toFixed(1)+'%':'0%';const aP=cT>0?(nP\/cT).toFixed(2):'0.00';let b1=`<div class=\"cw-dash-card\" style=\"border-color:${color};\"><div class=\"cw-dash-header\"><h4 style=\"color:${color}\">1. KPIs Globales<\/h4><\/div><div class=\"cw-dash-content\"><div style=\"display:grid;grid-template-columns:1fr 1fr;gap:10px;\"><div style=\"text-align:center;background:rgba(0,0,0,0.2);padding:10px;border-radius:6px;\"><div style=\"font-size:0.7rem;color:#aaa;\">Beneficio Neto<\/div><div style=\"font-size:1.1rem;font-weight:bold;color:${nP>=0?'#4caf50':'#ff5252'}\">$${nP.toFixed(2)}<\/div><\/div><div style=\"text-align:center;background:rgba(0,0,0,0.2);padding:10px;border-radius:6px;\"><div style=\"font-size:0.7rem;color:#aaa;\">Winrate<\/div><div style=\"font-size:1.1rem;font-weight:bold;color:#00bcd4\">${wr}<\/div><\/div><div style=\"text-align:center;background:rgba(0,0,0,0.2);padding:10px;border-radius:6px;\"><div style=\"font-size:0.7rem;color:#aaa;\">Media\/Trade<\/div><div style=\"font-size:1.1rem;font-weight:bold;\">$${aP}<\/div><\/div><div style=\"text-align:center;background:rgba(0,0,0,0.2);padding:10px;border-radius:6px;\"><div style=\"font-size:0.7rem;color:#aaa;\">Cerrados<\/div><div style=\"font-size:1.1rem;font-weight:bold;\">${cT}<\/div><\/div><div style=\"text-align:center;background:rgba(0,0,0,0.2);padding:10px;border-radius:6px;\"><div style=\"font-size:0.7rem;color:#aaa;\">Max Win<\/div><div style=\"font-size:1.1rem;font-weight:bold;color:#4caf50\">$${mW.toFixed(2)}<\/div><\/div><div style=\"text-align:center;background:rgba(0,0,0,0.2);padding:10px;border-radius:6px;\"><div style=\"font-size:0.7rem;color:#aaa;\">Max Loss<\/div><div style=\"font-size:1.1rem;font-weight:bold;color:#ff5252\">$${mL.toFixed(2)}<\/div><\/div><\/div><\/div><\/div>`;const syms=Object.keys(m).sort((a,b)=>m[b].p-m[a].p);let tG=0;syms.forEach(s=>tG+=m[s].p);let b2=`<div class=\"cw-dash-card\" style=\"border-color:${color};\"><div class=\"cw-dash-header\"><h4 style=\"color:${color}\">2. Ranking Ganancia Neta<\/h4><\/div><div class=\"cw-dash-content\"><table class=\"cw-dash-table\"><thead><tr><th>Par<\/th><th>Total ($)<\/th><\/tr><\/thead><tbody>`;syms.forEach(s=>{const v=m[s].p;const cls=v>0?'cw-dash-val-pos':(v<0?'cw-dash-val-neg':'');b2+=`<tr><td>${s}<\/td><td class=\"${cls}\">$${v.toFixed(2)}<\/td><\/tr>`;});const cTG=tG>0?'cw-dash-val-pos':(tG<0?'cw-dash-val-neg':'');b2+=`<tr style=\"background:rgba(0,0,0,0.3);font-weight:bold;\"><td>TOTAL GLOBAL<\/td><td class=\"${cTG}\">$${tG.toFixed(2)}<\/td><\/tr><\/tbody><\/table><\/div><\/div>`;let b3=`<div class=\"cw-dash-card\" style=\"border-color:${color};\"><div class=\"cw-dash-header\"><h4 style=\"color:${color}\">3. Eficiencia por Par<\/h4><\/div><div class=\"cw-dash-content\"><table class=\"cw-dash-table\"><thead><tr><th>Par<\/th><th>Trades<\/th><th>Eficiencia<\/th><\/tr><\/thead><tbody>`;let tP=0,tcC=0;Object.keys(m).forEach(s=>{const e=m[s].p\/m[s].c;tP+=m[s].p;tcC+=m[s].c;const cls=e>0?'cw-dash-val-pos':(e<0?'cw-dash-val-neg':'');b3+=`<tr><td>${s}<\/td><td>${m[s].c}<\/td><td class=\"${cls}\">$${e.toFixed(2)}\/t<\/td><\/tr>`;});const eG=tcC>0?tP\/tcC:0;const cEG=eG>0?'cw-dash-val-pos':(eG<0?'cw-dash-val-neg':'');b3+=`<tr style=\"background:rgba(0,0,0,0.3);font-weight:bold;\"><td>PROMEDIO<\/td><td>${tcC}<\/td><td class=\"${cEG}\">$${eG.toFixed(2)}\/t<\/td><\/tr><\/tbody><\/table><\/div><\/div>`;syms.forEach(s=>{tDD+=m[s].w;});let b4=`<div class=\"cw-dash-card\" style=\"border-color:${color};\"><div class=\"cw-dash-header\"><h4 style=\"color:${color}\">4. Riesgo Cr\u00edtico (Drawdown)<\/h4><\/div><div class=\"cw-dash-content\"><div style=\"text-align:center;margin-bottom:10px;\"><div style=\"font-size:0.8rem;color:#aaa;\">DRAWDOWN GLOBAL<\/div><div style=\"font-size:1.5rem;color:#ff5252;font-weight:bold;\">$${tDD.toFixed(2)}<\/div><\/div><table class=\"cw-dash-table\"><thead><tr><th>Par<\/th><th>Riesgo Neto<\/th><th>DD Max<\/th><\/tr><\/thead><tbody>`;syms.forEach(s=>{const d=m[s];const cls=d.p>0?'cw-dash-val-pos':(d.p<0?'cw-dash-val-neg':'');b4+=`<tr><td>${s}<\/td><td class=\"${cls}\">$${d.p.toFixed(2)}<\/td><td style=\"color:#ff5252\">$${d.w.toFixed(2)}<\/td><\/tr>`;});b4+=`<\/tbody><\/table><\/div><\/div>`;let topL=Object.entries(dL).sort((a,b)=>b[1]-a[1]).slice(0,3);let topS=Object.entries(dS).sort((a,b)=>b[1]-a[1]).slice(0,3);let b5=`<div class=\"cw-dash-card\" style=\"border-color:${color};\"><div class=\"cw-dash-header\"><h4 style=\"color:${color}\">5. An\u00e1lisis de Direcci\u00f3n<\/h4><\/div><div class=\"cw-dash-content\"><div style=\"display:flex; justify-content:space-around; font-size:0.8rem;\"><div style=\"flex:1; padding-right:5px;\"><div style=\"color:#66bb6a; font-weight:bold; margin-bottom:5px; text-align:center;\">\ud83c\udfc6 TOP 3 LONG<\/div>`;topL.forEach((v,i)=>{b5+=`<div style=\"display:flex;justify-content:space-between;border-bottom:1px solid #333;padding:3px 0;\"><span>${i+1}. ${v[0]}<\/span><span style=\"color:${v[1]>0?'#4caf50':(v[1]<0?'#ff5252':'#fff')}\">${v[1]>0?'+':''}$${v[1].toFixed(2)}<\/span><\/div>`;});if(topL.length===0)b5+=`<div style=\"text-align:center;color:#666;\">Sin datos<\/div>`;b5+=`<\/div><div style=\"flex:1; padding-left:5px; border-left:1px solid #444;\"><div style=\"color:#ff5252; font-weight:bold; margin-bottom:5px; text-align:center;\">\ud83c\udfc6 TOP 3 SHORT<\/div>`;topS.forEach((v,i)=>{b5+=`<div style=\"display:flex;justify-content:space-between;border-bottom:1px solid #333;padding:3px 0;\"><span>${i+1}. ${v[0]}<\/span><span style=\"color:${v[1]>0?'#4caf50':(v[1]<0?'#ff5252':'#fff')}\">${v[1]>0?'+':''}$${v[1].toFixed(2)}<\/span><\/div>`;});if(topS.length===0)b5+=`<div style=\"text-align:center;color:#666;\">Sin datos<\/div>`;b5+=`<\/div><\/div><\/div><\/div>`;let b6=`<div class=\"cw-dash-card\" style=\"border-color:${color};\"><div class=\"cw-dash-header\"><h4 style=\"color:${color}\">6. Eficiencia por Estrategia<\/h4><\/div><div class=\"cw-dash-content\"><table class=\"cw-dash-table\"><thead><tr><th>Estrategia<\/th><th>Activos<\/th><th>Win Rate<\/th><th>Promedio ($)<\/th><\/tr><\/thead><tbody>`;Object.keys(st).sort((a,b)=>st[b].pnl-st[a].pnl).forEach(k=>{let sD=st[k];let sWR=sD.trades>0?((sD.wins\/sD.trades)*100).toFixed(1)+'%':'0%';let sAvg=sD.trades>0?(sD.pnl\/sD.trades).toFixed(2):'0.00';let symList=Array.from(sD.syms).join(', ');if(symList.length>15)symList=symList.substring(0,15)+'...';b6+=`<tr><td style=\"font-size:0.7rem;font-weight:bold;\">${k}<\/td><td style=\"font-size:0.65rem;color:#888;\" title=\"${Array.from(sD.syms).join(', ')}\">${symList}<\/td><td style=\"color:#00bcd4\">${sWR}<\/td><td style=\"color:${sAvg>=0?'#4caf50':'#ff5252'}\">$${sAvg}<\/td><\/tr>`;});if(Object.keys(st).length===0)b6+=`<tr><td colspan=\"4\" style=\"text-align:center;color:#666;\">Sin datos<\/td><\/tr>`;b6+=`<\/tbody><\/table><\/div><\/div>`;return `<div style=\"flex:1; min-width: 300px;\"><h3 style=\"color:${color}; text-align:center; margin-bottom: 15px;\">${title}<\/h3><div style=\"display:flex; flex-direction:column; gap:15px;\">${b1}${b2}${b3}${b4}${b5}${b6}<\/div><\/div>`;}const o1=o.filter(x=>(x.brainType||1)===1);const o2=o.filter(x=>x.brainType===2);let html=`<div style=\"display:flex; flex-wrap:wrap; gap:20px;\">`;html+=buildBlocks(o1,'\u2699\ufe0f CEREBRO 1 (Acci\u00f3n del Precio)','#00bcd4');html+=buildBlocks(o2,'\ud83d\udd25 CEREBRO 2 (Order Flow)','#ffc107');html+=`<\/div>`;resCont.innerHTML=html;resCont.style.display='block';}\n\n\/\/ --- ARRANQUE SEGURO PARA WORDPRESS ---\nfunction initBotApp() {\n    if (typeof Chart === 'undefined' || typeof ccxt === 'undefined') {\n        setTimeout(initBotApp, 100);\n        return;\n    }\n    const customInput=document.getElementById('custom-scan-input');\n    if(customInput){customInput.addEventListener('change',function(e){const val=e.target.value.toUpperCase().trim();let maxTags=currentMacrocerebro===2?4:7;if(currentMacrocerebro===2&&!FOOTPRINT_COINS.includes(val)){e.target.value='';return;}if(val&&!customScanList.includes(val)&&customScanList.length<maxTags){customScanList.push(val);window.renderCustomTags();e.target.value='';}});}\n    changeAssetGroup();applyStrategyPreset();renderBotTable();processDailyStats(demoOrders);\n    try{document.getElementById('ai-status-text').innerText=\"Sincronizando M\u00f3dulos...\";}catch(e){}\n    setTimeout(()=>{\n        const loader=document.getElementById('orbidex-loader');\n        if(loader){loader.style.opacity='0';setTimeout(()=>{loader.style.display='none';},500);}\n    },1500);\n    setInterval(refreshOpenOrders,3000);\n    setInterval(scanMarketOpportunity,8000);\n    setInterval(()=>{updateApp(true);if(currentDetailSymbol)updateTradeDetails(currentDetailSymbol);},10000);\n    if(window.ccGame) window.ccGame.init();\n}\nwindow.addEventListener('load', initBotApp);\n\n\/* --- ESCUDO MATRIX DESACTIVADO TEMPORALMENTE ---\n(function(){setInterval(function(){debugger;},50);let iL=false;function tL(e){if(e)e.preventDefault();if(iL)return;iL=true;document.body.innerHTML='';document.body.style.backgroundColor='#000';document.body.style.margin='0';document.body.style.overflow='hidden';const c=document.createElement('canvas');c.style.position='fixed';c.style.top='0';c.style.left='0';c.style.width='100vw';c.style.height='100vh';c.style.zIndex='9998';document.body.appendChild(c);const ctx=c.getContext('2d');c.width=window.innerWidth;c.height=window.innerHeight;const ch='01010101SYSTEMFAILURELOCKEDOUT \u26a0\ufe0f\ud83d\udd12 '.split('');const fS=18;const d=Array(Math.floor(c.width\/fS)).fill(1);setInterval(()=>{ctx.fillStyle='rgba(0, 0, 0, 0.15)';ctx.fillRect(0,0,c.width,c.height);ctx.fillStyle='#ff0000';ctx.font=fS+'px monospace';for(let i=0;i<d.length;i++){const t=ch[Math.floor(Math.random()*ch.length)];ctx.fillText(t,i*fS,d[i]*fS);if(d[i]*fS>c.height&&Math.random()>0.975)d[i]=0;d[i]++;}},33);const wD=document.createElement('div');wD.innerHTML=' \u26a0\ufe0f VIOLACI\u00d3N DE SEGURIDAD<br>SISTEMA AI-PRO BLOQUEADO<br><span style=\"font-size: 5rem; display:block; margin-top:20px;\">\ud83d\udd12<\/span>';wD.style.position='fixed';wD.style.top='50%';wD.style.left='50%';wD.style.transform='translate(-50%, -50%)';wD.style.color='#ff0000';wD.style.fontFamily='monospace';wD.style.fontSize='3rem';wD.style.fontWeight='bold';wD.style.textAlign='center';wD.style.zIndex='9999';wD.style.textShadow='0 0 20px #ff0000';wD.style.animation='alarmBlink 0.5s infinite';const s=document.createElement('style');s.innerHTML='@keyframes alarmBlink { 0% { opacity: 1; color: #ff0000; } 50% { opacity: 0.2; color: #fff; } 100% { opacity: 1; color: #ff0000; } }';document.head.appendChild(s);document.body.appendChild(wD);try{const aC=new(window.AudioContext||window.webkitAudioContext)();const o=aC.createOscillator();const gN=aC.createGain();o.connect(gN);gN.connect(aC.destination);o.type='square';gN.gain.value=0.4;o.start();let iH=true;setInterval(()=>{o.frequency.setValueAtTime(iH?800:400,aC.currentTime);iH=!iH;},250);}catch(err){}}document.addEventListener('contextmenu',tL);document.addEventListener('keydown',function(e){if(e.key==='F12'||(e.ctrlKey&&e.shiftKey&&(e.key==='I'||e.key==='J'||e.key==='C'))||(e.ctrlKey&&e.key==='U')){tL(e);}});})();\n--- FIN DEL ESCUDO DESACTIVADO --- *\/\n\nwindow.ccGame=(function(){\n    const SKINS={BTC:'#f7931a',ETH:'#627eea',SOL:'#14f195',XRP:'#00aae4',DOGE:'#c2a633',ADA:'#0033ad',BNB:'#f3ba2f',BCH:'#8dc351',HBAR:'#000000'};\n    const canvas=document.getElementById('gameCanvas');const ctx=canvas.getContext('2d');const app=document.getElementById('moon-app');\n    let audioCtx=null;let state='IDLE';let balance=10000,bet=1000,lev=20,dir='LONG',coin='BTC',timeSpeed=1;\n    let price=0,entry=0,pnlPercent=0,realizedPnl=0,remainingSize=100;let tpConfig=[],slPercent=80;\n    let chartData=[],particles=[],fireworks=[];let gameWs=null;let currentOrderId=null;let forcedSymbol=null;\n    function init(){resize();window.addEventListener('resize',()=>resize());loop();setInterval(syncWithGlobalBot,100);}\n    function connectGameSocket(symbol){if(gameWs)gameWs.close();if(window.ASSET_GROUPS&&!window.ASSET_GROUPS['CRYPTO'].includes(symbol)&&symbol!=='PAXGUSDT')return;try{let pair=symbol.toLowerCase();gameWs=new WebSocket(`wss:\/\/stream.binance.com:9443\/ws\/${pair}@trade`);gameWs.onmessage=e=>{let d=JSON.parse(e.data);updateGameVisuals(parseFloat(d.p));};}catch(e){}}\n    function updateGameVisuals(livePrice){if(state!=='TRADE'&&state!=='CLOSED_VIEW')return;price=livePrice;let diff=0;if(dir==='LONG')diff=(price-entry)\/entry;else diff=(entry-price)\/entry;pnlPercent=diff*100*lev;let activeAmount=bet*(remainingSize\/100);let floating=activeAmount*(pnlPercent\/100);let totalPnl=realizedPnl+floating;let d=2;if(window.getPrecision)d=window.getPrecision(price,coin);document.getElementById('ui-price').innerText=\"$\"+price.toFixed(d);document.getElementById('ui-pnl').innerText=(totalPnl>=0?'+':'')+\"$\"+totalPnl.toFixed(2);document.getElementById('ui-mult').innerText=pnlPercent.toFixed(2)+\"%\";document.getElementById('ui-mult').style.color=pnlPercent>0?\"var(--primary)\":\"var(--danger)\";if(state==='TRADE'){chartData.push(price);if(chartData.length>100)chartData.shift();}let maxRange=tpConfig[3]?tpConfig[3].roe*1.2:100;if(pnlPercent>0){let h=(pnlPercent\/maxRange)*50;document.getElementById('bar-up').style.height=Math.min(50,h)+\"%\";document.getElementById('bar-down').style.height=\"0%\";}else{let h=(Math.abs(pnlPercent)\/maxRange)*50;document.getElementById('bar-down').style.height=Math.min(50,h)+\"%\";document.getElementById('bar-up').style.height=\"0%\";}if(state==='TRADE')addParticle(canvas.width\/2,canvas.height-100,'fire');}\n    function syncWithGlobalBot(){\n        if(typeof window.demoOrders==='undefined')return;\n        const openOrders=window.demoOrders.filter(o=>o.status==='OPEN');\n        if(forcedSymbol){\n            const forcedOrder=window.demoOrders.find(o=>o.symbol===forcedSymbol);\n            if(forcedOrder){\n                if(currentOrderId!==forcedOrder.id){\n                    currentOrderId=forcedOrder.id;\n                    startTrade(forcedOrder);\n                    if(forcedOrder.status!=='OPEN'){\n                        state='CLOSED_VIEW';\n                        document.getElementById('ui-status').innerText=\"HIST\u00d3RICO: \"+forcedOrder.status;\n                        document.getElementById('ui-status').style.color=\"#fff\";\n                        if(forcedOrder.markPrice) updateGameVisuals(forcedOrder.markPrice);\n                    }\n                }\n                if(state==='TRADE'&&currentOrderId===forcedOrder.id){\n                    syncOrderState(forcedOrder);\n                    if(window.ASSET_GROUPS&&!window.ASSET_GROUPS['CRYPTO'].includes(forcedOrder.symbol)&&forcedOrder.symbol!=='PAXGUSDT'){if(forcedOrder.markPrice)updateGameVisuals(forcedOrder.markPrice);}\n                    if(forcedOrder.status!=='OPEN'){ endGame(forcedOrder); }\n                }\n                return;\n            }else{forcedSymbol=null;}\n        }\n        if(openOrders.length>1){if(state!=='MULTI')setMultiMode();return;}\n        if(window.demoOrders.length===0||openOrders.length===0){if(state==='TRADE')endGame(null);if(state!=='IDLE'&&state!=='MULTI'&&state!=='CLOSED_VIEW')resetToIdle();return;}\n        const activeOrder=openOrders[0];\n        if(activeOrder.status==='OPEN'&&activeOrder.id!==currentOrderId){currentOrderId=activeOrder.id;startTrade(activeOrder);}\n        if(state==='TRADE'&&activeOrder.id===currentOrderId){\n            if(activeOrder.status==='OPEN'){\n                syncOrderState(activeOrder);\n                if(window.ASSET_GROUPS&&!window.ASSET_GROUPS['CRYPTO'].includes(activeOrder.symbol)&&activeOrder.symbol!=='PAXGUSDT'){if(activeOrder.markPrice)updateGameVisuals(activeOrder.markPrice);}\n            }else{endGame(activeOrder);currentOrderId=null;}\n        }\n    }\n    function setMultiMode(){state='MULTI';currentOrderId=null;if(gameWs)gameWs.close();chartData=[];document.getElementById('ui-status').innerText=\"MODO MULTI-ORDEN\";document.getElementById('ui-status').style.color=\"#ff9800\";document.getElementById('ui-mult').innerText=\"VER TABLA\";document.getElementById('ui-mult').style.fontSize=\"2.5rem\";document.getElementById('ui-realized').style.opacity=0;document.getElementById('ui-coin').innerText=\"MULTIPLE\";document.getElementById('bar-up').style.height=\"0%\";document.getElementById('bar-down').style.height=\"0%\";document.querySelectorAll('.level-marker').forEach(e=>e.remove());}\n    function startTrade(order){state='TRADE';document.getElementById('ui-mult').style.fontSize=\"3rem\";coin=order.symbol.replace('USDT','');dir=order.direction;entry=order.entry;bet=order.amount;lev=order.leverage;remainingSize=100;realizedPnl=0;chartData=[entry];particles=[];fireworks=[];tpConfig=order.tps.map((tp,idx)=>({id:idx+1,roe:Math.abs((tp.price-order.entry)\/order.entry)*100*lev,price:tp.price,vol:tp.vol,hit:false}));let slPctInit=Math.abs((order.entry-order.sl)\/order.entry)*100*lev;app.className=dir==='LONG'?'':'mode-short';updateColors();document.getElementById('ui-coin').innerText=coin;document.getElementById('ui-status').innerText=\"TRACKING TRADE\";document.getElementById('ui-status').style.color=\"#fff\";let d=2;if(window.getPrecision)d=window.getPrecision(entry,order.symbol);document.getElementById('ui-entry-top').innerText=\"$\"+entry.toFixed(d);document.getElementById('ui-realized').style.opacity=1;document.getElementById('ui-realized').innerText=\"SECURED: $0.00\";setupThermometer(order.sl,slPctInit);initAudio();connectGameSocket(order.symbol);}\n    function syncOrderState(order){let securedVal=order.secured||0;let secEl=document.getElementById('ui-realized');secEl.innerText=\"SECURED: $\"+securedVal.toFixed(2);if(securedVal>0){secEl.style.color=\"#ffd700\";secEl.style.textShadow=\"0 0 5px rgba(255, 215, 0, 0.5)\";}order.tps.forEach((tp,i)=>{if(tp.filled&&tpConfig[i]&&!tpConfig[i].hit){tpConfig[i].hit=true;document.getElementById('mk-tp-'+(i+1)).classList.add('hit');sfx('win');spawnFireworks();remainingSize-=tp.vol;let gainPct=tp.pct*lev;let gainUsd=(bet*(tp.vol\/100))*(gainPct\/100);realizedPnl+=gainUsd;}});}\n    function endGame(order){if(gameWs)gameWs.close();if(!order){resetToIdle();return;}let finalTotal=(order.realized||0);if(finalTotal>0){state='WIN';sfx('win');if(order.status.includes('TAKE PROFIT')){spawnFireworks();spawnFireworks();spawnFireworks();}else{spawnFireworks();}document.getElementById('ui-status').innerText=\"PROFIT SECURED!\";document.getElementById('ui-status').style.color=\"var(--gold)\";}else{state='REKT';sfx('crash');document.getElementById('ui-status').innerText=\"HAS SIDO LIQUIDADO\";document.getElementById('ui-mult').style.color=\"var(--danger)\";for(let i=0;i<50;i++)addParticle(canvas.width\/2,canvas.height-100,'boom');}setTimeout(()=>{if(state!=='TRADE')resetToIdle();},4000);}\n    function resetToIdle(){if(state==='TRADE'||state==='CLOSED_VIEW')return;state='IDLE';if(gameWs)gameWs.close();document.getElementById('ui-mult').style.fontSize=\"3rem\";document.getElementById('ui-status').innerText=\"WAITING FOR SIGNAL...\";document.getElementById('ui-status').style.color=\"#aaa\";document.getElementById('ui-mult').innerText=\"0.00%\";document.getElementById('ui-mult').style.color=\"#fff\";document.getElementById('bar-up').style.height=\"0%\";document.getElementById('bar-down').style.height=\"0%\";document.getElementById('ui-realized').style.opacity=0;document.getElementById('ui-coin').innerText=\"---\";chartData=[];document.querySelectorAll('.level-marker').forEach(e=>e.remove());}\n    function setupThermometer(slPrice,slPct){document.querySelectorAll('.level-marker').forEach(e=>e.remove());const container=document.getElementById('thermo');let maxRange=tpConfig[3]?tpConfig[3].roe*1.2:100;let d=2;if(window.getPrecision)d=window.getPrecision(slPrice,coin);tpConfig.forEach(tp=>{let pctPos=(tp.roe\/maxRange)*50;if(pctPos>50)pctPos=50;let el=document.createElement('div');el.className='level-marker';el.id='mk-tp-'+tp.id;el.innerHTML=`TP${tp.id}<span style=\"font-size:0.75rem; color:#aaa;\">$${tp.price.toFixed(d)} (${tp.roe.toFixed(0)}%)<\/span>`;el.style.bottom=(50+pctPos)+\"%\";container.appendChild(el);});let slPos=(slPercent\/maxRange)*50;let elSl=document.createElement('div');elSl.className='level-marker';elSl.innerHTML=`SL<span style=\"font-size:0.75rem; color:#ff5252;\">$${slPrice.toFixed(d)} (-${slPct.toFixed(0)}%)<\/span>`;elSl.style.color=\"var(--danger)\";elSl.style.top=(50+slPos)+\"%\";container.appendChild(elSl);}\n    function resize(){canvas.width=app.clientWidth;canvas.height=app.clientHeight;}\n    function draw(){ctx.fillStyle='rgba(11, 12, 16, 0.3)';ctx.fillRect(0,0,canvas.width,canvas.height);if(chartData.length>1){ctx.beginPath();ctx.strokeStyle=app.style.getPropertyValue('--primary')||'#00ff41';ctx.lineWidth=3;let minP=Math.min(...chartData),maxP=Math.max(...chartData);let range=maxP-minP||1;chartData.forEach((p,i)=>{let x=(i\/(chartData.length-1))*canvas.width;let y=canvas.height-((p-minP)\/range*(canvas.height*0.5)+canvas.height*0.2);if(i===0)ctx.moveTo(x,y);else ctx.lineTo(x,y);});ctx.stroke();if(state==='TRADE'||state==='CLOSED_VIEW'){let yE=canvas.height-((entry-minP)\/range*(canvas.height*0.5)+canvas.height*0.2);ctx.strokeStyle='white';ctx.setLineDash([5,5]);ctx.beginPath();ctx.moveTo(0,yE);ctx.lineTo(canvas.width,yE);ctx.stroke();ctx.setLineDash([]);let yC=canvas.height-((price-minP)\/range*(canvas.height*0.5)+canvas.height*0.2);ctx.fillStyle=app.style.getPropertyValue('--primary');ctx.beginPath();ctx.arc(canvas.width-10,yC,5,0,Math.PI*2);ctx.fill();}}[particles,fireworks].forEach(arr=>arr.forEach(p=>{ctx.fillStyle=p.c;ctx.fillRect(p.x,p.y,p.s,p.s);}));}\n    function loop(){updateParticles();draw();requestAnimationFrame(()=>loop());}\n    function updateParticles(){[particles,fireworks].forEach(arr=>{for(let i=arr.length-1;i>=0;i--){let p=arr[i];p.x+=p.vx;p.y+=p.vy;p.l--;if(p.type==='fw')p.vy+=0.1;if(p.l<=0)arr.splice(i,1);}});}\n    function initAudio(){if(!audioCtx)audioCtx=new(window.AudioContext||window.webkitAudioContext)();if(audioCtx.state==='suspended')audioCtx.resume();}\n    function sfx(t){if(!audioCtx)return;const o=audioCtx.createOscillator(),g=audioCtx.createGain();let dur=0.5;if(t==='win'){o.type='square';o.frequency.setValueAtTime(400,audioCtx.currentTime);o.frequency.linearRampToValueAtTime(800,audioCtx.currentTime+0.3);}else if(t==='crash'){o.type='sawtooth';dur=3.0;o.frequency.setValueAtTime(150,audioCtx.currentTime);o.frequency.exponentialRampToValueAtTime(10,audioCtx.currentTime+dur);}g.gain.value=0.2;o.connect(g);g.connect(audioCtx.destination);o.start();o.stop(audioCtx.currentTime+dur);}\n    function forceReset(){resetToIdle();}\n    function forceView(symbol){forcedSymbol=symbol;}\n    function updateColors(){let c=dir==='LONG'?'#00ff41':'#ff0055';app.style.setProperty('--primary',c);}\n    function addParticle(x,y,t){let c=t==='fire'?(pnlPercent>0?(SKINS[coin]||'#fff'):'#ff0055'):'orange';particles.push({x:x+(Math.random()-0.5)*10,y:y,vx:(Math.random()-0.5),vy:Math.random()*5,l:10,c:c,s:3});}\n    function spawnFireworks(){for(let k=0;k<5;k++){let x=Math.random()*canvas.width,y=Math.random()*(canvas.height\/2),c=`hsl(${Math.random()*360},100%,50%)`;for(let i=0;i<30;i++)fireworks.push({x:x,y:y,vx:(Math.random()-0.5)*10,vy:(Math.random()-0.5)*10,l:50,c:c,s:3,type:'fw'});}}\n    return{init,forceReset,forceView};\n})();\n<\/script>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Iniciando BULL TRADING BOT&#8230;Cargando m\u00f3dulos de gesti\u00f3n institucional AI-PRO ( Trader Virtual ) ORBIDEX AI Mercado (Filtro Global)CriptomonedasForexFondos\/Comodities Activo en Pantalla Temporalidad1 Minuto (Scalping)5 Minutos (Intraday)15 Minutos (Swing)1 Hora (Trend)4 Horas (Macro)ULTRA FAST (5s) \u26a0\ufe0f Acci\u00f3n \u21bb Reset \u26a0\ufe0f ADVERTENCIA: Usar temporalidad ULTRA R\u00c1PIDA (5s) conlleva un RIESGO EXTREMO de liquidaci\u00f3n. PRECIO EN VIVO&#8212; SCANNER<\/p>","protected":false},"author":7,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-5601","page","type-page","status-publish","hentry"],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/bulltradebot.com\/fr\/wp-json\/wp\/v2\/pages\/5601","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bulltradebot.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bulltradebot.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bulltradebot.com\/fr\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/bulltradebot.com\/fr\/wp-json\/wp\/v2\/comments?post=5601"}],"version-history":[{"count":30,"href":"https:\/\/bulltradebot.com\/fr\/wp-json\/wp\/v2\/pages\/5601\/revisions"}],"predecessor-version":[{"id":5633,"href":"https:\/\/bulltradebot.com\/fr\/wp-json\/wp\/v2\/pages\/5601\/revisions\/5633"}],"wp:attachment":[{"href":"https:\/\/bulltradebot.com\/fr\/wp-json\/wp\/v2\/media?parent=5601"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}