목적: 아비트라지 & 시스템트레이딩 & 거래소 소켓 프로그램을 유용하게 사용하기 위함.
방식: 오픈소스 분석
reference
Topic
-
에러 핸들링을 어떻게 하는지? (소켓이 중단되더라도 어떻게 프로그램 자체적으로 유지를 하는지?)
- 에러 정의 방법 Flow
기본 Error 클래스 선언 -> 이 객체를 상속받아 custom 에러 클래스 생성 -> custom 에러 클래스를 validation.js 에서 받아 validate 함수 생성
-
프로그램의 신뢰성을 어떻게 보장하는지?
- 소켓 통신 중 에러가 발생했을 경우
- 에러 자체를 이벤트로 받아 callback 함수를 실행하게 한다. callback 함수에서는 당연히 소켓을 재연결시키는 기능이 존재하여야 한다.
ws.on('error', err => { this.logger.error('Received error from server') callbacks.error && callbacks.error() this.logger.error(err) })
- 소켓 통신 중 에러가 발생했을 경우
-
연산을 어떻게 효율적으로 하는지?
-
로깅을 어떻게 하는지?
- callback 함수에 logger를 등록하여 사용한다.
'use strict' const { Console } = require('console') const Spot = require('../../../src/spot') const logger = new Console({ stdout: process.stdout, stderr: process.stderr }) const client = new Spot('', '', { logger }) const callbacks = { open: () => logger.debug('Connnected with Websocket server'), close: () => logger.debug('Disconnected with Websocket server'), message: data => logger.info(data) } const wsRef = client.partialBookDepth('bnbusdt', '5', '100ms', callbacks) setTimeout(() => client.unsubscribe(wsRef), 60000)
-
코드를 어떻게 예쁘게(남들이 이해할 수 있도록) 작성하는지?
목적: 트레이딩에서 가격을 숫자를 보기보다 가격의 움직임을 시각적으로 본다면 특정 현상을 찾기가 쉬워진다. 그러므로 퀀트 트레이딩과 관련한 데이터를 모두 화면에 띄우고자 한다.
reference
Topic
- 소켓 스트리밍 데이터를 어떻게 화면에 띄우는지?
- 이전 데이터를 ui 단에서 어떻게 캐싱해서 보여줄 것인지?
Topic
- EC2 용량이 부족할 때 용량을 늘리는