스마트스토어
2023년 1월, 기존에 짜두었던 코드가 작동하지 않는 것을 발견하였습니다. 좌충우돌 개발일지 약 한달 쯤 전, 새해 계획이랍시고 세운것 3가지는 전부 코딩과 관련된 것이었습니다. 목적은 돈버는 것, … m.blog.naver.com 기존 코드에서 문제를 발생시킨 부분은아래 부분이었지요 a = 0 Bestkv = dict() for k, v in D.items(): if v[0] > a and 0 < v[3] <= D[‘KRW-BTC’][3]: a = v[0] Bestkv[k] = v[0] 위 코드는,1차 조건을 만족해서 일단 매수후보로 올라온 각 코인을 D라는 주머니에 넣은 후에, D에 있는 것들의 지난 1년간 최고점 대비 현재 하락폭(v[3])를찾아서, 그것이 비트코인의 최고점대비 현재 하락률보다 낮을 경우,즉 비트코인보다 덜 떨어졌을 경우에 매수 대상으로 삼는 것이었습니다. 그런데 여기서 문제가 발생한 것이었지요. 조건을 만족해서 D에 들어간 것을꺼내서 비교를 해야하는데, D안에 당연히 비트코인이 들어있을 줄 알고 비트코인 자체도 D안에서 호출을 한겁니다.그런데 비트코인 자체가 1차 조건을 만족을 못해서 D안에 들어가지 못하게되자 코드가 뻑이나버린겁니다. ㄷㄷㄷ애초에 잘못된 알고리즘으로매매를 하고있었다 와….8월에 만들어서 12월까지 카카오 업비트 먹통사태도 이겨내고매매를 시켜왔는데알고보니 그게 잘못된 알고리즘이었다니. 그래서 저기서 고쳐주기로 합니다.근데 고치려고 보니까 내가 짠 코드인데도 다시보니 뭐가뭔지 모르겠습니다. 전형적인,한번 짜서 돌아가면 뒤도안돌아보고 실행하고다시는 들여다보지않는 야매 코-더 의 습성상예전에 짠 코드를 다시보니 알아먹을수가 없네요 그래서 한줄한줄 실행시키고, 제가 예전에 작성했던 블로그 글을 다시 보면서 저게 무슨의미였는지 찾아냅니다. 일단 코인 별로 4개의 숫자를 가지는데,첫번째숫자는 전략사용시 누적수익두번째 숫자는 매수 후 존버시 누적수익세번째 숫자는 첫번째와 두번째의 차이(전략의 우월성)네번째 숫자는 앞서 말한대로 최고점대비 현재 얼마나 하락했는가. (하락률)4번의 지표를 주목한 이유는 이렇습니다.막말로 고점대비 80%정도 하락한 코인의경우추세가 완전히 무너졌을 수도 있고, 아니 그 코인에 근본적인 문제가 있을 수 있습니다.위믹스나 루나처럼 말이지요. 그래서 비트코인의 하락률과 비교한 것입니다.알트코인의 경우,비트코인보다 덜 하락한 것이어야한다 라는것이었지요. 머리는 굴려봤는데저 하락률을 – 비트코인의 하락률과 비교 – 전체 코인의 평균하락률과 비교 – 전체 코인 중 80%이상 하락한 것을 빼고 나머지의 평균하락률과 비교등등 방법이 있겠습니다만 그런데 그러려고하니 코드를 좀더 빡세게 뜯어고쳐야하는 상황이고, 오컴의 면도날 법칙을 적용하여 일단은 단순히 ‘상수’를 넣기로 했습니다. 그리고 따져보니저 부분에 문제가 또 있었는데요. a = 0 으로 지정해놓고그 a가 계속 업데이트되는 구조였는데이게 문제였습니다.왜냐면 a가 계속 업데이트가 된다는건 일단 매수후보군 D에서첫번째 코인은 무조건 BestKV(매수대상)에들어가고,첫번째 코인의 전략사용시 수익률로 a값을변경한 후,두번째 코인의 전략사용시 수익률이첫번째 코인의 전략사용시 수익률(a)보다나을 경우 코인을 추가하고, a를 업데이트하는 식입니다.이 경우 문제는 맨 처음 나오는 코인의 수익률이가장 압도적일 경우 그 뒤에 있는 다른 코인들은 매수 후보로 고려조차 되지못한다는 것입니다.이렇게 말이죠. 이렇게 하나만 나옵니다.첫번째 검토한 코인의 전략사용 수익률이 63%니까요. 그래서 저 a값이 업데이트되는 부분을 지워주면, 이렇게 여러 코인이 매수대상으로 추가됩니다. 여기서 a값을 0.85로 바꿔주면전략 사용시 수익률이 -15%이상인 코인은일단 다 매수대상에 집어넣고,그 다음에 해당 코인의 하락폭이 45%보다 덜할 경우 최종 매수후보군에 넣는 식으로 다음과 같은 코드를 짜면, 총 3개의 매수 후보군이 추려집니다. 서버에 올려서 돌려보니 잘 돌아가고는 있습니다.매수가 안돼서 걱정을 했는데 코드는 돌아가고 있고, 이평선과 현재가의 가격차이 등 타겟 프라이스 조건이 만족이안되어서 매수가 안되는 것 같습니다. 그렇더라도 일단 매수가 될때까지는하루 한번씩 서버에 들어가서이놈이 일이 되고있는건지 궁금해서 열어볼 것 같네요. 아 정말.쉽지않네. 개발자들 대단합니다. 이런걸 만들어서 돌리고 출시하는것도 대단하고,더 놀라운건 와 세상에 잘못된 알고리즘으로좋다고 매수매도 하고있던 지난날이 굉장히 무섭네요.