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

과거 주가 로딩 관련 문의사항

thrufore 2017.10.24 17:41 조회수  538 추천 0

안녕하세요, 인텔리퀀트 덕분에 많은 도움을 얻고 있음에 먼저 감사드립니다.


과거 주가를 이용한 시뮬레이션을 하던 중 이상한 점이 있어 문의 드립니다.

아래 코드를 개별적으로 사용하여 과거 DATA를 로드 하는 경우에는 문제가 없으나,

filter 안에서 사용하는 경우, 일부 DATA가 제대로 loading 되지 않는 것 같습니다.

stock.loadPrevData(0, 15, 0);

(filter에서 먼저 과거 데이터를 로딩한 후 다시 개별적으로 로딩하는 경우에도 마찬가지로 일부 DATA가 누락되는 듯 합니다.)


제가 과거 데이터 로딩하는 방법에 문제가 있는지, 혹은 다른 고려사항이 필요한지 궁금합니다.


- TEST 결과중 일부...

[2017-02-01] month:0::8260

[2017-02-01] month:0::14300

[2017-02-01] month:21::0

[2017-02-01] month:21::0

[2017-02-01] month:42::7680

[2017-02-01] month:42::17400

[2017-02-01] month:63::7380

[2017-02-01] month:63::16200



- TEST용 코드..


var account1, basket1;


function initialize() {


    IQEnvironment.stockTax = 0.013;    // 세금 0.3 %, 슬리피지 1%

    

    account1 = IQAccount.getDefaultAccount();

    account1.accountName = "BASE";


}


var lastRebalMonth1 = -1; 

var cutline = 6;


//필터에서 과거 데이터 로딩

function stockFilter(stock) {

    stock.loadPrevData(0, 15, 0);

    return true;

}


//함수로 로딩

function load(stock){

    stock.loadPrevData(0,15,0);

}



function onDayClose(now) { 

    if ((now.getMonth() != lastRebalMonth1 &&  now.getDate() >= 1)) {  


        // 기본비중정의        

        var universe = IQStock.filter(stockFilter);

        var st = IQStock.getStock('A000020');

        

// load(st);

//      load(universe[3]);

        

        for (var i = 0 ; i < 13 ; i++){

        logger.debug("month:" + i*21 +"::"+st.getAdjClose(i*21));

    logger.debug("month:" + i*21 +"::"+universe[3].getAdjClose(i*21));}

    

//    account1.buy("A000020", 1);

        

        lastRebalMonth1 = now.getMonth();

    }

}

댓글 2
안녕하세요. thrufore 님
ETF 매매 준비를 위해 해외 지수를 넣는 과정에서 우리 영업일과 해외 영업일의 차이로 이런 오류가 발생했습니다. 지금은 정상처리 되었습니다.  
감사합니다.
푸른주전자 2017.10.25 10:03
빠른 답변 감사드립니다~
thrufore 2017.10.25 13:43
댓글 등록을 위해서 로그인해주세요.
 
최신 게시글