6. 비동기 처리(AtomicBoolean, Future<?>)
·
프로젝트/coin-trading
private final ConcurrentHashMap> userTrades; private final ExecutorService executorService; private final Map userRunningStatus; private final BackDataRepository backDataRepository; private final UpbitService upbitService;- 프로그램 실행 public void startTrading(AuthUser authUser) { String userId = authUser.getUserId(); // 이미 실행 중인 거래 프로그램이 있는지 확인 if (userTrades.con..
5. EC2 프로그램 동작중... 앞으로의 개선방향
·
프로젝트/coin-trading
□ 프로그램 동작중 □ 진행완료백데이터를 활용한 투자전략의 수익률 확인 틀잡기프론트앤드와 연동로그인을 통해 upbitKey를 받고 암호화로그 관리하기□ 진행중백데이터 자료 다듬기□ 진행예정CI/CD 파이프라인 구축while문이 싱글스레드로 실행중이라 로그인을 하더라도 프로그램 이용 불가→ 멀티스레드 or 비동기 처리 적용해보기while문은 자원낭비가 심함 Redis적용을 고려→ 비교 항목while 문 사용Redis 활용CPU 효율❌ 비효율적 (계속 반복)✅ 이벤트 기반, 효율적API 요청 부담❌ 불필요한 요청 많음✅ 최소화 가능 (캐싱)실시간 반응❌ sleep() 사용✅ 즉시 반응 가능다중 서버 지원❌ 중복 요청 발생✅ 하나의 데이터 공유 가능
4. 투자전략 변경 및 EC2 배포
·
프로젝트/coin-trading
□ 투자전략의 문제점chatGPT를 활용하여 투자전략을 수립하였으나, 과금등의 이유로 3.5버전으로 사용하니 투자판단이 모호하다고 생각됨- api 호출 마다 10초간 5~6번을 호출하면 "buy", "sell"이 교차하면서 나오게됨(매매 수수료 발생) □ 개선 투자 전략(변동성 돌파 전략)목표가 = 금일 시가 + (전일 고가 - 전일 저가) * 0.5매초 시세조회 api를 호출하여 목표가 도달 시 전액 매수매일 장 종료 시 전량 매도코인시장은 장 종료가 없으므로 오전 9시를 기준으로 실행 public void startProgram() throws IOException, InterruptedException, NoSuchAlgorithmException { double todayTarget ..
3. chatGPT 연동하기(투자 판단)
·
프로젝트/coin-trading
□ 업비트 API에서 차트 추출 API(json타입으로 추출하기)private static String candleExtract() throws IOException { // 업비트 차트 전달 15일치 일봉데이터 가져오기 OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://api.upbit.com/v1/candles/days?market=KRW-ETH&count=15") .get() .addHeader("accept", "application/json") ..
2. 업비트 매매 API 적용
·
프로젝트/coin-trading
https://docs.upbit.com/reference/%EC%A3%BC%EB%AC%B8%ED%95%98%EA%B8%B0 업비트 개발자 센터 docs.upbit.com □ 매매 API 적용 public OrderResponse orderCoin() throws UnsupportedEncodingException, NoSuchAlgorithmException { // 계좌 및 gpt와 연동하여 결정 String side = ""; String price = ""; String volume = ""; String ord_type = side.equals("bid") ? "price" : "market"; HashMap params..
1. 업비트 API 적용해보기
·
프로젝트/coin-trading
□ 업비트 API사용을 위한 key 발급https://upbit.com/service_center/open_api_guide Open API 안내 | 업비트(UPbit)업비트에서는 개발자와 사용자를 위해 Open API를 제공하고 있습니다. 업비트 API를 통해 마켓정보, 잔고 조회, 주문, 출금 등 다양한 기능을 활용해보세요.upbit.com □ 의존성 추가 // https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient implementation group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.14' // https://mvnreposit..
0. 프로젝트 설계
·
프로젝트/coin-trading
□ 프로젝트 개요투자 기준 및 차트를 chatGPT에 전달chatGPT가 분석하여 매매의견 프로그램에 전달투자 진행카카오 챗봇을 활용하여 결과 확인 □ 요구사항기능 요구 사항: 계좌 연동, 매매 시스템, 조회 □ 기술 스택 결정언어 및 프레임워크: Java, Spring Boot데이터베이스: MySQL, redis로그관리 : ELK인프라: 미정오픈소스 : chatGPT, Upbit, 카카오(예정)