03
25

새로운 공시가 나왔는지 확인하는 방법은 다음과 같습니다.

 

맨 위 공시의 assets 를 한 변수1 에 저장하는 것으로 시작합니다. 그리고 다음 새로고침을 했을 때의 맨 위 공시의 assets 값을 변수2 에 저장합니다. 그리고 변수1과 변수2를 비교해서 둘이 같다면 새로운 공시가 없는 것이고, 반대로 두 값이 다르다면 새로운 공시가 떴으니 마켓에서 그 심볼을 가진 암호화폐를 매수하면 되겠습니다.

 

물론 위 방법이 가지는 한계도 있습니다. 새로고침을 하는 사이에 여러 개의 공시가 올라온 경우, 하나의 공시에 대해서만 반응할 수 있기 때문에 맨 위의 공시에만 반응하지 그동안 올라온 모든 공시에 대해 반응할 수는 없는 코드입니다. 이는 리스트를 만들어서 상위 여러개의 공시를 한번에 저장해놓는 방법으로 해결할 수 있겠습니다만, 기본적인 아이디어는 비슷하기에 여기서는 생략하겠습니다.

 

 

본 포스트를 비롯한 관련 포스트에서 작성한 코드를 사용하여 발생할 수 있는 API KEY 노출이나 AWS 원격조작으로 인한 현물 재산 피해 및 거래소 측에서 유저에게 조치하는 행위에 대해서는 책임을 져드리지 않습니다.

 

 

그런데 라이브 데이터를 가지고 짠 코드는 업비트에서 새로운 공시를 올릴 때까지 이게 작동하는지 안하는지 알 수가 없습니다. 따라서 테스트가 가능한 json 파일을 하나 생성해보도록 하겠습니다.

 

우리가 불러올 주소를 들어가서, 몽땅 복사한 뒤에 VS Code 에서 json 파일로 만들어내도 되고, 구조에 맞게 직접 만드셔도 됩니다. 저는 긁어와서 대충 수정했습니다.

 

 

 

{
  "data": {
    "more": true,
    "offset": 590,
    "posts": [
      {
        "id": 592,
        "assets": "SOLVE",
        "start_date": "2021-03-24T14:37:42+09:00",
        "end_date": "2021-03-31T14:37:47+09:00",
        "text": "공시1",
        "text_i10n": "공시1",
        "url": "__"
      },
      {
        "id": 591,
        "assets": "CTSI",
        "start_date": "2021-03-24T14:36:45+09:00",
        "end_date": "2021-03-31T14:36:52+09:00",
        "text": "공시2",
        "text_i10n": "공시2",
        "url": "__"
      },
      {
        "id": 590,
        "assets": "ENJ",
        "start_date": "2021-03-24T13:16:29+09:00",
        "end_date": "2021-03-31T13:16:32+09:00",
        "text": "공시3",
        "text_i10n": "공시3",
        "url": "__"
      }
    ]
  },
  "success": true,
  "time": "2021-03-25T15:00:42.081553"
}

test.json

 

 

코드도 test.json 을 불러와서 실행되도록 구성합니다.

 

import os
import json
import urllib.request as req
import time
import requests

with open('test.json', 'r') as f:
    json_data = json.load(f)

oldassets = json_data['data']['posts'][0]['assets']

while True :
    try :
        with open('test.json', 'r') as f:
            json_data = json.load(f)

        newassets = json_data['data']['posts'][0]['assets']
        
        print("old : " + oldassets)
        print("new : " + newassets)

        if oldassets == newassets :
            time.sleep(1)
            continue
        elif oldassets != newassets :
            print('new 공시 !!')
            break
    except KeyboardInterrupt :
        break
    except :
        print("page not found")

 

test_bot.py

 

 

이제 이 파일을 실행합니다.

python test_bot.py

 

그리고 나서 test.json 의 맨 위 요소에 대한 assets 값을 수정한뒤 저장합니다.

 

KRW-BFC 메시지는 다음 포스팅에서 설명하겠습니다.

 

 

test.json 의 맨 위 assets 가 solve 였던 것을 BFC 로 바꾸니 new 공시 !! 라는 메시지가 정상적으로 나타나는 것을 확인할 수 있습니다. 이제 정말 업비트 API 를 이용하여 시장가 거래만 구현하면 되겠네요.

 

 

COMMENT