목차
개요
BasketEgg는 Basket에 담긴 종목 한 건을 나타내는 객체입니다.
Account.getEggs()가 반환하는 Egg 객체가 계좌의 실제 보유 잔고를 나타내는 것과 달리, BasketEgg는 Basket의 목표 포트폴리오에 담긴 종목을 나타냅니다. Basket.getCurrentEggs()를 통해 배열로 가져올 수 있습니다.
var eggs = stock_port.getCurrentEggs();
for (var i = 0; i < eggs.length; i++) {
var egg = eggs[i];
logger.debug(egg.stock.name + ' | 수량: ' + egg.quantity + ' | 편입비율: ' + (egg.ratio * 100).toFixed(1) + '%');
}
JavaScript
복사
속성 (Properties)
속성 | 타입 | 설명 |
stock | Stock | 해당 종목의 Stock 객체 |
quantity | number | 목표 보유 수량 (주) |
ratio | number | 바스켓 편입 시점의 비율 (0~1). 이후 다른 종목이 추가되어도 이 값은 갱신되지 않으므로 전체 비중 계산이 필요하면 별도 계산 필요. |
stock
해당 종목의 Stock 객체입니다. Stock의 모든 속성과 메서드에 접근할 수 있습니다.
var eggs = stock_port.getCurrentEggs();
for (var i = 0; i < eggs.length; i++) {
var egg = eggs[i];
logger.debug('종목코드: ' + egg.stock.code + ', 종목명: ' + egg.stock.name);
logger.debug('당일 종가: ' + egg.stock.getClose());
}
JavaScript
복사
quantity
해당 종목의 목표 보유 수량입니다.
Basket.buildPortfolio() 또는 Basket.enter() 호출 시 예산(budget / targetSize)과 당일 종가를 기준으로 계산되어 설정됩니다.
var eggs = stock_port.getCurrentEggs();
for (var i = 0; i < eggs.length; i++) {
var egg = eggs[i];
logger.debug(egg.stock.name + ': 목표수량 ' + egg.quantity + '주');
}
JavaScript
복사
ratio
바스켓 편입 시점의 해당 종목 비율입니다.
주의: 이 값은 종목이 바스켓에 추가되는 시점에 고정되며, 이후 다른 종목이 추가·제거되어도 자동으로 갱신되지 않습니다. 현재 시점의 실제 비중이 필요하다면 getEquityOpenValue()와 개별 종목 평가액을 이용해 직접 계산해야 합니다.
var eggs = stock_port.getCurrentEggs();
for (var i = 0; i < eggs.length; i++) {
var egg = eggs[i];
logger.debug(egg.stock.name + ' 편입비율: ' + (egg.ratio * 100).toFixed(2) + '%');
}
JavaScript
복사
활용 패턴
패턴 1: 바스켓 구성 종목 현황 출력
function onDayClose(now) {
if (!IQDate.isRebalancingDay(now)) return;
stock_port.buildPortfolio();
var eggs = stock_port.getCurrentEggs();
logger.debug('=== 목표 포트폴리오 (' + eggs.length + '종목) ===');
for (var i = 0; i < eggs.length; i++) {
var egg = eggs[i];
var evalAmount = egg.stock.getClose() * egg.quantity;
logger.debug((i + 1) + '. ' + egg.stock.name
+ ' | 목표수량: ' + egg.quantity + '주'
+ ' | 평가액: ' + IQUtil.getNumberWithCommas(evalAmount.toFixed(0)));
}
}
JavaScript
복사
패턴 2: 실제 비중 계산
ratio는 편입 시점에 고정되므로, 현재 시점 비중은 직접 계산합니다.
function printCurrentWeights(basket) {
var eggs = basket.getCurrentEggs();
var totalValue = basket.getEquityOpenValue();
if (totalValue <= 0) return;
for (var i = 0; i < eggs.length; i++) {
var egg = eggs[i];
var evalValue = egg.stock.getClose() * egg.quantity;
var currentWeight = evalValue / totalValue * 100;
logger.debug(egg.stock.name
+ ' | 현재비중: ' + currentWeight.toFixed(2) + '%'
+ ' | 평가액: ' + IQUtil.getNumberWithCommas(evalValue.toFixed(0)));
}
}
JavaScript
복사
Egg vs BasketEgg 비교
구분 | Egg (Account.getEggs()) | BasketEgg (Basket.getCurrentEggs()) |
의미 | 계좌의 실제 보유 잔고 | 바스켓의 목표 포트폴리오 구성 |
stock 속성 | 없음 (code로 접근) | Stock 객체 직접 접근 |
quantity | 실제 보유 수량 | 목표 보유 수량 |
mean | 평균 매수가 | 없음 |
ratio | 없음 | 편입 시점 비율 |
관련 API
•
Basket 객체 — 포트폴리오 바스켓. getCurrentEggs() 등 전체 바스켓 관리
•
Stock 객체 — BasketEgg.stock으로 접근하는 개별 종목 객체
•
Account 객체 — getEggs()로 실제 보유 잔고 조회
