(function () { // ===== 공통 유틸 ===== var price = 164994000; function rnd(min,max){ return +(Math.random()*(max-min)+min).toFixed(3); } // ---- ② 호가/현재가 ---- function makeBook(base){ var levels=15, step=30000, bids=[], asks=[]; for(var i=levels;i>0;i--){ bids.push([base - i*step, rnd(0.001,1.25)]); } for(var j=1;j<=levels;j++){ asks.push([base + j*step, rnd(0.001,1.25)]); } return {bids:bids, asks:asks}; } var trades=[]; function pushTrade(p,side){ trades.unshift({p:p,q:rnd(0.001,0.85),t:Date.now(),side:side}); trades=trades.slice(0,40); } function renderOrderSide(sel, rows, type){ var el=document.querySelector(sel); if(!el) return; el.innerHTML=rows.slice(0,15).map(function(r){ return '
'+Number(r[0]).toLocaleString()+ ''+r[1]+'
'; }).join(''); } function renderTrades(list){ var el=document.getElementById('trades'); if(!el) return; el.innerHTML=list.slice(0,30).map(function(tr){ return '
'+Number(tr.p).toLocaleString()+ ''+tr.q+''+new Date(tr.t).toLocaleTimeString()+'
'; }).join(''); } function renderLast(p){ var el=document.getElementById('lastprice'); if(el) el.textContent=Number(p).toLocaleString(); } // ---- ⑤ 코인 리스트(모의) ---- var coins = [ {sym:'BTC', name:'Bitcoin'}, {sym:'ETH', name:'Ethereum'}, {sym:'YOY', name:'YooY Land'}, {sym:'SOL', name:'Solana'}, {sym:'XRP', name:'XRP'}, {sym:'DOGE', name:'Dogecoin'} ].map(function(c){ c.price=Math.round(price*(0.01+Math.random())); c.chg=0; return c; }); function updateCoins(){ coins.forEach(function(c){ var d=(Math.random()-0.5)*0.03; // ±3% c.chg = +(d*100).toFixed(2); c.price = Math.max(1, Math.round(c.price*(1+d))); }); } function renderCoinList(){ var box=document.querySelector('#coinlist .coinlist-body'); if(!box) return; var q=(document.getElementById('coin-search')||{}).value||''; var rows=coins.filter(function(c){ return (c.sym+c.name).toLowerCase().indexOf((q||'').toLowerCase())>-1; }).map(function(c){ var cls = c.chg>=0?'up':'down'; return '
'+c.sym+''+ ''+c.price.toLocaleString()+''+ ''+(c.chg>0?'+':'')+c.chg+'%
'; }).join(''); box.innerHTML = rows; } // ---- 데모 시작 ---- function start(){ // 검색 이벤트 var input=document.getElementById('coin-search'); if(input) input.addEventListener('input', renderCoinList); setInterval(function(){ var drift=(Math.random()-0.5)*90000; price=Math.max(1, Math.round(price+drift)); pushTrade(price, drift>=0?'buy':'sell'); var book=makeBook(price); renderLast(price); renderOrderSide('.bids', book.bids, 'bid'); renderOrderSide('.asks', book.asks, 'ask'); renderTrades(trades); updateCoins(); renderCoinList(); }, 1000); // 주문 버튼 데모 var buy=document.getElementById('buyBtn'), sell=document.getElementById('sellBtn'); if(buy) buy.onclick=function(){ alert('데모 매수요청\n가격:'+document.getElementById('price').value+'\n수량:'+document.getElementById('amount').value); }; if(sell) sell.onclick=function(){ alert('데모 매도요청\n가격:'+document.getElementById('price').value+'\n수량:'+document.getElementById('amount').value); }; } (document.readyState==='loading') ? document.addEventListener('DOMContentLoaded', start) : start(); })();