ホーム > 仮想通貨取引所のAPI解説 > 上場と同時に仮想通貨を自動で素早く購入するPythonのソースを公開(有料記事級)

上場と同時に仮想通貨を自動で素早く購入するPythonのソースを公開(有料記事級)

各取引所では、上場予定の通貨のプリセールが行われていますが、購入できる金額に上限があったり、抽選が行われて外れてしまったりなど、プリセールに参入してもほとんどのケースで大きな金額を稼ぐことはできません。 そこで、ねらい目なのが、上場開始と同時に通貨を購入することです。これを手動で行っている方がいますが、手動で行っても絶対に自動でやっている人に負けてしまいます。 今回は、これをPythonを使って自動で行う方法を解説したいと思います。

上場と同時に通貨を購入するのは、Gate.ioがおすすめですのでまだ口座を持っていない方はまず今すぐ↓のリンクから口座を作成してから先をご覧ください。

>>Gate.ioの取引手数料最大30%OFFの紹介リンク

なぜGate.ioで行うかというと、Gate.ioでは以下の画像のように上場する時間が明確に事前にアナウンスされ狙い撃ちしやすいのと、上場する通貨の銘柄もまだBinanceやBYBITなど大手の仮想通貨取引所に上場する前のものが多く将来性を期待できる通貨が多いからです。Gate.ioのPythonでのAPIの呼び出し方法を解説しているサイトは少ないので、是非参考にしてください。

(1)まず、「Gate.io」のトップページから「相場」->「もっと」をクリックすると以下のように上場する予定の通貨のリストと上場予定日時を確認することができ、上場が近いものは取引画面が作られていてカウントダウンされています。


(2)それでは、Pythonを使ってコードを書いていきましょう。まずgato.ioにログインしAPIキーを作成します。APIはv2(Spotのみ)とv4(Spotに加えFutureやMarginに対応)があります。今回はSpotしか使わないのでv2でも十分ですが、今後に備えv4で取得しましょう。また、APIの権限はwithdraw(引き出し)以外は全てチェックしておきましょう(手順はこちら)。

(3)Gate.ioのGitHubのモジュールを以下のコマンドでインストールします。
pip install --user gate-api

(4)それでは、いよいよ上場直後から現物を購入することができるソースを公開します。 まだ、PCにPythonをインストールしていない方は。「PythonのPCへのインストール方法」を参考にしてインストールしてください。 初心者の方は少し難しい話になりますが、gate.ioのJSONの戻りのリストの中は辞書になっておらず、通常他の取引所のAPIではresponce[0]["available"]というような表記でデータを取り出しますが、responce[0].availableという表記で取り出すのが他の取引所との違いです。また、Order関数が準備されており注文を入れたい時にはOrder型でデータを送り込む必要があります。このような情報はインターネット上にあまりなく非常に貴重なソースコードです。有料にすることも検討したいと思います。
import gate_api
from gate_api.exceptions import ApiException, GateApiException
from gate_api import ApiClient, Configuration, Order, SpotApi
import time
import datetime

def main():    
    configuration = gate_api.Configuration(
        host = "https://api.gateio.ws/api/v4",
        key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    )
    
    api_client = gate_api.ApiClient(configuration)
    # Create an instance of the API class
    api_instance = gate_api.SpotApi(api_client)
    
    #初期設定###
    base_order_price = 2   #USDT
    wait_time = 2
    wait_time_next = 1
    start_trade = 0
    
    ##取引通貨を設定します。
    currency_pair = 'XXX_USDT' 
    
    #上場する日時を設定します。
    target_month = 9
    target_day = 12
    target_hour = 12
    target_minute = 16

    while True:
        dt_now = datetime.datetime.now()
        if (dt_now.month == target_month and target_day == dt_now.day and target_hour == dt_now.hour and target_minute == dt_now.minute) or start_trade == 1:
            print("始まりました!!")
            start_trade = 1

      #spot walletのUSDTの保有量を確認する        
            api_response = api_instance.list_spot_accounts(currency="USDT")[0]
            spot_wallet = float(api_response.available)
            print(spot_wallet)
            
            #価格を抽出
            api_response = api_instance.list_tickers(currency_pair=currency_pair)[0]
            askprice = float(api_response.lowest_ask)
            bidprice = float(api_response.highest_bid)
            
      #注文を入れるパターンを選択してください
            #sellprice = round((askprice + bidprice)/2, 5)
            #sellprice = bidprice + 0.000001
            #sellprice = askprice - 0.000001
            orderprice = askprice

            #上場価格によりますが、1USDT以下の注文は出せないのでチェックします。
            if orderprice < 1:
                base_lot = round(base_order_price / orderprice,0) + 1
            else:
                base_lot = round(base_order_price / orderprice,1) 
            
            side ='buy'
            account = 'spot'
            print(base_lot * orderprice)
            
            if base_lot * orderprice < spot_wallet and orderprice > 0.000001:
                order = Order(amount=str(base_lot), price=orderprice, side=side, currency_pair=currency_pair)
                api_response = api_instance.create_order(order)
                print("oderしました")
            else:
                print("oder見送り")
            
            time.sleep(wait_time)
            api_response = api_instance.cancel_orders(currency_pair, side=side, account=account)   
            print("oderキャンセルしました")
            print(api_response)
            time.sleep(wait_time_next)
        else:
            print("まだです : " + str(dt_now))
            if target_day != dt_now.day and target_hour != 0:
                print("かなりゆっくり待ちます")
                time.sleep(3600)            
            
            else:
                if target_hour - dt_now.hour > 1:
                    print("ゆっくり待ちます")
                    time.sleep(1800)
                else:
                    if dt_now.second > 50:
                        time.sleep(0.5)
                    if dt_now.second < 51:
                        time.sleep(5)                

maini = 0
while True:
    try:
        main()
    except Exception as e:
        print ("=== エラー内容 ===")
        print ('type:' + str(type(e)))
        print ('args:' + str(e.args))
        print(e)
        maini += 1
        print("##############%Error:" + str(maini)) 
        time.sleep(2)
        if maini >= 1000000:
            break
        pass

    except:
        maini += 1
        print("##############%Error:" + str(maini)) 
        time.sleep(2)
        if maini >= 1000000:
            break
        pass

私の自動売買実績をリアルタイムに公開していますので是非モニターしてみてください(^^


関連コンテンツ