<?php
include_once('./_common.php');
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
include_once G5_PATH."/_PAGE/_MAIN/CODE_data.php";
include_once G5_PATH."/_PAGE/_MAIN/CODE_calc.php";
include_once G5_PATH."/_PAGE/_MAIN/_HEAD.php";
include_once(G5_PATH."/_PAGE/head.php");
?>
<link rel="stylesheet" type="text/css" href="<?php echo G5_URL; ?>/_PAGE/_MAIN/asset/main_asset.css">
<link rel="stylesheet" type="text/css" href="<?php echo G5_URL; ?>/_PAGE/_MAIN/asset/help.css">
<article id="ASSET">
<?php include G5_PATH."/_PAGE/_MAIN/asset/top_bookmark.php"; ?>
<section class="Main_Title">
<div class="Title_Txt">
<ul class="Title_Total">
<li><?= number_format($cur_av) ?><span> KRW</span></li>
</ul>
<ul class="Title_Asset">
<li>
<label class="txt_kor">현재금 | 평가자산 : </label>
<label class="ul_cur_av"><?= number_format($cur_av) ?><span> KRW</span></label>
<label>-</label>
<label class="txt_kor">원금 : </label>
<label class="ul_should_have_latest"><?= number_format($should_have_latest) ?><span> KRW</span></label>
<label>=</label>
<label class="txt_kor">손익률 : </label>
<label class="ul_pure_roi"><?= round($pure_roi, 2) ?><span> %</span></label>
<label class="Label_Boundary">|</label>
<label class="txt_kor">손익금 : </label>
<label class="ul_pure_profit"><?= number_format($pure_profit) ?><span> KRW</span></label>
</li>
</ul>
</div>
</section>
<?php include G5_PATH."/_PAGE/_MAIN/asset/coin_item.php"; ?>
<section class="Main_Box">
<div class="Box_Title">
<label class="Box_Move"><span data-tooltip="이전" onclick="history.back();"><i class="fa-solid fa-angle-left"></i></span> <span data-tooltip="다음" onclick="history.forward();"><i class="fa-solid fa-angle-right"></i></span></label>
<label class="Box_Title_name">ASSETS DATA</label>
<label class="Box_Home"><a href="<?=G5_URL;?>/_PAGE/_MAIN/asset/main_hellgate.php"><span data-tooltip="헬게이트"><i class="fa-solid fa-biohazard"></i></span></a></label>
<label class="Box_Link">
<?php include_once(G5_PATH."/_PAGE/_MAIN/asset/ICON_title.php"); ?>
<a href="<?=G5_URL;?>"><span data-tooltip="관련 데이터"><i class="fa-solid fa-link"></i></span></a>
<a href="<?=G5_URL;?>"><span data-tooltip="도움말"><i class="fa-solid fa-circle-question"></i></span></a>
<a href="<?=G5_URL;?>"><span data-tooltip="세팅"><i class="fa-solid fa-gear"></i></span></a>
</label>
</div>
<div class="Box_Asset_Info">
<ul class="Box_Asset_Info_Total">
<label class="Box_Total_naem">총자산 : </label><label class="ul_total_asset"><?= number_format($total_asset) ?><span> KRW</span></label>
</ul>
<ul class="Box_Asset_Info_Detail_1">
<li><label class="txt_kor">매수금 : </label><label class="ul_cost_basis"><?= number_format($cost_basis) ?><span> KRW</span></label></li>
<li><label class="txt_kor">잔여금 : </label><label class="ul_cur_cv"><?= number_format($cur_cv) ?><span> KRW</span></label></li>
</ul>
<ul class="Box_Asset_Info_Total">
<label class="Box_Total_naem">매수율 : </label><label class="ul_buy_ratio"><?= round($buy_ratio, 2) ?><span> %</span></label>
</ul>
<ul class="Box_Asset_Info_Total">
<label class="Box_Total_naem">손익금 : </label><label class="ul_cur_pv"><?= number_format($cur_pv) ?><span> KRW</span></label>
</ul>
<ul class="Box_Asset_Info_Total">
<label class="Box_Total_naem">손익율 : </label><label class="ul_current_roi"><?= round($current_roi, 2) ?><span> %</span></label>
</ul>
</div>
<div class="Box_Average">
<ul>
<li class="Box_Day"><label class="Box_Total_naem">총 일 : </label><label><?= $days ?><span> DAY</span></label></li>
<li class="Box_Amount"><label class="Box_Total_naem">일 / 평균 수익금 : </label><label class="ul_avg_pnl"><?= number_format($avg_pnl, 2) ?><span> KRW</span></label></li>
<li><label class="Box_Total_naem">일 / 평균 수익률 : </label><label class="ul_avg_roi"><?= number_format($avg_roi, 2) ?><span> %</span></label></li>
</ul>
</div>
<div class="Box_Average">
<ul>
<li class="Box_Day"><label class="Box_Total_naem">월 / 단위 : </label><label>30<span> DAY</span></label></li>
<li class="Box_Amount"><label class="Box_Total_naem">월 / 평균 수익금 : </label><label class="ul_avg_pnl_m"><?= number_format($avg_pnl*30, 2) ?><span> KRW</span></label></li>
<li><label class="Box_Total_naem">월 / 평균 수익률 : </label><label class="ul_avg_roi_m"><?= number_format($avg_roi*30, 2) ?><span> %</span></label></li>
</ul>
</div>
<div class="Box_Average">
<ul>
<li class="Box_Day"><label class="Box_Total_naem">년 / 단위 : </label><label>365<span> DAY</span></label></li>
<li class="Box_Amount"><label class="Box_Total_naem">년 / 평균 수익금 : </label><label class="ul_avg_pnl_y"><?= number_format($avg_pnl_y, 2) ?><span> KRW</span></label></li>
<li><label class="Box_Total_naem">년 / 평균 수익률 : </label><label class="ul_avg_roi_y"><?= number_format($avg_roi_y, 2) ?><span> %</span></label></li>
</ul>
</div>
<div class="Box_Data_Table">
<ul>
<li>
<label class="Box_Table_Subject">투자금<span> (원금)</span></label>
<label class="Box_Table_Val ul_dt_should_have_latest"><?= number_format($should_have_latest) ?><span> KRW</span></label>
<label class="Box_Table_Help">초기 투자금 + 입금 - 출금</label>
</li>
<li>
<label class="Box_Table_Subject">총 매입 자산</label>
<label class="Box_Table_Val ul_buy_av"><?= number_format($buy_av) ?><span> KRW</span></label>
<label class="Box_Table_Help">총 매입금 + 보유금</label>
</li>
<li>
<label class="Box_Table_Subject">총 평가 자산</label>
<label class="Box_Table_Val ul_dt_cur_av"><?= number_format($cur_av) ?><span> KRW</span></label>
<label class="Box_Table_Help">총 평가금 + 보유금<span> (실질 자산)</span></label>
</li>
<li>
<label class="Box_Table_Subject">전체 손익금</label>
<label class="Box_Table_Val ul_dt_pure_profit"><?= number_format($pure_profit) ?><span> KRW</span></label>
<label class="Box_Table_Subject">전체 손익률</label>
<label class="Box_Table_Val ul_dt_pure_roi"><?= round($pure_roi, 2) ?><span> %</span></label>
<label class="Box_Table_Help">총 평가금 + 보유금<span> (실질 자산)</span></label>
</li>
<li>
<label class="Box_Table_Subject">현재: 투자 대비 손익률</label>
<label class="Box_Table_Val ul_dt_current_roi"><?= round($current_roi, 2) ?><span> %</span></label>
<label class="Box_Table_Subject">현재 : 총 자산 대비 손익률</label>
<label class="Box_Table_Val ul_dt_total_roi"><?= round($total_roi, 2) ?><span> %</span></label>
<label class="Box_Table_Help"><span>투자 대비</span> : 매매금 기준</label>
<label class="Label_Boundary"><span>/</span></label>
<label class="Box_Table_Help"><span>자산 대비</span> : 자산 기준</label>
</li>
</ul>
</div>
</section>
</article>
<script>
(function() {
let prev = {
cur_av: <?= (float)$cur_av ?>, should_have_latest: <?= (float)$should_have_latest ?>,
pure_profit: <?= (float)$pure_profit ?>, pure_roi: <?= (float)$pure_roi ?>,
total_asset: <?= (float)$total_asset ?>, cost_basis: <?= (float)$cost_basis ?>,
cur_cv: <?= (float)$cur_cv ?>, buy_ratio: <?= (float)$buy_ratio ?>,
cur_pv: <?= (float)$cur_pv ?>, total_roi: <?= (float)$total_roi ?>,
current_roi: <?= (float)$current_roi ?>, avg_pnl: <?= (float)$avg_pnl ?>,
avg_roi: <?= (float)$avg_roi ?>, buy_av: <?= (float)$buy_av ?>,
avg_pnl_m: <?= (float)$avg_pnl * 30 ?>, avg_roi_m: <?= (float)$avg_roi * 30 ?>,
avg_pnl_y: <?= (float)$avg_pnl * 365 ?>, avg_roi_y: <?= (float)$avg_roi * 365 ?>
};
function animateValue(el, start, end, duration, isPercent) {
if (!el) return;
const startVal = parseFloat(start);
const endVal = parseFloat(end);
let startTime = null;
function step(now) {
if (!startTime) startTime = now;
const progress = Math.min((now - startTime) / duration, 1);
const easeOut = 1 - Math.pow(1 - progress, 3);
const current = easeOut * (endVal - startVal) + startVal;
if (isPercent) {
el.innerHTML = current.toFixed(2) + '<span> %</span>';
} else {
el.innerHTML = Math.floor(current).toLocaleString() + '<span> KRW</span>';
}
if (progress < 1) window.requestAnimationFrame(step);
}
window.requestAnimationFrame(step);
}
function update() {
const url = window.location.pathname + window.location.search + (window.location.search ? '&' : '?') + 'ajax_mode=get_json&v=' + Date.now();
fetch(url)
.then(res => res.json())
.then(data => {
const root = document.getElementById('ASSET');
const targets = [
{ el: root.querySelector('.Title_Total li'), key: 'cur_av', pct: false },
{ el: root.querySelector('.ul_cur_av'), key: 'cur_av', pct: false },
{ el: root.querySelector('.ul_should_have_latest'), key: 'should_have_latest', pct: false },
{ el: root.querySelector('.ul_pure_profit'), key: 'pure_profit', pct: false },
{ el: root.querySelector('.ul_pure_roi'), key: 'pure_roi', pct: true },
{ el: root.querySelector('.ul_total_asset'), key: 'total_asset', pct: false },
{ el: root.querySelector('.ul_cost_basis'), key: 'cost_basis', pct: false },
{ el: root.querySelector('.ul_cur_cv'), key: 'cur_cv', pct: false },
{ el: root.querySelector('.ul_buy_ratio'), key: 'buy_ratio', pct: true },
{ el: root.querySelector('.ul_cur_pv'), key: 'cur_pv', pct: false },
{ el: root.querySelector('.ul_current_roi'), key: 'current_roi', pct: true },
// 일간
{ el: root.querySelector('.ul_avg_pnl'), key: 'avg_pnl', pct: false },
{ el: root.querySelector('.ul_avg_roi'), key: 'avg_roi', pct: true },
// 월간 (식별자 변경 반영)
{ el: root.querySelector('.ul_avg_pnl_m'), key: 'avg_pnl_m', pct: false },
{ el: root.querySelector('.ul_avg_roi_m'), key: 'avg_roi_m', pct: true },
// 년간 (식별자 변경 반영)
{ el: root.querySelector('.ul_avg_pnl_y'), key: 'avg_pnl_y', pct: false },
{ el: root.querySelector('.ul_avg_roi_y'), key: 'avg_roi_y', pct: true },
// Table
{ el: root.querySelector('.ul_dt_should_have_latest'), key: 'should_have_latest', pct: false },
{ el: root.querySelector('.ul_buy_av'), key: 'buy_av', pct: false },
{ el: root.querySelector('.ul_dt_cur_av'), key: 'cur_av', pct: false },
{ el: root.querySelector('.ul_dt_pure_profit'), key: 'pure_profit', pct: false },
{ el: root.querySelector('.ul_dt_pure_roi'), key: 'pure_roi', pct: true },
{ el: root.querySelector('.ul_dt_current_roi'), key: 'current_roi', pct: true },
{ el: root.querySelector('.ul_dt_total_roi'), key: 'total_roi', pct: true },
];
targets.forEach(obj => {
if (obj.el && data[obj.key] !== undefined && Math.abs(prev[obj.key] - data[obj.key]) > 0.001) {
animateValue(obj.el, prev[obj.key], data[obj.key], 2000, obj.pct);
prev[obj.key] = data[obj.key];
}
});
}).catch(() => {});
}
setInterval(update, 10000);
})();
</script>
<?php
include G5_PATH."/_PAGE/_MAIN/_TAIL.php";
require_once G5_PATH.'/_PAGE/tail.php';
?>