6
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【2021年版】Binance自動売買システムを作ろう。

Posted at

どうも、TAKUと申します。

2021年になり、2018年時点とはかなり状況が変わってきていますね。

新型コロナウイルスの影響や、ビットコインの価格が再び爆上げするなど、
様々な変化が起こっている年でもあります。

このような状況ですが、
Binanceは健在で、以前よりもさらに使いやすくなり、
様々ある仮想通貨取引所の中でも
日々改良を続けている良取引所の1つだと思います。

今日は以前のBinance自動トレードシステムをもっとかみ砕いて
機能を単純にして、
手軽に自動売買システムを作る事が出来るような
記事を書いてみたいいと思います。

それでは、参りましょう!

まずは、システムの構築手順

プログラムを書く前に、 トレードの手順を考えてみたいと思います。

文章で書くとなかなか伝わりづらいと思いますので、
フローチャートで作ったものを貼り付けます。

ざっくりですが、こんな感じでコードは動くと思いますので、
これでプログラムを書いてみたいと思います。

実際のコード

Binance自動トレード Github ソース


import binance.client 
import time
import re
import datetime

# for order on binance
from binance.enums import *

api_key = ""
api_secret = ""

client = binance.client.Client(api_key, api_secret)

prices = client.get_all_tickers()
symbolLen = len(prices)

# 下落率
rateOfDecline = 3.0

# 現在価格、30分後の価格
beforePrices = [prices[i]['price'] for i in range(symbolLen)]
afterPrices = [0 for i in range(symbolLen)]

def buyCoin( symbol, afterPrice ):
    print("called buy")
    
    order = client.create_test_order(
        symbol=symbol,
        side=SIDE_BUY,
        type=ORDER_TYPE_LIMIT,
        timeInForce=TIME_IN_FORCE_GTC,
        price=afterPrice,
        quantity=1)
        
    print(order)
    return

while 1==1:
    time.sleep(1800)
    prices = client.get_all_tickers()
    for i in range(symbolLen):
        # 30分後の価格取得
        afterPrices[i] = prices[i]['price']
        # 30分前の価格と現在の価格を比較して、下落率・上昇率を計算
        pricePropotion = 100 - (float(afterPrices[i]) / float(beforePrices[i])) * 100
        # それぞれの銘柄で指定したパーセンテージ下落していたら買いを入れる。
        if pricePropotion > rateOfDecline :
            if re.search(r'BTC', prices[i]['symbol']):
                #買いを入れたときの時間
                print('time: ' + datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S") + ' , ticker: ' + prices[i]['symbol'] + ' , PricePropotion: ' + str(pricePropotion) + ' , ' + afterPrices[i] + ' , ' + beforePrices[i])
                #買い注文
                afterPrice = round(float(afterPrices[i]), 8)
                if afterPrice > 0.0001:
                    print(afterPrice)
                    buyCoin(prices[i]['symbol'], afterPrice)
                break
                
    for i in range(symbolLen):
        beforePrices[i] = prices[i]['price']



動いた!

動きました!!

あまり小さい金額だとエラーがでるので、
「0.0001」以下の場合は除外しています。

これでOKです。

あとは、みなさま、
このテスト関数を実際の関数に置き換えてもらえれば
自動売買システムが完成です!

お疲れさまでした!

さいごに

Pythonの基礎知識が全くなかった方、プログラミングに全く触れたことがなかった方は なかなか難しい内容になっていたかもしれません。

ですが、
しっかり記事内容を理解いただき、
「仮想通貨の自動売買を身につけるんや。。。」
という熱い心があれば、かならずや乗り切れると信じております。

Pythonの基礎知識、Binanceのアカウント解説を含めて、
UdemyにてBinance自動トレードの開設を行っている動画も作成いたしました。

もし、興味があれば、
覗いてみて頂ければ幸いです。

※下記リンクから見て頂ければ、最初の10名様まで無料で受講いただけます。
 そして、レビューをもらえると主が死ぬほど喜びます。

Udmey Binance自動トレード

6
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?