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

1. initialize() 함수 구성 기본 템플릿

푸른주전자 2024.06.04 17:37 조회수  78 추천 1
// 전역 변수
var stock_port;               // 주식 종목들을 관리하는 Basket 객체
var stock_weight = 0.95;      // 주식 비중
var stock_num = 20;           // 주식 종목 수
function initialize() {       
    // 거래 수수료, 기본 값 0.0015
    IQEnvironment.stockCommission = 0.0015;  
    // 증권 거래세, 기본 값 0.0015
    IQEnvironment.stockTax = 0.0015;            
    
    /******************************************************/
    // 신규 계좌 설정
    /******************************************************/
    // IQAccount.addAccount() 함수를 사용
    // 계좌 번호 : "1111"
    // 계좌 이름 : "PER+PBR+ROA"
    // 계좌 할등 금액 : IQEnvironment.aum(최초 설정 금액)
    IQAccount.addAccount("1111", "PER+PBR+ROA", IQEnvironment.aum);
    
    /******************************************************/
    // 바스켓 생성, 설정한 계좌와 바스켓 연결
    /******************************************************/
    // new Basket() 함수를 이용하여
    // 바스켓에 계좌와, 주식 종목수, 금액 정보 전달
    // 바스켓 : stock_port
    // 계좌 : IQAccount.getAccount("1111")
    // 주식 종목 수 : stock_num(20종목) 
    // 금액 : IQEnvironment.aum(최초 설정 금액) * stock_weight
    stock_port = new Basket(IQAccount.getAccount("1111"), stock_num, IQEnvironment.aum * stock_weight);
    
    /******************************************************/
    // 바스켓에 포트폴리오 구성 함수 등록 : stockPortfolio
    /******************************************************/
    // stock_port 바스켓에
    // setPortfolioBuilder() 함수를 이용하여
    // stockPortfolio 함수 이름을 등록
    // 향후에 주식 포트폴리오 구성을 위함 함수명을 
    // stockPortfolio로 지정하면 됨
    stock_port.setPortfolioBuilder(stockPortfolio);
    
    // 리밸런싱 주기를 설정 : 매월 1일
    IQDate.addRebalSchedule(IQDate.setMonthlyStart(1));
    // 리밸런싱 주기를 설정 : 매월 1영업일
    // IQDate.addRebalSchedule(IQDate.setMonthlyTradingDays(1));
    // 리밸런싱 주기를 설정 : 매월 말 1일
    // IQDate.addRebalSchedule(IQDate.setMonthlyEnd(1));
    // 리밸런싱 주기를 설정 : 매월 말 1영업일
    // IQDate.addRebalSchedule(IQDate.setMonthlyTradingDaysEnd(1));
}


initialize() 함수 구성 기본 템플릿을 작성해 보았습니다.


IQAccount.addAccount("1111", "PER+PBR+ROA", IQEnvironment.aum); 는 신규 계좌를 설정하는 방법입니다.

스튜디오에서 "알고리즘"이란 계좌명의 기본 계좌를 사용할 수 있습니다. 기본 계좌를 이용할 때는 IQAccount.getDefaultAccount() 로 이용하시면 됩니다.

예를 들어 기본 계좌를 바스켓과 연결시

stock_port = new Basket(IQAccount.getDefaultAccount(), stock_num, IQEnvironment.aum * stock_weight);

입니다.

기본 계좌 이름을 변경하거나 계좌 번호를 설정하기 위해서는 아래와 같습니다.

var DefAcc = IQAccount.getDefaultAccount();

DefAcc.accountName = "기본 계좌 이름";

DefAcc.accountNum = "2222";


stock_port.setPortfolioBuilder() 함수를 이용하여 포트폴리오 구성 함수 stockPortfolio를 등록하면

향후 stockPortfolio를 함수에서 선택된 20종목은 동일 비중으로 구성됩니다.



앞으로

유니버스 구성을 위한 필터 함수,

종목 선택을 위한 지표 함수, 

주식 포트폴리오 구성을 위한 stockPortfolio() 함수,

리밸런싱을 위한 onDayClose() 함수 등을

기본 템플릿으로 작성해서 올리도록 하겠습니다.


전략 작성에 도움 되었으면 합니다.

감사합니다. ^^


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