Python

1차적으로 개발은 완료된 것 같다. 이제 실제로 서버에 올려서 수익이 실제로 나는지, 오류가 발생하지 않는지 확인해 볼 계획이다.예외 처리다음과 같은 오류 혹은 예외사항을 처리하였다.restapi 요청 초과로 429 오류 처리일정 시간 이상 매수 성공 못하는 경우 거래 포기계좌 잔액 부족한 경우 거래 포기Lock을 획득하고 동기 작업도중 멈춰서 Lock 해제가 안되는 경우프로그램 흐름 정리 5개의 비동기 함수가 프로그램을 구성한다. 이들은 모두 비동기적으로 작동하며 본연의 역할? 을 수행한다. 각 작업들은 서로 독립적으로 작동한다. 각 함수가 수행하는 역할을 DFD에 작성해놓았다. 서버와 통신하는 Sequence Diagram이다. 원활한 거래와 요청한도를 초과하지 않기 위해, 최대한 한번에 조회하게끔 ..
조건에 맞으면 거래를 실행하는 단순한 로직은, 너무나 많은 문제를 일으킨다. 간단히 생각해봐도, 다음과 같은 문제가 발생할 수 있을 것 같다.예상되는 문제점들거래 조건에 맞으면→거래 시작 에서, 만약 조건에 맞는 코인이 50개면 50개,100개면 100개 를 동시에 거래하게 된다.  a. 서버 cpu 리소스가 감당할 수 있는가?    b. 50개, 100개를 동시에 거래하면 손실 리스크를 잘 관리할 수 있는가?    c. API와 WebSocket이 이런 대량 거래를 실시간으로 처리하는데 요청 수 제한에 걸리지 않을 수 있는가?거래중인 코인인데, 단순한 로직으로 인해 거래 대상 코인에 또 추가된다면 같은 거래가 2개 실행되는데 이를 막아야 하지 않을까?공유자원(자료구조) 추가 및 통신 Sequence 수..
대략적인 프로그램의 흐름을 구상했다. 나의 생각은 일단1. 모든 코인을 탐색하며 1차적인 조건을 만족하는(거래를 시작할) 코인을 검색2. 해당 코인을 팔로우하며 조건을 실시간 계산, 특정 조건 부합 시 구매 요청* 2. 를 구현할 때 멀티프로세스/멀티쓰레드/비동기(asyncio)를 고려하였고, 내가 구상한 조건에는 비동기(asyncio)를 활용한 방식이 가장 적합하다고 함.이다. 조금 더 구체화해서 기초적인 프로세스 흐름 다이어그램을 그려보았다.WebSocket으로 전부 사용하려 하였으나, [과거 n개의 분봉 조회] 기능은 Rest API를 통해서만 제공하는 것으로 확인했다.나는 모든 코인을 계속 조회하면서 조건에 맞는 코인을 찾으면 비동기적으로 거래를 시작하게끔 할 생각이기에, 모든 코인을 Rest ..
https://www.acmicpc.net/problem/1182문제분석부분수열의 합이 제시한 값과 일치한 경우가 몇번?!해결과정백트래킹에 대해 배우고, 구현해보았다.부분수열은 곧 부분집합이라고 볼 수 있으니, 문제를 "부분집합의 합"이라고 생각해도 될 듯 하다.결국, 모든 부분집합 각각의 합을 계산하고 주어진 값과 비교하는 것 이다.더보기주어진 집합이 7,3,-1 이라면7 / 3 / 1 / 7,3 / 3,-1 / 7,-1 / 7,3,-1 을 구하고, 이 부분집합들의 합을 구해야 함.모든 부분집합을 구하는 방법을 생각해보니어떠한 값+그 뒤에 값들(여기는 1개~가능한 최대까지)을 전부 세면 된다.그 뒤에 값이 2개이상이면...?이를 해결하기 위해 재귀와 백트래킹을 활용한다.이 모든 경우를 다 따지기 위해...
https://www.acmicpc.net/problem/2528 2528번: 사다리 첫 번째 줄에 층 수 N (1 ≤ N ≤ 3,000)과 층의 길이 L (1 ≤ L ≤ 3,000, L은 짝수)이 주어진다. 가장 아래층은 1층이고 가장 위층은 N층이다. 다음 N개의 줄 중 i번째 줄에는 i층의 막대기의 길이 l (1 ≤ l www.acmicpc.net 문제분석 문제 요약: 게임을 연상하면 편하다. n개의 층이 있고 층의 가로길이도 주어준다. 막대기는 좌우로 움직인다(게임처럼 반대편끝에 부딛히면 반대방향으로 감). 막대는 1시간단위마다 1칸씩 움직인다. 철수는 맨 아래층 막대에서 위로 올라가려고 하는중이다. 철수는 좌우이동하는데 시간을 소모하지 않는다. 막대기 좌표가 위아래 겹치는 경우에 철수는 위아래 ..
https://www.acmicpc.net/problem/1041 1041번: 주사위첫째 줄에 N이 주어진다. 둘째 줄에 주사위에 쓰여 있는 수가 주어진다. 위의 그림에서 A, B, C, D, E, F에 쓰여 있는 수가 차례대로 주어진다. N은 1,000,000보다 작거나 같은 자연수이고, 쓰여 있는 수www.acmicpc.net문제분석주사위 면이 정해져있음을 유의할것. 풀이는 간단하다. 전개도를 접어서 주사위를 만들고, 그 주사위들을 합쳐서 N*N*N크기의 대형 주사위를 만든다. 이후, 바닥면을 제외한 5면의 숫자의 합이 최소일때 그 최소값은?해결과정중고등학교 수학적 감각이 있다면, 더욱 쉽게 풀 수 있는문제이다. 보통 이런문제는 N이 1일때,2일때,3이상일때~ 로 나눠서 풀기에, 이 문제도 동일하게 ..
https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 문제분석 탑이 있고, 그 탑의 꼭대기에서
https://www.acmicpc.net/problem/1711 1711번: 직각삼각형 첫째 줄에 점의 개수 N(3 ≤ N ≤ 1,500)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 점의 x좌표와 y좌표가 빈 칸을 사이에 두고 주어진다. 좌표값은 절댓값이 1,000,000,000을 넘지 않는 정수이며, 주 www.acmicpc.net 문제분석 직각삼각형이 가능한 점들로 만들 수 있는 직각삼각형 갯수를 구하면 되는 단순한 문제이다. 해결과정 피타고라스 정리를 활용하였으며, 시간을 최대한 줄이기 위해 한번씩만 탐색하도록 하였다. dotcount=int(input()) arr=[] for i in range(dotcount): arr.append(list(map(int,input().split()))) ..
chabin37
'Python' 태그의 글 목록