함수 계산을 연습 중에 있습니다.
제가 계산하는 값들을 (다를 것 같아) 확인하고 싶어서,
기본 스크립트 샘플에 아래와 같이 함수를 넣어서 그 값들을 비교해보려고 합니다.
function ROE(stock) { stock.loadPrevData(1,6,0);
return ( (stock.getFundamentalProfit_ownersOfParent() + stock.getFundamentalProfit_ownersOfParent(1)+
stock.getFundamentalProfit_ownersOfParent(2) + stock.getFundamentalProfit_ownersOfParent(3) )
/ stock.getFundamentalEquity_ownersOfParent() ) *100 ; }
와
function ROE1(stock) { stock.loadPrevData(1,6,0);
for(var i=0; i < 4; i++) {
var profit = stock.getFundamentalProfit_ownersOfParent(i);
var ownerprofit = stock.getFundamentalProfit_ownersOfParent(0);
if (profit < 0 || ownerprofit < 0) { return 0;}
var roe = profit / ownerprofit ;
return roe;
} }
포트폴리오빌더 안에
logger.debug( stock.name + " " + 'ROE'+ ROE(stock).toFixed(1) + 'ROE1' + ROE1(stock).toFixed(1));
이렇게 로그를 넣었는데 출력이 안 되네요.
또, 전략을 돌려보지 않고도 그냥 간단하게 함수의 계산된 값들을 확인해보는 방법이 있을까요?
고맙습니다.
 
              
            
function stockPortfolioBuilder(targetSize) { var universe = IQStock.filter(stockFilter); var sortedByPer = universe.slice().sort(function(a,b){return getPER(a) - getPER(b);}); var sortedByRoe = universe.slice().sort(function(a,b){return ROE(b) - ROE(a) ;}); var sortedByRoe1 = universe.slice().sort(function(a,b){return ROE1(b) - ROE1(a) ;}); universe.forEach( function(stock) { stock.setScore('rank_sum', sortedByPer.indexOf(stock) + sortedByRoe.indexOf(stock) //+ sortedByRoe1.indexOf(stock) ); }); var Port_Rank = universe.slice().sort( function(a, b) { return a.getScore('rank_sum') - b.getScore('rank_sum'); logger.debug(stock.name + " " + 'ROE'+ ROE(stock).toFixed(1) + 'ROE1' + ROE1(stock).toFixed(1)); }); return Port_Rank.slice(0, targetSize); } 이렇게 추가해서 보았습니다.이렇게 수정하시면 됩니다. function stockPortfolioBuilder(targetSize) { var universe = IQStock.filter(stockFilter); var sortedByPer = universe.slice().sort(function(a,b){return getPER(a) - getPER(b);}); var sortedByRoe = universe.slice().sort(function(a,b){return ROE(b) - ROE(a) ;}); var sortedByRoe1 = universe.slice().sort(function(a,b){return ROE1(b) - ROE1(a) ;}); universe.forEach( function(stock) { stock.setScore('rank_sum', sortedByPer.indexOf(stock) + sortedByRoe.indexOf(stock) //+ sortedByRoe1.indexOf(stock) ); }); var Port_Rank = universe.slice().sort( function(a, b) { return a.getScore('rank_sum') - b.getScore('rank_sum'); }); for (var i = 1; i < Port_Rank.length; i++) logger.debug(Port_Rank[i].name + " " + 'ROE'+ ROE(Port_Rank[i]).toFixed(1) + 'ROE1' + ROE1(Port_Rank[i]).toFixed(1)); return Port_Rank.slice(0, targetSize); }Europa 님 말씀처럼 for문에 Port_Rank.length를 targetSize로 변경하시면 됩니다 그리고, 제가 위문장에 실수한게 있는데 for문 var i = 0으로 정정하셔야 됩니다. 아래와 같습니다. for (var i = 0; i < targetSize; i++) logger.debug(Port_Rank[i].name + " " + 'ROE'+ ROE(Port_Rank[i]).toFixed(1) + 'ROE1' + ROE1(Port_Rank[i]).toFixed(1));function stockPortfolioBuilder(targetSize) { var universe = IQStock.filter(stockFilter); var sortedByPer = universe.slice().sort(function(a,b){return getPER(a) - getPER(b);}); var sortedByRoe = universe.slice().sort(function(a,b){return ROE(b) - ROE(a) ;}); var sortedByRoe1 = universe.slice().sort(function(a,b){return ROE1(b) - ROE1(a) ;}); universe.forEach( function(stock) { stock.setScore('rank_sum', sortedByPer.indexOf(stock) + sortedByRoe.indexOf(stock) //+ sortedByRoe1.indexOf(stock) ); }); var Port_Rank = universe.slice().sort( function(a, b) { return a.getScore('rank_sum') - b.getScore('rank_sum'); }); for (var i = 0; i < targetSize; i++) logger.debug(i+1 + " : " + Port_Rank[i].name + " " + 'ROE'+ ROE(Port_Rank[i]).toFixed(1) + 'ROE1' + ROE1(Port_Rank[i]).toFixed(1)); return Port_Rank.slice(0, targetSize); } 이렇게 해보세요. 돌아가는거 확인하고 올립니다. 꼭 되어야 합니다.