Banco7

cdc wiki
Banco7 (토론 | 기여)님의 2018년 6월 27일 (수) 21:04 판 (기술적 분석매매 설계)
이동: 둘러보기, 검색

프로젝트 개요

기술개발 과제

기술적 분석매매 시스템

과제 팀명

Banco7

지도교수

김성환 교수님

개발기간

2018년 3월 ~ 2018년 6월 (총 4개월)

구성원 소개

서울시립대학교 컴퓨터과학부 2012920026 박재형(팀장)

서울시립대학교 컴퓨터과학부 2013920029 박찬호

서울시립대학교 컴퓨터과학부 2013920050 이준형

서론

개발 과제의 개요

개발 과제 요약

급변하는 세계 화폐시장 속 가상화폐 기술적 분석매매 플랫폼을 개발한다.

개발 과제의 배경 및 효과

블록체인 기술과 가상화폐는 절대 분리해서 생각할 수 없다. 현재 우리가 주식을 거래하는 방법처럼 가상화폐도 같은 방법을 적용할 수 있다. 여러 기술적 분석매매 알고리즘을 통해 해당 화폐의 가치가 올라갈 것인지, 내려갈 것인지 예측하기 위한 시스템을 개발하기 위함이다. 비트코인, 이더리움과 같은 코인뿐만 아니라 토큰에서의 가치를 비교하여 기술적 분석하여 사용자의 가상화폐 시장에서 보다 정확한 정보를 제공한다.

개발 과제의 목표 및 내용

회원정보 및 고객관리를 저장하고 여러 기술적 분석매매 알고리즘을 적용한다. 가상화폐를 매매할 때는 거래소 BITTREX의 API를 갖고 와 매매 뿐만 아니라 매매 시 필요한 여러 기능들을 적용한다. TradingView API를 이용하여 차트와 데이터를 사용자가 적용한 알고리즘으로 해당 가상화폐를 전략적으로 분석한다. 분석이 끝나면 ReactJs로 사용자에게 결과를 보여주며 매도 포지션 혹은 매수 포지션을 알려준다. 개발 과제 목표로 회원정보와 고객관리를 통한 사용자의 Needs를 DB에 저장하고 Bittrex API를 적용한 UI를 TradingView로 사용자에게 보여주는 것이다.

관련 기술의 현황

관련 기술의 현황 및 분석(State of art)

 가. Bittrex
◇ 미국 최대 암호화폐 거래소
  전 세계에서 가장 다양한 거래시장을 보유한 거래소로 2014년에 설립한 블록체인 플랫폼이다. 다단계 지갑 전략으로 모든 사용자에 대해 이중 인증을 가능하게 하고 여러 계층에서 추가 보안 기능을 제공한다. 현재 존재하는 거래소 중 속도가 가장 빠르다. 1세대 거래소인 폴로닉스 다음으로 세계 2위의 거래량을 갖고 있다. 그리고 폴로닉스보다 간단한 UI와 상장된 알트코인의 수가 많아 이용자가 전 세계에서 가장 많다. 취급하고 있는 암호화폐의 종류가 많아 다양한 기술적 분석매매 알고리즘 적용이 용이하다. 최근 BTC, ETH 등 코인보단 USD 기준을 적용하여 거래소를 운영하기 시작해 더 많은 이용자가 늘어날 것이라 전망된다.
  나. TradingView
◇ 브라우저 안에 구현한 금융 플랫폼
  현재 암호화폐 거래소 시장에서 가장 많은 사용자를 보유한 차트 분석 툴이다. 사용자가 필요한 각종 차트들을 쉽고 간편한 차트를 보게 해준다. 차트 계산에 필요한 툴과 데이터를 사용자 필요에 맞게 제공하여 쉽게 사용하도록 한다. 주식현재가 조회, 가격패턴 분석 등 암호화폐 시장 분석을 정확하게 하기 위해 백여개가 넘는 기술적 분석 매매 지표와 알고리즘을 제공한다. 각종 거래소에 따라 통일된 레이아웃으로 차트 분석에 도움을 준다. 또한, 정해진 틀에 따라 차트를 보는 것만이 아니라 사용자의 Customizing으로 각자 트레이딩 스타일로 맞춰 사용이 가능하다. 이 밖에도 매수, 매도 지점을 알려주는 알림 기능을 포함해 사용자가 그 시기를 놓치지 않게 한다.
 다. API 사용 
◇ Bittrex API를 사용하기 위해 private key를 요청하여 받아 사용한다. 오픈 소스인 TradingView API를 사용한다.

시장상황에 대한 분석

 가. Poloniex
◇ 전 세계 1위의 거래량을 가진 거래소
  1세대 거래소인 폴로닉스는 작은 단위까지 거래를 취급하며 빠른 업데이트 스트리밍을 갖고 있다. 비트렉스만큼의 많은 알트코인을 보유하고 있고 유동성이 좋다. 무엇보다 낮은 거래 수수료를 갖고 있어 사용자도 많다. 렌딩 시스템을 갖고 있어 이를 잘 이용하여 코인 위험도가 상대적으로 낮다. 하지만 느린 대응과 상장시킨 알트코인의 수가 적어 점차 비트렉스에 밀려 사용자가 줄어들 고 있다. 
 나. G20 회의를 통한 가상화폐의 가상자산 인정
◇ G20 재무장관·중앙은행총재회의에서 가상(암호)화폐를 사실상 가상자산으로 인정
  가상자산에 대한 별도 가이드라인도 국가 차원에서 만든다. 러시아는 푸틴 대통령 주도로 러시아 가상 자산 '루블코인' 발행을 추진하고 있으며 에스토니아는 디지털 통화 에스트코인(Estcoin) 발행을 완료했다. 베네수엘라는 석유와 교환할 수 있는 '페트로(Petro)'를 발행한다. 캐나다 정부는 CDBC 발행을 검토하고 있다. 연구 수준이 아니라 현금 이상 기능을 갖춘 CDBC로 일상생활 활용 방안까지 용역을 발주, 타당성 검토에 들어갔다. 한국은 현재 거래소 압수수색과 암호화폐공개(ICO) 전면 금지 등 일방 규제를 하고 있지만 국제 상황의 변화에 맞춰 변화의 움직임을 보이고 있다.
 다. 늘어나는 암호화폐 자동 트레이딩 봇
◇ 국내 와치봇, 코인썸과 해외 바이낸스의 자동거래시스템 등
  국내에서 암호화폐 자동거래 분야 선두주자인 와치봇의 경우 2018년 6월 현재 약 8천억원에 가까운 금액이 거래되었다. 와치봇은 따로 사용비를 걷지 않으므로 매출액의 확인은 어렵지만 8천억원은 상당히 큰 액수라고 할 수 있다. 바이낸스의 자동거래시스템 등 해외에도 많은 시스템들이 생기고 있다. 하지만 아직까진 시장은 초기 성장단계라고 할 수 있으며 보다 많은 기능과 편리성을 무기로 다가가면 좋은 결과를 낼 것이라고 생각한다.

개발과제의 기대효과

경제적, 사회적 기대 및 파급효과

세계 암호화폐 정보 업체인 코인힐스에 따르면 국내 최대 거래소인 빗썸은 비트렉스에 이어 4위를 차지하고 있다고 한다. 그런데 빗썸에 이어 신규 거래소들이 생기면서 기존의 빗썸과 같은 국내 1세대 거래소들의 빈틈을 파고들어 암호화폐 시장계를 흔들어 놓는다고 한다. 하지만 최근까지 거래소들이 많이 생겨났기 때문에 국내 거래소보단 더 거래량이 많고 안정적인 비트렉스를 이용하여 국내 거래소 간의 보안 및 수수료 경쟁의 다른 빈틈을 찾아 사용자가 다양한 거래소들을 편하게 이용할 수 있도록 만든다. 너무 많은 거래소들이 있기 때문에 사용자들이 원하는 특정 거래소로 차트를 분석하여 보다 쉬운 암호화폐가 이루어질 것이다. 정부의 규제 있어 암호화폐 시장이 멈칫 하였지만 전 세계적으로 시장규모는 증가하고 있으므로 그에 따른 사용자도 증가할 것이다. 효과.png

기술개발 일정 및 추진체계

개발 일정

일정.png

구성원 및 추진체계

◇ 구성원

  • 박재형 : 회원 정보 관리 관련 웹 구현
  • 박찬호 : 서버 구성 및 구현, 서버-클라이언트 웹소켓 통신 구현
  • 이준형 : 웹 클라이언트 구현, API 분석 및 거래 알고리즘 구현

◇ 추진 계통도

  • 추진계통도.png

설계

설계사양

제품의 요구사항

요구.png

목적 계통도

  • 설계 목적 리스트

설계리스트.png

  • 목적 계통도

목적계통도.png

개념설계안

  • React.js를 이용해 대용량 데이터를 빠르게 처리할 수 있는 웹 프론트 영역을 구축한다.

React란? Facebook에서 개발한 Javascript Library로, MVC 중 View를 담당한다. 페이스북, 인스타그램 등에 사용되며 대용량 데이터를 처리하는 웹어플리케이션을 보다 maintainable하게 개발하기 위해 만들어졌다.

  • Tradingview API를 활용하여 백 영역에서 알고리즘을 수행하고, BITREX API를 활용하여 매매를 실행한다.

TradingView란? 전세계 Chart데이터를 무료로(상업목적용 포함)제공하는 사이트이다. 데이터와 차트 Library도 별도로 제공한다.

  • Cryptowatch API를 활용하여 몇 달 전의 코인ohlc데이터를 받아와 공식에 사용한다.

Cryptowatch란? 본래 차팅 라이브러리를 제공해주는 사이트지만, 여러 가지 데이터를 Restful API(Json)제공해주기도 한다.

  • 자바를 이용해 다양한 기술적 분석매매 지표를 활용한다.

대표적으로 1. 불린저 밴드 2. 스토캐스틱 3. 양봉 4. 모멘텀 등의 기법이 있다.

이론적 계산 및 시뮬레이션

  • 사이트 접속 -> 회원가입
  • 사이트 접속 -> 로그인
  • 로그인 -> 코인 설정 -> 분석매매기법 설정 -> 금액 설정 -> 날짜 설정 -> 매매 시작
  • (시작 후) 트레이딩 중단 -> 수익률 확인 -> 계좌 확인
  • (시작 후) 트레이딩 중단 -> 코인 변경 -> 분석매매기법 재설정 -> 시작
  • (날짜 마감) 수익률 확인 -> 계좌 확인
  • 로그인 -> 전략 공유 게시판 글 작성 -> 자신이 작성한 글 확인 -> 수정 -> 삭제

소프트웨어 설계

◇ 전체 설계도
전체설계도.png
기본 회원정보와 고객관리를 위해 자체DB를 사용한다. 회원정보로는 로그인 시 IP, 구글 OTP, 이름, 전화번호, 이메일 등의 정보를 보내주어 고객관리에 필요한 정보를 저장한다. TradingView, CryptoWatch, Bittrex, Bithumb 등의 API를 활용하여 사용자가 거래에 필요한 매도, 매수 지점을 차트로 알려준다. 매도, 매수 지점에 적용할 기술적 분석매매 알고리즘은 JAVA를 통해 적용한다. 
◇ 유스케이스(Usecase) 다이어그램
유스케이스.png
사용자는 처음 사용 시에는 회원가입을 필요로 한다. 회원가입 후 로그인하여 와치봇을 이용해 사용자가 원하는 코인을 선택하고 해당 코인에 적용할 매매 기법을 선택한다. 분석할 기간을 정하고 사용자가 수익을 확인하도록 한다. 이야기 게시판 등의 부가 서비스를 선택할 수 있다. 서버에서는 사용자가 선택한 코인에 대해 TradingView API를 통해 코인별 매매 데이터를 확인할 수 있게 한다. 사용자가 적용한 매매 기법으로 연산을 한 후 사용자에게 매도, 매수 지점을 알려준다. 사용자는 와치봇으로 예상 매도, 매수 지점의 알림을 받을 수 있게 된다.


기술적 분석매매 설계

1. API calling - Cryptowatch, Bittrex, Bithumb

Cryptowatch - 각종 거래소의 각종 코인에 대한 가격정보를 GET. 주로 코인의 현재가격과 특정 기간동안의 ohlc(시가, 종가, 저가, 고가)데이터를 받아오는데 사용. Bittrex, Bithumb - 내부 알고리즘에서 Buy, Sell 시그널 발생 시 거래소에서 매매하는데 사용.

2. 기술적 분석 지표(Index)

● 볼린저밴드 - 1분 간격의 가격데이터 20개를 Cryptowatch API에서 GET하여 평균과 표준편차를 구하고, 상한은 평균 + 표준편차x2, 하한은 평균 - 표준편차x2 로 구한다. 여기서 데이터의 개수 20개와 표준편차x2 같은 상수는 유저가 설정할 수 있다.

● 패턴 분석(Pattern Analysis) - 15분 전부터 현재까지 패턴을 분석해 n day 데이터를 전부 비교하여 최대한 비슷한 패턴(=가장 비슷한 이전 패턴)를 찾아낸다. 그리고 현재 이후에 나타날 차트의 패턴도 가장 비슷한 이전 패턴 이후의 패턴이 계속 될 것이라고 판단하여 매도, 매수 시그널링에 참고한다.

1) Cryptowatch의 API를 이용해 n day 동안의 1분 종가 데이터를 배열로 저장한다. (하루는 1440분)

2) Cryptowatch의 API를 이용해 15분 전부터 현재까지 15분 종가 데이터를 배열로 저장한다. (15개)

3) n day 동안의 1분 종가 데이터 배열을 15개씩 현재 데이터와 비교하여 비슷한 패턴을 찾아낸다. O(1440*n)

4) 패턴의 match 정도 분석에 벡터(15개)의 코사인 유사도를 이용한다. 중요한건 패턴의 모양이므로 모든 벡터 요소에서 벡터의 평균을 빼준다. 보정을 해줌으로써 모양이 아닌 값 자체가 차이가 나서 유사도가 낮게 나오는 일은 없애주었다. 1425(1440 - 15)번의 비교 중에 유사도가 가장 큰 데이터의 인덱스를 저장하여 추후 패턴을 구하는데 사용한다.

5) 가장 비슷한 패턴 이후의 패턴이 상승인지 하강인지 판단할 때는 PerasonCorrelation을 이용한다. x와 y사이의 상관관계를 가장 mat하게 나타내주는 지표이다.(-1<<1)

EX) 거래 중인 봇의 패턴분석을 그래프로 나타내보면

현재부터 15분 전까지 데이터 : 7039000.0 7038000.0 7030000.0 7029000.0 7026000.0 7027000.0 7029000.0 7029000.0 7025000.0 7016000.0 7016000.0 7011000.0 6987000.0 7001000.0 7007000.0

가장 일치하는 데이터 : 7194000.0 7195000.0 7193000.0 7191000.0 7192000.0 7193000.0 7190000.0 7194000.0 7188000.0 7186000.0 7184000.0 7182000.0 7176000.0 7181000.0 7182000.0

추후 데이터 : 7181000.0 7179000.0 7173000.0 7173000.0 7178000.0 7175000.0 7177000.0 7175000.0 7169000.0 7179000.0 7151000.0 7150000.0 7163000.0 7169000.0 7173000.0

Perason Correlation Coefficieint : -0.5684847540924184 --> SELL

기술적.png

15분 전부터 현재까지 패턴과 가장 비슷한 패턴을 찾으면(표 가장 일치하는 데이터), 그 후에는 차트가 상승했나 하강했나를 판단한다(표 추후 데이터). 추후 데이터가 얼핏 보기에는 떨어지는 것 같지만 정확한 수치로 계산한다. 즉, 피어슨 상관계수의 값을 보면 -0.5684847540924184 으로 -0.5보다 작기 때문에 어느 정도 뚜렷한 하락세라는 것을 알 수 있다. 따라서 알고리즘은 SELL신호, 즉 매도를 선택한다.

● 추세추종 알고리즘

골든크로스라고도 불리는 알고리즘이다. 쉽게 말해 50일 이동평균선이 200일 이동평균선을 앞질렀을 때 매수를 하고, 하락할 때 되파는 알고리즘이다. 50-200 같은 수치는 유저가 조정할 수 있다. 현재 구현된 부분은 Cryptowatch에 200일 데이터가 없는 관계로 120일-30일을 구현했다.

3. 매매 시나리오

1) 볼린저밴드의 하한보다 낮은 가격일 때 -> if) 패턴분석으로 추후 패턴의 pearsonCorrelation이 0.3 이상이면 구매; else if) pearsonCorrelation이 -0.3 이하면 판매; else) 대기;

2) 볼린저밴드의 상한보다 높은 가격일 때 if) 추후 패턴의 perasonCorrelation이 0.7 이상이면 구매; else if) -0.4 이하면 판매; else) 대기;

3) 볼린저밴드 밴드 내부일 때 -> if) 추후 패턴의 pearsonCorrelation이 0.7 이상이면 구매; else) 대기;

결과 및 평가

완료 작품의 소개

프로토타입 사진 혹은 작동 장면

◇ 프로토타입

  • 초기화면
  • 3개의 거래를 실행중인 화면
  • 작동 장면

관련사업비 내역서

사업비.png

완료작품의 평가

평가.png

향후계획

  • 개인의 자산을 다루기 때문에 보안에 더욱 신경써야할 것이다.
  • 기술적 분석을 통한 편리하고 수익을 창출하는 거래가 주된 목적이기 때문에 기술적 분석 방법을 보완하고 개선하여 더 많은 수익을 낼 수 있도록 해야할 것이다.
  • 기술적 분석 방법의 여러 지표나 옵션을 개인이 직접 설정할 수 있도록 하여 사용자의 의견을 반영하고 이를 다른 사람들과 공유할 수 있게 한다. 이를 통해 개인이 직접 더 나은 분석을 가능하게 한다.