📈 주식 노트

USD/KRW: 로딩중
+st.avgUsd+'':'')+''; h+='
현재가 ✏️
'+fmt(st.curPrice)+'
'+(st.curUsd?'
h+='
평가금액
'+fmt(val)+'
'; h+='
수익률
'+fmtP(ret)+'
'; h+='
손익
'+(profit>=0?"+":"")+fmt(profit)+'
'; h+='
'; } var tV=0,tC=0; for(var i=0;i0?((tV-tC)/tC*100):0; h+='
전체 합계
'; h+='
총 평가
'+fmt(tV)+'원
'; h+='
총 수익률
'+fmtP(tR)+'
'; h+='
'; } el.innerHTML=h; } function updateStockForm(){ var mkt=document.getElementById("sMkt").value; var avgL=document.getElementById("avgLabel"); var curL=document.getElementById("curLabel"); if(mkt==="US"){ avgL.textContent="평균매수가 ($)"; curL.textContent="현재가 ($)"; } else if(mkt==="BTC"||mkt==="CRYPTO"){ avgL.textContent="평균매수가 ($)"; curL.textContent="현재가 ($)"; } else { avgL.textContent="평균매수가 (₩)"; curL.textContent="현재가 (₩)"; } calcKrw(); } function calcKrw(){ var mkt=document.getElementById("sMkt").value; var avg=parseFloat(document.getElementById("sAvg").value)||0; var cur=parseFloat(document.getElementById("sCur").value)||0; var qty=parseFloat(document.getElementById("sQty").value)||0; var el=document.getElementById("krwCalc"); if(!el)return; if(mkt==="KR"){el.innerHTML="";return} var h=""; h+="환율: $1 = ₩"+fmt(Math.round(usdKrw))+""; if(avg>0) h+="매수가(₩): "+fmt(Math.round(avg*usdKrw))+""; if(cur>0) h+="현재가(₩): "+fmt(Math.round(cur*usdKrw))+""; if(qty>0&&cur>0) h+="평가금액: ₩"+fmt(Math.round(qty*cur*usdKrw))+""; if(avg>0&&cur>0){ var ret=((cur-avg)/avg*100); h+="수익률: "+fmtP(ret)+""; } el.innerHTML=h; } function doAddStock(){ var n=document.getElementById("sName").value.trim(); var m=document.getElementById("sMkt").value; var q=parseFloat(document.getElementById("sQty").value)||0; var a=parseFloat(document.getElementById("sAvg").value)||0; var c=parseFloat(document.getElementById("sCur").value)||0; if(!n||!q||!a||!c)return; // 미국주식/비트코인/코인은 달러→원화 변환 var avgKrw=a,curKrw=c; if(m!=="KR"){avgKrw=Math.round(a*usdKrw);curKrw=Math.round(c*usdKrw)} stocks.push({id:Date.now(),name:n,market:m,qty:q,avgPrice:avgKrw,curPrice:curKrw,avgUsd:a,curUsd:c}); addSnap(stocks);save();render(); } function doDelStock(id){ stocks=stocks.filter(function(s){return s.id!==id}); addSnap(stocks);save();render(); } function editPrice(id){ var el=document.getElementById("cp_"+id); var st=null; for(var i=0;i'; var inp=document.getElementById("epi_"+id); inp.focus(); inp.onblur=function(){finishEdit(id,inp.value)}; inp.onkeydown=function(e){if(e.key==="Enter")finishEdit(id,inp.value)}; } function finishEdit(id,val){ for(var i=0;i +st.curUsd+'':'')+''; h+='
평가금액
'+fmt(val)+'
'; h+='
수익률
'+fmtP(ret)+'
'; h+='
손익
'+(profit>=0?"+":"")+fmt(profit)+'
'; h+=''; } var tV=0,tC=0; for(var i=0;i0?((tV-tC)/tC*100):0; h+='
전체 합계
'; h+='
총 평가
'+fmt(tV)+'원
'; h+='
총 수익률
'+fmtP(tR)+'
'; h+='
'; } el.innerHTML=h; } function updateStockForm(){ var mkt=document.getElementById("sMkt").value; var avgL=document.getElementById("avgLabel"); var curL=document.getElementById("curLabel"); if(mkt==="US"){ avgL.textContent="평균매수가 ($)"; curL.textContent="현재가 ($)"; } else if(mkt==="BTC"||mkt==="CRYPTO"){ avgL.textContent="평균매수가 ($)"; curL.textContent="현재가 ($)"; } else { avgL.textContent="평균매수가 (₩)"; curL.textContent="현재가 (₩)"; } calcKrw(); } function calcKrw(){ var mkt=document.getElementById("sMkt").value; var avg=parseFloat(document.getElementById("sAvg").value)||0; var cur=parseFloat(document.getElementById("sCur").value)||0; var qty=parseFloat(document.getElementById("sQty").value)||0; var el=document.getElementById("krwCalc"); if(!el)return; if(mkt==="KR"){el.innerHTML="";return} var h=""; h+="환율: $1 = ₩"+fmt(Math.round(usdKrw))+""; if(avg>0) h+="매수가(₩): "+fmt(Math.round(avg*usdKrw))+""; if(cur>0) h+="현재가(₩): "+fmt(Math.round(cur*usdKrw))+""; if(qty>0&&cur>0) h+="평가금액: ₩"+fmt(Math.round(qty*cur*usdKrw))+""; if(avg>0&&cur>0){ var ret=((cur-avg)/avg*100); h+="수익률: "+fmtP(ret)+""; } el.innerHTML=h; } function doAddStock(){ var n=document.getElementById("sName").value.trim(); var m=document.getElementById("sMkt").value; var q=parseFloat(document.getElementById("sQty").value)||0; var a=parseFloat(document.getElementById("sAvg").value)||0; var c=parseFloat(document.getElementById("sCur").value)||0; if(!n||!q||!a||!c)return; // 미국주식/비트코인/코인은 달러→원화 변환 var avgKrw=a,curKrw=c; if(m!=="KR"){avgKrw=Math.round(a*usdKrw);curKrw=Math.round(c*usdKrw)} stocks.push({id:Date.now(),name:n,market:m,qty:q,avgPrice:avgKrw,curPrice:curKrw,avgUsd:a,curUsd:c}); addSnap(stocks);save();render(); } function doDelStock(id){ stocks=stocks.filter(function(s){return s.id!==id}); addSnap(stocks);save();render(); } function editPrice(id){ var el=document.getElementById("cp_"+id); var st=null; for(var i=0;i'; var inp=document.getElementById("epi_"+id); inp.focus(); inp.onblur=function(){finishEdit(id,inp.value)}; inp.onkeydown=function(e){if(e.key==="Enter")finishEdit(id,inp.value)}; } function finishEdit(id,val){ for(var i=0;i