fix: slot label literal, netqty filter, today-only closed, calcSD + SD wire
This commit is contained in:
parent
2540a89bae
commit
b3b1946ee6
1 changed files with 7 additions and 4 deletions
|
|
@ -330,7 +330,7 @@ async function loadMarket(){
|
||||||
const map=Object.fromEntries(data.map(q=>[q.key,q]));
|
const map=Object.fromEntries(data.map(q=>[q.key,q]));
|
||||||
if(!window._mktCache)window._mktCache={};(data||[]).forEach(function(q){window._mktCache[q.key]=q;});grid.innerHTML=SLOTS.map(slot=>{
|
if(!window._mktCache)window._mktCache={};(data||[]).forEach(function(q){window._mktCache[q.key]=q;});grid.innerHTML=SLOTS.map(slot=>{
|
||||||
const q=map[slot.key];
|
const q=map[slot.key];
|
||||||
if(!q){var c=(window._mktCache||{})[slot.key];if(c){q=c;}else{return '<div class="card mcard"><div class="mlbl">+slot.label+"</div><div class="mprice" style="color:var(--text3)">—</div><div class="mchg" style="color:var(--text3)">—</div></div>';}}
|
if(!q){var c=(window._mktCache||{})[slot.key];if(c){q=c;}else{return '<div class="card mcard"><div class="mlbl">'+slot.label+'</div><div class="mprice" style="color:var(--text3)">—</div><div class="mchg" style="color:var(--text3)">—</div></div>';}}
|
||||||
const up=q.changePct>=0,cl=up?'up':'dn',arrow=up?'\u25b2':'\u25bc';
|
const up=q.changePct>=0,cl=up?'up':'dn',arrow=up?'\u25b2':'\u25bc';
|
||||||
const price=q.price>10000?q.price.toLocaleString('en-IN',{maximumFractionDigits:0}):q.price.toFixed(2);
|
const price=q.price>10000?q.price.toLocaleString('en-IN',{maximumFractionDigits:0}):q.price.toFixed(2);
|
||||||
return '<div class="card mcard"><div class="mlbl">'+slot.label+'</div>'+
|
return '<div class="card mcard"><div class="mlbl">'+slot.label+'</div>'+
|
||||||
|
|
@ -341,7 +341,7 @@ async function loadMarket(){
|
||||||
}
|
}
|
||||||
async function loadPositions(){
|
async function loadPositions(){
|
||||||
const {data}=await fetch('/api/positions').then(r=>r.json());
|
const {data}=await fetch('/api/positions').then(r=>r.json());
|
||||||
const open=data.filter(p=>p.is_closed===0);
|
const open=data.filter(p=>p.is_closed===0 && +p.netqty!==0);
|
||||||
const tbody=document.getElementById('pos-body'),tfoot=document.getElementById('pos-foot');
|
const tbody=document.getElementById('pos-body'),tfoot=document.getElementById('pos-foot');
|
||||||
if(!open.length){tbody.innerHTML='<tr><td colspan="7" style="text-align:center;padding:36px;color:var(--text3)">No open positions</td></tr>';tfoot.style.display='none';return;}
|
if(!open.length){tbody.innerHTML='<tr><td colspan="7" style="text-align:center;padding:36px;color:var(--text3)">No open positions</td></tr>';tfoot.style.display='none';return;}
|
||||||
const sU=open.reduce((s,p)=>s+p.unrealised_pnl,0),sR=open.reduce((s,p)=>s+p.realised_pnl,0),sT=open.reduce((s,p)=>s+p.total_pnl,0);
|
const sU=open.reduce((s,p)=>s+p.unrealised_pnl,0),sR=open.reduce((s,p)=>s+p.realised_pnl,0),sT=open.reduce((s,p)=>s+p.total_pnl,0);
|
||||||
|
|
@ -507,6 +507,8 @@ function detectStrategy(opts) {
|
||||||
return opts.length+'-Leg Strategy';
|
return opts.length+'-Leg Strategy';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function calcSD(spot,dte,vix){var v=vix>1?vix/100:0.18;var dv=v/Math.sqrt(252);var move=spot*dv*Math.sqrt(Math.max(dte,1));return{sd1:move,sd2:move*2};}
|
||||||
async function loadPayoff() {
|
async function loadPayoff() {
|
||||||
var canvas = document.getElementById('payoff-chart');
|
var canvas = document.getElementById('payoff-chart');
|
||||||
var emptyEl = document.getElementById('pf-empty');
|
var emptyEl = document.getElementById('pf-empty');
|
||||||
|
|
@ -583,7 +585,7 @@ async function loadPayoff() {
|
||||||
var tc = dk?'#3D444D':'#C4B8B0';
|
var tc = dk?'#3D444D':'#C4B8B0';
|
||||||
|
|
||||||
if (payoffChartInst) payoffChartInst.destroy();
|
if (payoffChartInst) payoffChartInst.destroy();
|
||||||
canvas._beLines = bes; canvas._spotLine = spot; canvas._chartXs = xs;
|
var vixV=(window._mktCache&&window._mktCache['INDIAVIX'])?window._mktCache['INDIAVIX'].price:0;canvas._sdInfo=calcSD(spot,typeof dte==='number'?dte:7,vixV);canvas._beLines=bes;canvas._spotLine=spot;canvas._chartXs=xs;
|
||||||
|
|
||||||
payoffChartInst = new Chart(canvas, {
|
payoffChartInst = new Chart(canvas, {
|
||||||
type: 'line',
|
type: 'line',
|
||||||
|
|
@ -634,7 +636,8 @@ async function loadClosedPositions() {
|
||||||
var staleEl = document.getElementById('closed-stale');
|
var staleEl = document.getElementById('closed-stale');
|
||||||
if (!tbody) return;
|
if (!tbody) return;
|
||||||
|
|
||||||
var data = res.data || [];
|
var tIST=new Date().toLocaleDateString('en-CA',{timeZone:'Asia/Kolkata'});
|
||||||
|
var data=(res.data||[]).filter(function(p){return p.updated_at&&p.updated_at.slice(0,10)>=tIST;});
|
||||||
var totalBooked = res.totalBooked || 0;
|
var totalBooked = res.totalBooked || 0;
|
||||||
|
|
||||||
// Update collapsed header badge
|
// Update collapsed header badge
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue