こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- 暗号資産(仮想通貨)の自動売買に興味がある
- 海外の優良取引所であるMEXCのAPIサービス概要および利用手順が知りたい
- Python環境でAPI機能を利用したい
【仮想通貨】ビットコインの自動取引とは
ビットコイン自動取引とは、通貨情報参照・決済・送金等の取引に関連する操作を全てプログラムで自動化することを指します。自動取引の実装により、手動操作による手間削減はもちろんのこと、仮想通貨収益化に際した全体プロセスの効率化も期待できます。
APIについて
仮想通貨の自動売買ツール実装手段には「取引所が提供するAPI」が欠かせません。APIと聞くと、難しく感じるかもしれませんが、利用方法さえ分かれば意外と簡単にオリジナルツールが作れちゃいます。
本記事での解説範囲
本記事はビットコインの自動取引ツール作成に挑戦してみたい方向けに、「MEXC Global APIの取得手順」および「MEXC APIを活用した自動売買実践法」について解説します。
なお、後述のプログラムは、ビットコインを取引例として言及しますが、ビットコイン以外の通貨にも応用できるように解説しています。ビットトコイン以外の自動取引ツールを作成したい方も必見です!
【参考】仮想通貨の自動売買でできること
仮想通貨の自動売買手法はこちらの記事で解説しています。合わせてご覧下さい。
【仮想通貨】自動売買ツールの自作方法とおすすめ暗号資産取引所|無料で実践できるビットコイン自動取引の仕組みも徹底解説
「仮想通貨(暗号資産)の自動売買ツール作成に興味がある」「自動売買の仕組み・作り方を知りたい」「どこの仮想通貨取引所がおすすめなのか知りたい」本記事ではこのような要望にお応えします。
【仮想通貨】MEXC Global 取引所の概要・API取得方法
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キー(公開鍵)とシークレットキー(秘密鍵)を取得が必要です。以下手順でそれぞれの進めていきましょう。
(1) 会員ページにログイン
(2) MEXC会員トップページを開く
(3) セキュリティを開き、2段階認証を設定する
会員トップページにある「セキュリティ」を選択します。
セキュリティ設定画面に移動後、「二段階認証」を設定しましょう。
(4) APIを選択する
(5) API情報を入力し「作成」をクリック
必要なAPI機能にチェックを入れ、作成ボタンをクリックしましょう。
(6) 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 | 【BitTrade】 APIで仮想通貨取引の自動化 |
Python | 【bitbank】 APIで仮想通貨取引の自動化 |
Python | 【Coincheck】APIで仮想通貨取引の自動化 |
Python | 【bitFlyer】APIで仮想通貨取引を自動化 |
Python | 【BITPOINT】APIで仮想通貨取引の自動化 |
機械学習やテクニカル分析を採用した仮想通貨取引の解説記事
対応言語 | 記事名 | 指標 |
---|---|---|
共通 | 自動売買の種類・自作時のポイント | 全て |
Python | リアルタイムチャート分析基礎 | トレンド |
Python | 移動平均線 | トレンド |
Python | ゴールデンクロス・デッドクロス | トレンド |
Python | アービトラージ(裁定取引) | 時間・値幅 |
Python | ボリンジャーバンド | オシレータ |
Python | MACD | オシレータ |
Python | RSI | オシレータ |
Python | 時系列予測モデルの構築 | 機械学習・AI |
【オシレータ】:現在の相場に対する買われすぎ・売られすぎの判断に有効
その他仮想通貨自動トレード解説記事
対応言語 | 記事名 |
---|---|
Python | 【データ収集】仮想通貨の過去データを大量取得する方法 |
Python | 【初心者向け】ccxtを活用した仮想通貨の自動取引 |
Node.js | 【初心者向け】ccxtを活用した仮想通貨の自動取引 |
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら