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

거래량 기술적지표 질문2

LimSung Hyun 2020.07.07 14:34 조회수  209 추천 0



거래량에 대한 기술적 지표를 만들기 위해 거래량에 대한 250일간의 리스트를 만든 뒤 거기에 사용된 변수를 기술적 지표로 활용하는 방법을 생각해봤습니다.


그런데 당연히 초보자답게... 안되네요. 아래같은 에러코드가 뜨면서 안되는데 뭐가 문젠지 알 수 있을까요?


[abnormal terminated]TypeError: Cannot read property "getRSI" from undefined in <eval> at line number 241''




댓글 5
네 에러가 나는 이유는... 말씀드렸던 것처럼 기본제공하는 기술적 지표 함수들은 종목이나 지수의 종가데이터를 받도록 정해져 있기 때문에 RSI 블록 안에 끼울 수 있는 블록은 종목코드를 지정한 stock이나 지수 블록이어야 합니다. (또는 함수에서라면 일반적인 stock 객체 블록)
단순히 배열로 데이터를 만들어서 넣어 주기만 한다고 해서 동작하지는 않습니다. (블록에 대한 자세한 가이드가 빨리 나올 수 있도록 준비하겠습니다. ㅜㅜ)

블록으로 기술적 지표 함수를 만드려면 RSI를 계산해 주는 함수 자체를 만들어야 합니다. 
예를 들어, 자바스크립트로는 아래와 같이 거래량 RSI 함수를 만들 수 있을 것 같습니다. (정확한지 여부는 확인이 필요합니다. 대략 생각나는대로 코딩해 보았습니다. ^^)

function Volume_RSI(stock, period) {
    var up = 0;
    var down = 0;
    var up_count = 0;
    var down_count = 0;

    for (var i = 0; i < period - 1; i++) {
        var diff = stock.getTradingVolume(i) - stock.getTradingVolume(i+1);
        if (diff > 0) {
            up += diff;
            up_count++;
        } else if (diff < 0) {
            down += (-diff);
            down_count++;
        }
    }
    var au = up / up_count;
    var ad = down / down_count;
    var rsi = au / (au + ad);

    return rsi;
}

자바스크립트가 익숙하지 않더라도, 해당하는 키워드에 맞는 블록을 찾아 구성을 해 보시면, 블록으로도 이 함수를 만드실 수 있을 것입니다.
인텔리퀀트 2020.07.07 17:29
감사합니다. 많은 도움이 됐습니다.
LimSung Hyun 2020.07.08 00:28
고맙습니다 많은 도움이 됐습니다.
PeterPark 2020.12.11 23:32
잘 보았습니다 도움이 됐습니다.
WillPark 2021.01.10 21:15
도움이 되네요 좋아요!
DanyKim 2021.04.17 09:13
댓글 등록을 위해서 로그인해주세요.
 
최신 게시글