【Python】MEXC Global API取得と自動売買の実践手順|海外の仮想通貨・ビットコイン取引所の活用

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

こんな方に向けた記事です
  • 暗号資産(仮想通貨)の自動売買に興味がある
  • 海外の優良取引所であるMEXCのAPIサービス概要および利用手順が知りたい
  • Python環境でAPI機能を利用したい
目次

【仮想通貨】ビットコインの自動取引とは

ビットコイン自動取引とは、通貨情報参照・決済・送金等の取引に関連する操作を全てプログラムで自動化することを指します。自動取引の実装により、手動操作による手間削減はもちろんのこと、仮想通貨収益化に際した全体プロセスの効率化も期待できます。

APIについて

仮想通貨の自動売買ツール実装手段には「取引所が提供するAPI」が欠かせません。APIと聞くと、難しく感じるかもしれませんが、利用方法さえ分かれば意外と簡単にオリジナルツールが作れちゃいます。

本記事での解説範囲

本記事はビットコインの自動取引ツール作成に挑戦してみたい方向けに、「MEXC Global APIの取得手順」および「MEXC APIを活用した自動売買実践法」について解説します。

なお、後述のプログラムは、ビットコインを取引例として言及しますが、ビットコイン以外の通貨にも応用できるように解説しています。ビットトコイン以外の自動取引ツールを作成したい方も必見です!

【参考】仮想通貨の自動売買でできること

仮想通貨の自動売買手法はこちらの記事で解説しています。合わせてご覧下さい。

【仮想通貨】MEXC Global 取引所の概要・API取得方法

MEXC Global公式:

MEXC Globalとは

MEXCは、2018年設立の現物・レバレッジETF・先物取引を統合したワンストップの大手暗号資産取引所です。

世界中700万以上のユーザーにサービス提供しており、セキュリティ・リスク管理・ユーザーサービス・取扱銘柄の種類等の総合力でアジアでトップ3にランクインしている超優良取引所になります。

MEXCはトークン数と上場スピードが暗号資産業界最速という特徴があります。例えばSHIB、MANA、GALAなど、2021年ベストパフォーマンス暗号資産10に選ばれた通貨のうち6つをMEXCが初上場させています。

こんな方におすすめ

先物取引・現物取引といった主要のトレードだけでなく、ステーキングやDeFiなど様々なサービスが利用できる点がMEXCのメリットです。時価総額の低いコインを投資した方、取引所に上場する前の安価な通貨やトークンを先駆けて入手しガチホして大きな利益をあげたい方に非常にお勧めな取引所であると言えます。

MEXCの会員登録

自動売買ツールの作成にはMEXC APIを用いる必要があります。

APIを使うには、MEXCの会員登録が必須であるため、事前に対応しておきましょう。

MEXC APIキー・シークレットを取得

会員登録完了後、APIを利用するために、APIキー(公開鍵)とシークレットキー(秘密鍵)を取得が必要です。以下手順でそれぞれの進めていきましょう。

【Python】MEXC Global APIの使い方解説・自動売買に応用

それでは実際にMEXC APIを活用して自動売買機能を作成していきます。

【事前準備】Pythonライブラリccxtのインストール

MEXC APIはccxtという暗号資産APIを容易に扱えるライブラリに対応しているため、そちらを用いて自動売買機能を実装します。

事前にccxtをインストールしておきましょう!

pip install ccxt

APIキー・シークレットキーの設定

ビットコイン自動取引ツールの動作実行に必要なAPIキー・シーレットキーを定義します。必要となるライブラリも合わせてインポートしましょう。

import ccxt
from pprint import pprint

# APIキー&シークレットキー
API_KEY    = "YOUR API_KEY"
SECRET_KEY = "YOUR SECRET_KEY"

# bitFlyerのインスタンス作成
mexc = ccxt.mexc({'apiKey':API_KEY,'secret':SECRET_KEY})

取引通貨情報の取得

MEXCが取り扱う通貨情報は次のように取得可能です。

# マーケット情報
market = mexc.load_markets() 

# 出力
pprint(market)
# 出力イメージ
# 'BTC/USDT': {'active': True,
#               'base': 'BTC',
#               'baseId': 'BTC',
#               'contract': False,
#               'contractSize': None,
#               'derivative': False,
#               'expiry': None,
#               'expiryDatetime': None,
#               'future': False,
#               'id': 'BTC_USDT',
#               'info': {'countDownMark': '0',
#                        'etf_mark': '0',
#                        'fullName': 'Bitcoin',
#                        'limited': False,
#                        'maker_fee_rate': '0.002',
#                        'max_amount': '5000000',
#                        'min_amount': '5',
#                        'price_scale': '2',
#                        'quantity_scale': '6',
#                        'state': 'ENABLED',
#                        'symbol': 'BTC_USDT',
#                        'symbolStatus': '1',
#                        'symbol_partition': 'USDT',
#                        'taker_fee_rate': '0.002',
#                        'timeZone': 'Asia/Singapore',
#                        'vcoinName': 'BTC',
#                        'vcoinStatus': '1'},
#               'inverse': None,
#               'limits': {'amount': {'max': None, 'min': None},
#                          'cost': {'max': 5000000.0, 'min': 5.0},
#                          'leverage': {'max': None, 'min': None},
#                          'price': {'max': None, 'min': None}},
#               'linear': None,
#               'maker': 0.002,
#               'margin': False,
#               'option': False,
#               'optionType': None,
#               'percentage': True,
#               'precision': {'amount': 1e-06, 'price': 0.01},
#               'quote': 'USDT',
#               'quoteId': 'USDT',
#               'settle': None,
#               'settleId': None,
#               'spot': True,
#               'strike': None,
#               'swap': False,
#               'symbol': 'BTC/USDT',
#               'taker': 0.002,
#               'tierBased': False,
#               'type': 'spot'},

板情報の取得

板情報は次のように取得可能です。引数には通貨情報(symbol)を指定しましょう。

symbolには前述(market)で取得した通貨であれば全て指定可能です。

# 通貨選択
symbol = "BTC_USDT"

# 板情報
ticker = mexc.fetch_ticker(symbol)

# 出力
pprint(ticker)
# 出力イメージ
# {'ask': 21715.45,
#  'askVolume': None,
#  'average': 21501.6,
#  'baseVolume': 14147.437304,
#  'bid': 21715.44,
#  'bidVolume': None,
#  'change': 409.5600000000013,
#  'close': 21706.38,
#  'datetime': '2022-09-10T22:10:00.000Z',
#  'high': 21776.62,
#  'info': {'amount': '303510420.25',
#           'ask': '21715.45',
#           'bid': '21715.44',
#           'change_rate': '0.01923104',
#           'high': '21776.62',
#           'last': '21706.38',
#           'low': '21123.68',
#           'open': '21296.82',
#           'symbol': 'BTC_USDT',
#           'time': '1662847800000',
#           'volume': '14147.437304'},
#  'last': 21706.38,
#  'low': 21123.68,
#  'open': 21296.82,
#  'percentage': 1.0,
#  'previousClose': None,
#  'quoteVolume': None,
#  'symbol': 'BTC/USDT',
#  'timestamp': 1662847800000,
#  'vwap': None}

残高情報の取得

MEXCの口座残高情報は次のように取得可能です。

# 残高
balance = mexc.fetchBalance()

# 出力
pprint(balance)
# 出力イメージ
# {'BAT': {'free': 0.0, 'total': 0.0, 'used': 0.0},
#  'BTC': {'free': 0.0, 'total': 0.0, 'used': 0.0},
#  'ETC': {'free': 0.0, 'total': 0.0, 'used': 0.0},
#  'info': [{'amount': '0.0', 'available': '0.0', 'currency_code': 'BTC'},
#           {'amount': '0.0', 'available': '0.0', 'currency_code': 'USDT'},
#           {'amount': '0.0', 'available': '0.0', 'currency_code': 'ETH'}],

仮想通貨の注文する

仮想通貨の注文は次のコードで実行できます。

コード実行で実際に注文が走ります。取り扱い時は十分に注意しましょう。

現物|指値注文の場合

order = mexc.createLimitOrder(
                symbol = "BTC_USDT",   # 取引通貨
                price  = 4321000,      # 指値価格
                side   = 'buy',        # 購入(buy) or 売却(sell)
                amount = 0.123,        # 購入数量[BTC]
                )
# 出力
pprint(order)

現物|成行注文の場合

order = mexc.createMarketOrder(
                symbol = "BTC_USDT",   # 取引通貨
                price  = 4321000,      # 指値価格
                side   = 'buy',        # 購入(buy) or 売却(sell)
                amount = 0.123,        # 購入数量[BTC]
                )
# 出力
pprint(order)

仮想通貨注文の際、引数には下記を設定します。

引数名概要必須or任意
symbol取引通貨必須
price指値価格指値注文では必須
side売買(buy or sell)必須
amount仮想通貨取引数量必須

ビットコイン注文のキャンセル

注文のキャンセルには、注文した取引IDを引数に指定し、次のように実行します。

# 引数情報
order_id = '111111111'  # 注文ID
symbol   = 'BTC_USDT'   # 取引通過

# 取引キャンセル
cancel_order = mexc.cancel_order(symbol = symbol,  # 取引通貨
                                 id = order_id,    # 注文ID
                                )

# 出力
pprint(cancel_order)

注文情報照会

MEXCで注文中の取引情報は、次のように照会可能です。

# 取引通貨
symbol='BTC_USDT'

# 注文照会
trade_info = mexc.fetchOpenOrders(symbol)

# 出力
pprint(trade_info)
# 出力イメージ
# {
#   "status": 'ok',
#   "data": {"注文一覧情報が表示"},
#   "responsetime": "2021-03-22T03:52:44.192Z"
# }

取引履歴

約定した取引履歴は次のように照会可能です。

# 取引通貨
symbol='BTC_USDT'

# 取引履歴
history = mexc.fetchMyTrades(symbol)

#出力
pprint(history)
# 出力イメージ
#  'data': [{'data': [{'amount': 1e-05,
#                      'direction': 'buy',
#                      'id': 102010486785509397136938752,
#                      'price': 5777419.0,
#                      'trade-id': 100037130882,
#                      'ts': 1648687445068},
#                     {'amount': 2e-05,
#                      'direction': 'buy',
#                      'id': 102010486785509397136938751,
#                      'price': 5776869.0,
#                      'trade-id': 100037130881,
#                      'ts': 1648687445068}],
#            'id': 102010486785,
#            'ts': 1648687445068}],
#  'status': 'ok',
#  'ts': 1648687446500}

【参考】MEXCキャンペーン情報

MEXCとのキャンペーン中で、当サイトからMEXCで会員登録した方は、次のような特典が得られます。

  • 取引手数料が永続10%オフ!
  • 入金額100USDT以上&取引高500USDT以上を達成で、20USDT相当のビットコイン獲得!
  • 入金額1,000USDT以上達成で、50USDT分の先物取引ボーナス獲得!
  • 先物取引高5,000USDT以上達成で、100USDT分の先物取引ボーナス獲得!

【仮想通貨・ビットコイン】自動取引実践法・その他優良情報

最後までご覧いただきありがとうございました。当サイトでは仮想通貨・ビットコインにおける多様な自動取引手法の解説記事を多数取り扱っております。

取引所別:APIの取得手順と使い方の解説記事

スクロールできます
対応言語記事名
Python【GMOコイン】 APIで仮想通貨取引の自動化
Python【Huobi Japan】 APIで仮想通貨取引の自動化
Python【bitbank】 APIで仮想通貨取引の自動化
Python【Coincheck】APIで仮想通貨取引の自動化
Python【bitFlyer】APIで仮想通貨取引を自動化
Python【BITPOINT】APIで仮想通貨取引の自動化

機械学習やテクニカル分析を採用した仮想通貨取引の解説記事

スクロールできます
対応言語記事名指標
共通自動売買の種類・自作時のポイント全て
Pythonリアルタイムチャート分析基礎トレンド
Python移動平均線トレンド
Pythonゴールデンクロス・デッドクロストレンド
Pythonアービトラージ(裁定取引)時間・値幅
Pythonボリンジャーバンドオシレータ
PythonMACDオシレータ
PythonRSIオシレータ
Python時系列予測モデルの構築機械学習・AI
【トレンド】:値動きが上昇・下降どちらのトレンドなのか判断に有効
【オシレータ】:現在の相場に対する買われすぎ・売られすぎの判断に有効

その他仮想通貨自動トレード解説記事

スクロールできます
対応言語記事名
Python【データ収集】仮想通貨の過去データを大量取得する方法
Python【初心者向け】ccxtを活用した仮想通貨の自動取引
Node.js【初心者向け】ccxtを活用した仮想通貨の自動取引

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
目次