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

どうも、TAKUと申します。

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

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

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

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

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

<h2>まずは、システムの構築手順</h2>
プログラムを書く前に、
トレードの手順を考えてみたいと思います。

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

<img src="http://evelinks.org/wp-content/uploads/2021/05/BinanceApiTrade-1.png" alt="" width="490" height="1014" class="alignnone size-full wp-image-1567" />

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

<h2>実際のコード</h2>

<a href="https://github.com/hitaraku/binance-python-api-trade-2021/blob/master/Part2_5.py" rel="noopener" target="_blank">Binance自動トレード Github ソース</a>

<pre class="terminal notranslate">
import binance.client 
import time
import re
import datetime

# for order on binance
from binance.enums import *

api_key = "<API KEYを入力>"
api_secret = "<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']



</pre>




<h2>動いた！</h2>
動きました！！

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

これでOKです。

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

お疲れさまでした！

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

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

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

もし、興味があれば、
覗いてみて頂ければ幸いです。
<small style="color:red">
※下記リンクから見て頂ければ、最初の10名様まで無料で受講いただけます。
　そして、レビューをもらえると主が死ぬほど喜びます。
</small>

<a href="https://www.udemy.com/course/binance-python-api-trade-2021-1/?couponCode=CD392845A9B64ADA56B9">Udmey Binance自動トレード</a>
<img src="http://evelinks.org/wp-content/uploads/2021/05/Icon-1-150x150.png" alt="" width="150" height="150" class="alignnone size-thumbnail wp-image-1580" />