Django+CCXTでBitMEXへ注文実行

Django+CCXTを使ってBitMEXへ注文を行う方法をご紹介します。

Django上でバッチで動くように実装しています。
環境準備については以下の記事を参照ください。

また、エラーがあった場合はログに吐き出すようにしています。
ログを出力する設定は以下の記事を参照ください。

また、注文内容をDBに保存するようにしています。
DBへ保存する準備は以下の記事を参照ください。

注文を出すだけのソース

BitMEXに注文を出すには以下のように実装します。

# -*- coding:utf-8 -*-

from django.core.management.base import BaseCommand
from ...models import Bitmexorder

import ccxt
from .bitmex_api import bitmexApi
import logging

symbol = 'BTC/USD'      # 対象通貨
bitmex = bitmexApi.bitmex()

# BaseCommandを継承して作成
class Command(BaseCommand):

    # python manage.py help count_entryで表示されるメッセージ
    help = 'Display the number of blog articles'

    # コマンドが実行された際に呼ばれるメソッド
    def handle(self, *args, **options):
        try:
            open_result = bitmex.create_order(symbol, 'limit', 'buy', 100, 8010.0)    # 注文実行 100は数量、8010.0は金額
            order_result = 'success'
        except ccxt.BaseError as e:    # エラーが発生した場合
            order_result = 'error'
            self.logging('error', e)
            open_result = e

        order = Bitmexorder(
            product_code=symbol,
            order_type='limit',
            open_or_close='open',
            order_side='buy',
            amount=100,
            price=8010.0,
            message=open_result,
            order_result=order_result,
        )
        order.save()    # DBに保存

bitmex_api.pyに書いているのはこれだけです。

# -*- coding: utf-8 -*-
"""
Created on Thu Mar  9 12:00:27 2017

@author: zaihack
"""

import ccxt

class bitmexApi:

    def bitmex():
        bitmex = ccxt.bitmex({
            # APIキーをご自分のものに差し替えてください
            'apiKey': 'あなたのAPIキー',
            'secret': 'あなたのシークレットキー',
        })
        return bitmex