참고사항 시스템 트레이딩 관련 블로그들은 개인 경험을 바탕으로 작성되었습니다. 각자 자신만의 투자방식과 매매전략을 만들어 가시기 바랍니다.

개요

시스템 트레이딩에서는 여러 가지 지표를 계산하여 매매 로직에 매매 변수로 활용할 수 있습니다. 지표를 관리하는 것은 어려울 수 있지만 직접 지표를 계산하면서 새로운 아이디어를 얻을 수도 있습니다.

지표 관리 방안에 대해 설명합니다.

지표 객체의 스펙정보

이동평균선, 모멘텀, RSI, 볼린저 밴드, MACD 등이 대표적인 지표입니다. 각 지표의 계산식은 인터넷에서 쉽게 찾아볼 수 있습니다. 여기서는 계산식보다는 어떻게 지표를 구현할지에 대해 설명하려 합니다.

지표는 매매 로직에서 매매 시그널을 판단할 때 사용됩니다. 매매 로직(매수/매도)에서 사용되는 변수는 매매 변수이며, 이 중 일부는 바로 지표를 통해 생성된 변수입니다. 예를 들어, 이평선 간의 크로스를 통해 골든크로스와 데드크로스를 계산하는 것은 매매 로직에 해당하며, 각 이평선을 계산하는 것이 지표입니다.

종목 객체에서 캔들 데이터를 받으면 여러 개의 지표 객체를 호출하여 지표를 계산하도록 구현되어 있습니다. 지표가 하는 일은 외부에서 입력받은 캔들 데이터를 내부적으로 매매를 판단할 수 있는 값으로 제공하는 것입니다.

  • 지표 객체가 가지고 있는 정보와 메소드
    • 정보 (variable)
      • 지표이름을 가지고 있습니다. (String 형식으로 저장합니다.) (예 : 5일이평선), 그리고 지표변수의 접두어로 사용합니다.
      • 데이터변수를 가지고 있습니다 ( List형식으로 저장합니다.). 지표계산을 위해 데이터를 저장합니다.
      • 지표변수를 가지고 있습니다 (HashMap형식으로 저장합니다.). 계산된 지표변수를 저장합니다.(5일이평선 = XXXX)
    • 메소드 (method)
      • 지표계산(시가,고가,저가, 종가, 거래량)
        • 캔들데이터로부터 지표를 계산하는 역할을 담당합니다.
      • 지표변수() - 지표변수를 리턴하는 역할을 담당합니다.

다음은 지표 객체를 작성한 Pseudo 코드입니다.

지표 = {
    String 지표이름 
    List 데이터변수
    HashMap 지표변수 
    지표계산(시가,고가,저가, 종가, 거래량)  = {
        1. "데이터변수" 파라미터 변수를 저장(이평선일경우는 종가만 저장)
        2. "데이터변수"(최근 20) 읽어서 "지표를 계산"(이평선인경우 최근 20개를 읽어, sum후에 20개로 나누기함)
        3. 계산된 지표값을 "지표이름"+"지표변수명", "지표변수값"으로 저장
    }   
    지표변수() ={
        return 지표변수
    }
}

지표 내에서 입력되는 값의 소스는 주로 캔들 데이터입니다. 각 지표의 계산식은 지표계산() 메소드에서 구현됩니다. 지표를 계산할 때는 대개 특정 기간을 기준으로 하여 계산을 진행합니다. 그래서 지표 객체에는 최근 몇 일간의 데이터를 저장하여 관리합니다. (프로그램 메모리를 효율적으로 사용하는 것도 중요합니다.)

마무리

HTS/MTS에는 다양한 지표들이 있습니다. 지표 계산식은 인터넷 검색이나 Chat-GPT 등을 활용하여 쉽게 얻을 수 있습니다. 이 중 어떤 지표를 선택하여 매매 로직을 만들 것인지는 직접 넣고 백테스트를 통해 확인할 수도 있고, 실전 거래를 통해 지표와 그래프를 동시에 확인해보는 것도 도움이 됩니다. 제가 이동평균선을 사용했을때 추세 확인, 변동성 회피, 노이즈 제거와 같은 효과를 느꼈습니다. 지표의 진정한 의미를 파악하기 위하여 지표를 직접 계산해보고 테스트하는것이 분명 도움이 됩니다.

지표를 사용하여 수익을 증가시키는 전략을 만들기는 비교적 쉽습니다. 그러나 리스크를 줄이면서 수익을 높이는 것은 매우 어렵습니다.

댓글남기기