[개발] 스몬 카드 투자[7]

avatar

마켓에 매물로 나와 있는 카드 중 소각 가능한 카드를 자동으로 매수하는 프로그램을 만들어 봅니다.

팔 카드를 찾는 코드는 일전에 만든 마켓에 있는 카드를 읽어서 종류 별로 저가 부터 출력해주는 부분을 활용하면 됩니다.

기존 코드는 단순히 카드 가격만 출력해주었는데, 이번에는 카드를 매수해야하기 때문에 steem 계정을 연동하는 부분이 추가되었습니다.

마켓에 있는 매물 정보를 받아온 후 오름차순으로 정리한 카드 정보가 slist에 들어있습니다. 여기에 있는 카드들을 한 장씩 보면서 카드 종류 별로 최저 매수가에 마진(현재 3%)을 추가한 가격보다 낮은 경우에 매수를 하는 코드입니다.

        for cd in slist :
            ty = types[cd[1][1]]
            if (cd[4] < min_price[ty] * MARGIN) :
                print("buy : ", types[cd[1][1]], cd[4], format(cd[1][0], "20s"))
                self.buyCard(cd)
                break

실제 매수는 peakmonsters에게 살 카드의 market_id와 금액을 전달해 주면 됩니다. beem에 있는 transfer() api를 사용하였습니다.

    def buyCard(self, card):
        memotext = "sm_market_purchase:" + card[5]  # + "-0"
        ret = self.stm_account.transfer('peakmonsters', card[4], "STEEM", memotext)

스팀d에서 확인을 해보니 원하는 형태로 전달이 되었군요.

스몬카드 마켓에도 저가 카드를 매수하는 봇들이 많습니다. 방금 소개한 방식을 조금만 응용을 하면 저가 카드 매수 봇도 만들 수 있을 것 같습니다.


카드 구매와 관련하여 중요한 부분 코드를 올립니다.

    def buy_cards_within_condition(self) :
        global MIN_PRICES
        slist, sglist = get_cards_price(1,0) # (print_all = 1, from file = 1)

        min_price = MIN_PRICES['general_beta_rewards']
        buying = []
        cnt = 1
        # cd = [id, [name, rarirty(카드종류)], 가격(str), 0, 가격(float)]
        # common or intersting card
        print('common : less than ', min_price['common'] * MARGIN)
        print('rare   : less than ', min_price['rare'] * MARGIN)
        print('epic   : less than ', min_price['epic'] * MARGIN)
        print('leg    : less than ', min_price['leg'] * MARGIN)
        types = {1:'common', 2:'rare', 3:'epic', 4:'leg'}
        for cd in slist :
            ty = types[cd[1][1]]
            if (cd[4] < min_price[ty] * MARGIN) :
                print("buy : ", types[cd[1][1]], cd[4], format(cd[1][0], "20s"))
                self.buyCard(cd)
                break

    # cd[4] price, [5] market_id, 
    def buyCard(self, card):
        memotext = "sm_market_purchase:" + card[5]  # + "-0"
#        self.stm.transfer('peakmonsters', amount=card[4], asset="STEEM", memo=memotext, account=self.account_name)
        ret = self.stm_account.transfer('peakmonsters', card[4], "STEEM", memotext)
        print('bought')




0
0
0.000
8 comments
avatar

jcar토큰 9월 구독 보팅입니다.
좋은 하루 보내세요. ^^

0
0
0.000
avatar

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.

0
0
0.000
avatar

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.398 which ranks you at #2480 across all Steem accounts.
Your rank has not changed in the last three days.

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

Evaluation of your UA score:
  • Some people are already following you, keep going!
  • The readers like your work!
  • Try to work on user engagement: the more people that interact with you via the comments, the higher your UA score!

Feel free to join our @steem-ua Discord server

0
0
0.000
avatar

코딩 하시는 분들 정말 대단해 보여요.

0
0
0.000
avatar

아무래도 코딩 공부를 해야할 것 같네요. ㅠㅠ

0
0
0.000
avatar

재미있어요. goodhello님 글 따라서 해 보시면 감을 잡을 수 있을 것 같아요.

0
0
0.000
avatar

저도 이거 만들려고 구상중인데... 먼저 만드셨군요.

열심히 참고해서 저도 만들어 보겠습니다~

0
0
0.000
avatar

재미있어요. 문제는 손해가 발생할 수도 있어서 그냥 재미로..

0
0
0.000