happysms / TIL

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

TIL(Today I learned)

Binacne Connector Node

목적: 아비트라지 & 시스템트레이딩 & 거래소 소켓 프로그램을 유용하게 사용하기 위함.

방식: 오픈소스 분석

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)
  • 코드를 어떻게 예쁘게(남들이 이해할 수 있도록) 작성하는지?

Chart User Interface

목적: 트레이딩에서 가격을 숫자를 보기보다 가격의 움직임을 시각적으로 본다면 특정 현상을 찾기가 쉬워진다. 그러므로 퀀트 트레이딩과 관련한 데이터를 모두 화면에 띄우고자 한다.

reference

Topic

  • 소켓 스트리밍 데이터를 어떻게 화면에 띄우는지?
  • 이전 데이터를 ui 단에서 어떻게 캐싱해서 보여줄 것인지?

AWS

Topic

  • EC2 용량이 부족할 때 용량을 늘리는

About


Languages

Language:JavaScript 97.6%Language:HTML 2.4%