[암호화폐] 프로젝트#2 : Telegram Bot을 이용한 매매(2)

in #sct5 years ago

개발을 하다 보면 정작 중요한 것보다 그전에 개발하여야 할 여러 가지 필수적인 사항들이 나옵니다.
오늘은 이런 주변 사항들에 대하여 개발한 내용을 정리합니다.

설정 저장/읽기

일전에도 언급하였듯이 개발한 프로그램이 완벽할 수가 없습니다. 그래서 예상하지 못한 상황이 생기면 죽게 됩니다. 그럼 그 프로그램을 다시 돌리는 프로그램을 개발하면 됩니다. 이건 이전 글에서 언급을 하였고요[1].

프로그램이 다시 동작하게 되면 이전의 상태를 기억하고 있어야 하는 경우가 있습니다. 이른바 구성 정보들은 변경이 생기면 상시 저장을 하고, 프로그램이 처음 기동되었을 때 이 값들을 읽어들여 이전 동작 상태에서 시작을 해야 합니다. 이전 글에서는 저장하고 읽는 방법에 대해서만 언급을 하였는데, 이번에는 좀 더 자세하게 기술합니다.

파일에 저장할 때 json 형태로 저장하면 향후에 읽을 때 편합니다. OrderedDict라는 패키지가 이런 것을 쉽게 처리하게 해 주더군요. 기존에 사용하던 토큰list에 이름을 추가하는 개념입니다. 사용법은 아래와 같습니다.

from collections import OrderedDict
config_data = OrderedDict()
config_data["interest_symbols"] = ['SCT', 'SCTM', 'DEC', 'SPT']

#load 
config_data = load_json_from_file(TELEBOT_CONFIG) 

# save
save_to_file_json(TELEBOT_CONFIG, config_data)

그리고 파일에는 이런 형식으로 저장이 되어 있습니다.


동작 명령어 체계 잡기

명령어 체계도 중요합니다. 혼란스럽지 않으면서도 입력을 최소로 할 수 있는 방법이 필요합니다. 일단 명령어는 최대한 짧게 한 글자로 정의합니다. 그리고 대소문자 구분없이 모두 가능하도록 하였고요. steem-engine에서는 토큰 명을을 꼭 대문자로 입력을 해야하는데, 이런 것이 은근히 불편합니다.

  • B token 가격 수량 : 매수 주문
  • S token 가격 수량 : 매도 주문
  • A token : 가격 리스트에 토큰 추가
  • D token : 가격 리스트에서 토큰 제거
  • P : 가격 리스트에 있는 토큰들의 현재가
  • token : 해당 token의 4 호가
  • H : help

사용 중에 명령어 양식을 잃어버릴 수 있으니, 명령어를 확인해 볼 수 있는 help도 추가합니다.

우선 p를 입력하면 현재 등록된 토큰들의 현재가를 보여줍니다.

토큰 명을 입력하면 특정 토큰의 현재 4 호가 정보를 보여줍니다. 공간이 제한적이어서 수량에서 소숫점 이하는 과감하게 생략을 했습니다. 여백이 많아져서 한결 보기가 편합니다.

토큰을 추가하고 삭제하는 명령어가 입력이 되면 토큰 리스트에서 해당 토큰을 추가(append) 혹은 삭제(remove) 합니다. 그 후 이 데이터를 파일에 기록해 놓습니다. 만약 지우고 하자 하는 토큰이 리스트에 없으면 오류 메세지를 돌려줍니다.

            ans = "adding : " 
            save = 1
            if ( symbol[0] == 'D' ) :
                ans = "removing : "
                if (token in config_data["interest_symbols"]) :
                    config_data["interest_symbols"].remove(token)
                    print("delete token", token, config_data["interest_symbols"])
                else :    
                    save = 0
                    ans = "removing fail(not exist):  "
                    print("delete token not exist", token)
            else :
                config_data["interest_symbols"].append(token)
                print("add token", token, config_data["interest_symbols"])
            if (save) :
                save_to_file_json(TELEBOT_CONFIG, config_data)
            ans +=  token
            bot.sendMessage(chat_id = update.message.chat_id, text=ans)

프로그램을 종료했다가 다시 돌려도 토큰 리스트가 최신 상태로 시작을 합니다.

만약 혼자만 쓰는 봇을 만든다면 간단하게 만들 수 있겠지만 여러 명이 함께 사용하는 봇을 만든다면 사용자별로 다른 토큰 리스트를 가질 수 있으므로, 이런 부분도 보강을 해야 합니다.

이제 주문을 낼 수 있는 준비 과정은 모두 마친 것 같습니다. 다음 편에서는 실제 주문을 내는 방법과 주의 사항에 대하여 기술할 예정입니다.


[1] https://www.steemcoinpan.com/sct/@tradingideas/1-3

Sort:  

jcar토큰,
8월 구독 보팅입니다.
행복한 8월 되세요. ^^

돈이 되는 프로그램 만들면 꼭 공유해주세요.ㅋㅋㅋ

이건 툴이라서, 돈이 될지는 모르겠네요 ㅎ

와. 텔레그램 기반 거래봇을 ㅎㅎ. 당연 돈이 되지요. 수수료 받아서요. 트론에 유명한 팁봇 seedit만 봐도 수수료 수익이 상당합니다.

Thank you for your continued support towards JJM. For each 1000 JJM you are holding, you can get an additional 1% of upvote. 10,000JJM would give you a 11% daily voting from the 700K SP virus707 account.

Hi @tradingideas!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 4.410 which ranks you at #2417 across all Steem accounts.
Your rank has dropped 104 places in the last three days (old rank 2313).

In our last Algorithmic Curation Round, consisting of 284 contributions, your post is ranked at #126.

Evaluation of your UA score:
  • Some people are already following you, keep going!
  • The readers like your work!
  • Good user engagement!

Feel free to join our @steem-ua Discord server

오~ 멋진 기법들~

여러명이 사용하려면 사용자별로 필요한 정보를 데이테베이스에 저장해두고 사용하면 될 것 같네요.

조만간 저도 도전해보겠습니다~

디비에 저장하면 더 좋겠죠.

Posted using Partiko Android

텔레그램 거래봇! 멋진 구현입니다!

휴대폰으로 거래를 할 수 있으니 편합니다.

Posted using Partiko Android

Coin Marketplace

STEEM 0.30
TRX 0.12
JST 0.034
BTC 63688.35
ETH 3125.30
USDT 1.00
SBD 3.97