Analyzer 기능 추가
Analyzer를 통해서 선 그래프를 그릴 수 있는 `add_line_callback`를 추가되었습니다. Strategy에서 `add_line_callback` 콜백을 사용해서 선 그래프를 추가할 수 있으며, StrategySmaDualMl 전략에서 활용되고 있는 예제를 확인할 수 있습니다.
- https://github.com/msaltnet/smtm/commit/d67614f12cdfdebd312c1a55a7169a0721e16be6
- https://github.com/msaltnet/smtm/commit/1a4efb2b87e306e4e873247ca1f1bfcba1ed48f5
Binance Data Provider 추가와 Data Provider Interface 변경
Binance Data Provider가 추가되었습니다. 이제 Binance 캔들 정보를 사용해서 시뮬레이션을 할 수 있습니다. Config 모듈의 simulation_source 정보를 변경해서 시뮬레이션에 사용할 데이터를 선택 할 수 있습니다.
class Config:
"""시스템 전역 설정 모듈"""
시뮬레이션에 사용할 거래소 데이터 simulation_source: upbit, binance
simulation_source = "upbit"
Binance 캔들 정보와 Upbite 캔들 정보를 동시에 사용할 수 있도록 Data Provider의 반환 데이터 형식이 변경되었습니다. Data Provider는 복수개의 data를 하나의 리스트로 한 번에 전달할 수 있게 되었으며, 각각의 데이터는 추가된 type 항목을 통해서 구분할 수 있습니다. 변경된 Data Provider의 Data 형식은 다음과 같으며, Binance와 Upbit 데이터를 모두 제공하는 UpbitBinanceDataProvider가 추가되었습니다.
[
{
"type": 데이터의 종류 e.g. 데이터 출처, 종류에 따른 구분으로 소비자가 데이터를 구분할 수 있게 함
"market": 거래 시장 종류 BTC
"date_time": 정보의 기준 시간
"opening_price": 시작 거래 가격
"high_price": 최고 거래 가격
"low_price": 최저 거래 가격
"closing_price": 마지막 거래 가격
"acc_price": 단위 시간내 누적 거래 금액
"acc_volume": 단위 시간내 누적 거래 양
},
{
"type": 데이터의 종류 e.g. 데이터 출처, 종류에 따른 구분으로 소비자가 데이터를 구분할 수 있게 함
"usd_krw": 환율
"date_time": 정보의 기준 시간
},
{
"type": 데이터의 종류 e.g. 데이터 출처, 종류에 따른 구분으로 소비자가 데이터를 구분할 수 있게 함
"market": 거래 시장 종류 BTC
"date_time": 정보의 기준 시간
"opening_price": 시작 거래 가격
"high_price": 최고 거래 가격
"low_price": 최저 거래 가격
"closing_price": 마지막 거래 가격
"acc_price": 단위 시간내 누적 거래 금액
"acc_volume": 단위 시간내 누적 거래 양
}
]
Binance와 Upbit 두 거래소의 정보를 동시에 사용해서 시뮬레이션을 할 수 있는 SimulationDualDataProvider도 추가되었으며, Config에서 사용 여부를 선택 할 수 있습니다.
class Config:
"""시스템 전역 설정 모듈"""
SimulationDualDataProvider의 데이터를 사용할지 여부: normal, dual
simulation_data_provider_type = "normal"
Upbit, Binance 두 거래소의 캔들 정보를 동시에 사용하는 예제 전략 StrategySmaDualMl이 추가되었습니다. SML 전략과 동일한 로직을 가지고 있으며 Binance 데이터로 add_line_callback를 사용해서 선 그래프를 추가하도록 하였습니다. 아래 붉은 색 선이 Binance 데이터의 closing price입니다.
![68e7d3d8-9cce-4eb1-ae5c-166d591e1641](https://github.com/msaltnet/smtm/assets/9311990/ea339501-d679-449d-b582-1e29244e01c2)
- https://github.com/msaltnet/smtm/commit/e8f490e5b8d61ad2b3520f00e296498d6004488c
- https://github.com/msaltnet/smtm/commit/34ca568b6112e0b0d60f8e19afb9425c45d9e537
- https://github.com/msaltnet/smtm/commit/d46064c08344685aaf89042d321c8687b914e93a
- https://github.com/msaltnet/smtm/commit/77c482bf5658e31ce802b0fb82f0ffbbdabeb110
- https://github.com/msaltnet/smtm/commit/ac7f3421603b4dc4b7b19c0b9efa5b03be846e25
- https://github.com/msaltnet/smtm/commit/69d9c63f4a135f0357b441a27f4bc9d0d55e585d
- https://github.com/msaltnet/smtm/commit/b8f1f938be58e23d3a003cbd57c1f1985bc82120
- https://github.com/msaltnet/smtm/commit/1cb1adbd19b69ed2e8ab1b0be6678e6d1d57151b
- https://github.com/msaltnet/smtm/commit/3a038d740b82f370a46cd84b0bf7a1167b48402b
DataProviderFactory를 추가하여 Telegram Controller에서 Data Provider를 동적으로 선택할 수 있도록 하였습니다. 기존에는 Trader와 Data Provider가 일치하였지만 Binance 데이터나 다른 데이터를 복합적으로 사용하는 Data Provider를 추가해서 전략을 운영할 수 있게 되었습니다. 환율정보, 주가정보, 암호화폐 지수를 사용한 다양한 전략을 만들어서 운영이 가능합니다.
![image](https://github.com/msaltnet/smtm/assets/9311990/3a9a4da7-d285-498b-8329-63264d8b843f)
그 외 수정 사항
모듈이 많아짐에 따라 관리를 위해서 controller, data, strategy, trader 폴더로 구분하였습니다.
- https://github.com/msaltnet/smtm/commit/b58e100380ca6e28163944bf6ef5cb1688c4ebea
0.0024와 같은 값을 소숫점 4자리 수로 변경할 때 발생하는 부동 소수점 문제를 수정하였습니다.
- https://github.com/msaltnet/smtm/commit/2fff47b1e5caf1bee36388194e031c190585e786