커뮤니티
내가 만든 전략들과 지식을 공유하고 토론합니다.

2. Filter()함수 구성 템플릿

푸른주전자 2024.06.13 16:21 조회수  45 추천 1
//***********************************************************************
// 기본 필터
//***********************************************************************
function marketFilter(stock) {
    // 종가 0, 시총 0 제외
    if (stock.getClose() == 0 || stock.getMarketCapital() == 0) 
        return false;  
    
    return true;
}
var mCap_filter = 200;        // 시가총액 필터, 억 단위
var TrdValue = 1;             // 거래대금 필터, 억 단위
//***********************************************************************
// 유니버스 구성을 위한 필터
//*********************************************************************** 
function stockFilter(stock) {  
// 거래대금 0 종목 제외 if (stock.getTradingValue() == 0) return false; // ETF, 우선주, 총자산 음수인 종목 제외 // ETF, 우선주는 재무제표 값이 없어 0 값을 리턴 if (stock.getFundamentalTotalAsset() <= 0) return false; // 관리 종목 제외 if (stock.manage != 0) return false; // 자본 잠식 종목 제외 if (stock.getFundamentalTotalEquity() < stock.getFundamentalCapitalStock()) return false; //*********************************************************************** // 기본적인 재무 상태 체크 var filterFinancial = (getPER(stock) > 0 && getPBR(stock) > 0); //*********************************************************************** // 시가 총액 하위 체크(200억) var filterMarketCapital = (stock.getMarketCapital() >= mCap_filter * 100); //*********************************************************************** // 20일 평균 거래대금 체크(1억) var volAmountOfDay = TrdValue*100; var avgVol = 0; var volCount = 0; for (var i = 0; i < 20; i++) { if (stock.getTradingValue(i) === 0) { continue; } avgVol += stock.getTradingValue(i); volCount += 1; } if (volCount > 0) { avgVol /= volCount; } return (filterMarketCapital && filterFinancial && avgVol > volAmountOfDay);  
}

필터 구성을 위한 기본 템플릿을 작성했습니다.

marketFilter() 함수는 주식 포트폴리오 구성을 위한 함수 stockPortfolio()에서 주식 전체 종목 중 종가가 0 이거나 시총이 0인 종목을 제외한 종목을 불러오는데 사용합니다.
// stockPortfolio() 함수 내에서 기본 필터 사용 예제
var stockmarket = IQStock.filter(marketFilter);

stockFilter() 함수가 stockPortfolio() 함수 내에서 유비버스 구성을 위한 필터로 작용합니다.
먼저 거래대금이 0인 종목, ETF/우선주, 관리종목, 자본 잠식인 종목을 제외 시키고 또한 재무적인 체크, 최소한의 시가 총액 체크, 20일 평균 거래대금을 체크하여 유니버스를 구성하고 이렇게 구성된 종목으로 각 지표들을 이용하여 주식 포트폴리오를 만듭니다.
// stockPortfolio() 함수 내에서 유니버스 구성을 위한 필터 사용 예제
var universe = sortedBySize.filter(stockFilter);

다음으로는 종목 선택을 위한 지표 함수를 한번 만들어 보겠습니다.


댓글 0
댓글 등록을 위해서 로그인해주세요.
 
최신 게시글