初心者がBTC自動売買botを作る2021

pc関連tips

あれ、この話2018年にもしたな。

こんにちは、完全に出戻り娘です。今度こそ自動botでたくさん稼いじゃうぞ!!!

というわけで2021年のbot構築についてもメモしていきたいと思います。

進めながら書いていますよ

上から順番にやっていけばきっとあなたもbotが作れます!

取引所選定

まずは取引所選定ですよね。今回は使用したいbotに合わせてbybitをまず選んでみることにしました。

bybit!

何はともあれ申し込みましょう。以下から登録して取引すると10$相当のボーナスがもらえます。

https://www.bybit.com/ja-JP/invite?ref=PDy0n

右のほうのアカウント作成から、私はEメールで申し込みました。

メールアドレスとパスワードを埋めて「登録」をクリックするだけです。

ロボ確認が入ります。最近このチェック流行ってるの?AIには難しいんですか?

Eメールに認証コードが届いているので、入力しましょう。

するとログインされます。

なんか入金すると、とかSNSをフォローすると、とかでいろいろ特典がもらえるので、適宜実施しましょう!!ありがてえ

twitterをフォローしただけで雑に5ドルもらえました。なんかすごいよな。
こちとらアサヒ飲料のLINE友達に登録して10ポイントもらってるレベルだぞ

入金で50$もらえる!右上のメアドをクリックして個人資産をクリック。

BTC他いろいろありますが、入金を押すとこの取引所の自分のウォレットが表示されます。

というわけでお得なので、できるやつはやってしまいましょう!
ただ、0.1BTC~の入金なので、入金ボーナスのハードルはやや高めですね…(今だと60万くらいですか…)

これで登録は完了!いったんbybitのことは忘れます。

サーバ選定

2018年と同じく、AWS(AmazonWebService)にて仮想を立てて実施することにします。

なんか無料OSがRedhat8になってたわ~、時代の流れを感じる。
ちな、fedora生まれRedhat育ちです。ubuntu?知らない子ですね…

まずはAWSに行って登録しましょう。

AWS クラウド無料利用枠 | AWS
AWS 無料利用枠を使用すると、AWS のプラットフォーム、製品、およびサービスを無料でお試しいただけます。各製品ごとの無料利用枠の詳細やご利用開始方法についてご紹介します。

無料期間から始められるのでありがたいですね。
無料が終わっても、確か私の使い方だと月数百円でした。

しかし、amazonのロボ認証のこれ、めぇーちゃ難しくない?人間なのに3回も失敗したんですけど。
下の画像間違ってるんですよ。V5p6va以外の何だというのか?あ、2個目のVも大文字?

登録後、仮想サーバを立てます。「仮想マシンを起動する」をクリック。

OSの選択ですが、無料にRHEL8があります。私は仕事で使い慣れたこちらを選びました。
同様に構築しようという場合は、同じものを選択してください。

スペック選択です。
無料の人は選択の余地がないのでそのまま右下の青い「確認と作成」をクリックしてください。

次の画面も同じく右下にある起動をクリック。

次の画面で、

キーペアを作成します。「新しいキーペアの作成」を選択し、キーペア名を自由に入力します。
その後、「キーペアのダウンロード」を選択し、この「ほにゃらら.pem」ファイルを把握できるところに保存してください。※このファイルはもう一度はダウンロードできないそうなので、なくさないでください!
そうしたら、インスタンスの作成です。

インスタンス作成中です。右下のインスタンスの表示を押して待ちましょう。

作成したインスタンスが赤丸あたりに表示されていると思います(私のは4つ表示されていますが、初めてやった方は一つだと思います)

実行中の少し右に、作成状況が乗っています。ここが「初期化しています」あたりになるまで待ちましょう。

早速sshでAWSに接続します。

寄り道:poderosaのダウンロード

sshでASWに接続するにあたり、ターミナルソフトが必要です。

おすすめのターミナルはpoderosaです。以下URLから最新版[4.4.5]をダウンロードしてください。

Poderosa 日本語情報トップページ - OSDN
Poderosaは、タブ式 のユーザーインターフェイスを持ち、Telnet、SSH1/2、cygwinなど、さまざまな接続方式をサポートするWindows用のターミナルエミュレータです。

解凍するだけで使えますので、任意の場所で解凍してpoderosa.exeをダブルクリックして起動してください。起動時、windows から.netframeworkが不足などと言われたら、インストールしてあげてください。

 


awsに戻ります。
以下の画像の「実行中」の左にあるawsの「インスタンスID」をクリックすると、

 

以下の画面に遷移します。右のほうにある「接続」をクリックしてください。

 

接続情報です。「SSHクライアント」のタブで、赤い四角に囲まれたサーバ名をコピーしてください。(サンプル画像は白抜きしていますが、ここにサーバ名が出ているはずです)

 

起動したpoderosaのssh接続アイコン(モニタみたいなやつ)をクリックします。

 

以下の画像のように、
①に先ほどコピーしたサーバ名を入力。
②にはec2-userと入力。
③で公開鍵を選択。
(パスフレーズは空欄で構いません)
④に、先ほどダウンロードした「ほにゃらら・pem」を選択して
OKを押してください。

初回は初接続のアラートが出ますが、OKとしてください。

これで無事poderosaでawsへ接続できました。

エンターを押すなどして、動くことを確かめましょう。

ツール→オプション→コマンド から、コピー、ペーストをctrl+に割り当てておくのがおすすめです(初期設定はAlt+になっている)。
同じく、
ツール→操作 から、「マウスで選択したら自動的にコピー」にチェックを入れておくのがおすすめです。

環境構築

今回のbotはpythonを使用するのでpythonの構築をしましょう。

さて、前回はccxtを使用せずbitmex独自のコマンドを用いましたが、今回はccxtを活用していきたいと思います。

rootユーザにパスワードを設定しておく

まずはrootユーザにパスワードを設定しておきましょう。構築直後は、何も設定されていません。以下のようにコマンドを入力していきます。太文字の部分が入力するコマンドです。

[ec2-user@ip-1 ~]$ sudo su –
Last failed login: Sun Mar 21 11:11:47 UTC 2021 on pts/0
There was 1 failed login attempt since the last successful login.
[root@ip- ~]# passwd
Changing password for user root.
New password:★設定したいパスワードを入力してenter
Retype new password:★確認。もう一度同じパスワードを入力してenter
passwd: all authentication tokens updated successfully.
[root@ip- ~]#

基本的なインストール@rootユーザ

yum install gcc gcc-c++ make git openssl-devel zlib-devel readline-devel

上記コマンドで基本的なものをインストールしておきましょう。

Pythonのインストール@rootユーザ

初期状態ではpythonはインストールされていませんので、インストールします。
ログイン直後は「ec2-user」ですので、「su -」としてパスワードを打ち、rootユーザに昇格しておいてください。

[root@ip- ~]# yum install @python36
Last metadata expiration check: 0:24:49 ago on Mon 22 Mar 2021 09:26:53 AM UTC.
Dependencies resolved.
=========================================================================================================================
Package Architecture Version Repository Size
=========================================================================================================================
Installing group/module packages:
python36 x86_64 3.6.8-2.module+el8.1.0+3334+5cb623d7 rhel-8-appstream-rhui-rpms 19 k
Installing dependencies:
python3-pip noarch 9.0.3-18.el8 rhel-8-appstream-rhui-rpms 20 k
python3-setuptools noarch 39.2.0-6.el8 rhel-8-baseos-rhui-rpms 163 k
Installing module profiles:
python36/common

Transaction Summary
=========================================================================================================================
Install 3 Packages

Total download size: 202 k
Installed size: 466 k
Is this ok [y/N]: y ★yを入力してenter
Downloading Packages:
(1/3): python3-setuptools-39.2.0-6.el8.noarch.rpm 1.2 MB/s | 163 kB 00:00
(2/3): python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64.rpm 125 kB/s | 19 kB 00:00
(3/3): python3-pip-9.0.3-18.el8.noarch.rpm 126 kB/s | 20 kB 00:00
————————————————————————————————————————-
Total 846 kB/s | 202 kB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : python3-setuptools-39.2.0-6.el8.noarch 1/3
Installing : python3-pip-9.0.3-18.el8.noarch 2/3
Installing : python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64 3/3
Running scriptlet: python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64 3/3
Verifying : python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64 1/3
Verifying : python3-pip-9.0.3-18.el8.noarch 2/3
Verifying : python3-setuptools-39.2.0-6.el8.noarch 3/3

Installed:
python3-pip-9.0.3-18.el8.noarch python3-setuptools-39.2.0-6.el8.noarch
python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64

Complete!

これでpythonが使えるようになりました。

次に、pythonコマンドをpython36で使えるように指定しておきます。

[root@ip- ~]# alternatives –config python
There are 3 programs which provide ‘python’.
Selection Command
———————————————–
* 1 /usr/libexec/no-python
+ 2 /usr/bin/python2
3 /usr/bin/python3
Enter to keep the current selection[+], or type selection number: 3★「/user/bin/python3」が選択されている数字(上記例では3)を入力してenter
[root@ip- ~]# python –version ★pythonコマンドで使用できるバージョンを確認
Python 3.6.8
[root@ip- ~]# pip –version ★pipのバージョンも確認
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)

ccxtのインストール@rootユーザ

次に、ccxtをインストールします。ccxtとは、各取引所に渡すコマンドをこう、取りまとめてくれているライブラリ…です。

太字のコマンドを入力します。

[root@ip- ~]# pip install –upgrade pip ★pipのアップグレード
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip install –user` instead.
Collecting pip
Downloading https://files.pythonhosted.org/packages/fe/ef/60d7ba03b5c442309ef42e7d69959f73aacccd0d86008362a681c4698e83/pip-21.0.1-py3-none-any.whl (1.5MB)
100% |████████████████████████████████| 1.5MB 792kB/s
Installing collected packages: pip
Successfully installed pip-21.0.1
[root@ip- ~]# pip install ccxt ★ccxtインストール
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with ‘-m pip’ instead of running pip directly.
Collecting ccxt
Downloading ccxt-1.43.91-py2.py3-none-any.whl (2.1 MB)
|████████████████████████████████| 2.1 MB 6.6 MB/s
Collecting yarl==1.1.0
Using cached yarl-1.1.0-cp36-cp36m-manylinux1_x86_64.whl (255 kB)
Collecting cryptography>=2.6.1
Downloading cryptography-3.4.6-cp36-abi3-manylinux2014_x86_64.whl (3.2 MB)
|████████████████████████████████| 3.2 MB 39.3 MB/s
Requirement already satisfied: requests>=2.18.4 in /usr/lib/python3.6/site-packages (from ccxt) (2.20.0)
Collecting certifi>=2018.1.18
Using cached certifi-2020.12.5-py2.py3-none-any.whl (147 kB)
Collecting aiodns<2.1,>=1.1.1
Using cached aiodns-2.0.0-py2.py3-none-any.whl (4.8 kB)
Requirement already satisfied: setuptools>=38.5.1 in /usr/lib/python3.6/site-packages (from ccxt) (39.2.0)
Collecting aiohttp<3.8,>=3.7.4
Downloading aiohttp-3.7.4.post0-cp36-cp36m-manylinux2014_x86_64.whl (1.3 MB)
|████████████████████████████████| 1.3 MB 47.7 MB/s
Requirement already satisfied: idna>=2.0 in /usr/lib/python3.6/site-packages (from yarl==1.1.0->ccxt) (2.5)
Collecting multidict>=4.0
Downloading multidict-5.1.0-cp36-cp36m-manylinux2014_x86_64.whl (141 kB)
|████████████████████████████████| 141 kB 43.6 MB/s
Collecting pycares>=3.0.0
Downloading pycares-3.1.1-cp36-cp36m-manylinux2010_x86_64.whl (228 kB)
|████████████████████████████████| 228 kB 40.1 MB/s
Collecting typing
Downloading typing-3.7.4.3.tar.gz (78 kB)
|████████████████████████████████| 78 kB 14.5 MB/s
Requirement already satisfied: chardet<5.0,>=2.0 in /usr/lib/python3.6/site-packages (from aiohttp<3.8,>=3.7.4->ccxt) (3.0.4)
Collecting idna-ssl>=1.0
Downloading idna-ssl-1.1.0.tar.gz (3.4 kB)
Collecting async-timeout<4.0,>=3.0
Downloading async_timeout-3.0.1-py3-none-any.whl (8.2 kB)
Collecting attrs>=17.3.0
Downloading attrs-20.3.0-py2.py3-none-any.whl (49 kB)
|████████████████████████████████| 49 kB 12.3 MB/s
Collecting typing-extensions>=3.6.5
Downloading typing_extensions-3.7.4.3-py3-none-any.whl (22 kB)
Collecting cffi>=1.12
Downloading cffi-1.14.5-cp36-cp36m-manylinux1_x86_64.whl (401 kB)
|████████████████████████████████| 401 kB 42.8 MB/s
Requirement already satisfied: pycparser in /usr/lib/python3.6/site-packages (from cffi>=1.12->cryptography>=2.6.1->ccxt) (2.14)
Requirement already satisfied: urllib3<1.25,>=1.21.1 in /usr/lib/python3.6/site-packages (from requests>=2.18.4->ccxt) (1.24.2)
Using legacy ‘setup.py install’ for idna-ssl, since package ‘wheel’ is not installed.
Using legacy ‘setup.py install’ for typing, since package ‘wheel’ is not installed.
Installing collected packages: multidict, cffi, yarl, typing-extensions, typing, pycares, idna-ssl, attrs, async-timeout, cryptography, certifi, aiohttp, aiodns, ccxt
Attempting uninstall: cffi
Found existing installation: cffi 1.11.5
Uninstalling cffi-1.11.5:
Successfully uninstalled cffi-1.11.5
Running setup.py install for typing … done
Running setup.py install for idna-ssl … done
Attempting uninstall: cryptography
Found existing installation: cryptography 2.3
Uninstalling cryptography-2.3:
Successfully uninstalled cryptography-2.3
Successfully installed aiodns-2.0.0 aiohttp-3.7.4.post0 async-timeout-3.0.1 attrs-20.3.0 ccxt-1.43.91 certifi-2020.12.5 cffi-1.14.5 cryptography-3.4.6 idna-ssl-1.1.0 multidict-5.1.0 pycares-3.1.1 typing-3.7.4.3 typing-extensions-3.7.4.3 yarl-1.1.0
これでccxt導入完了です。
他にも使用するかもしれないものを入れておきます。
pip install numpy
(ログ省略)

bybitのAPIキーを取得する

botは、人間がメアドとパスワードでログインして取引をするように、「APIキー」「secret」を使用してbybitへ注文を出します。

まずは入手しておきましょう。

ログイン後、右上のメアドが表示されているところにマウスを合わせ、「アカウント&セキュリティ」をクリックします。

次の画面で、「API管理」をクリックします。

注意情報。理解しましたをクリックでOKです。

右上の「新しいキーの作成」をクリックします。

あ、2段階認証をしておかないとAPIキーが使えないようです。

寄り道:二段階認証

※もしGoogleAuthenticatorをスマホに入れていない方はインストールしてください。

また「アカウント&セキュリティ」をクリックします。

中ほどにあるGoogleのところの右にある「設定」をクリックします。

まずメール認証を求められます。〇で囲った「認証コードを送信する」をクリックし、登録したメールアドレスに送信されてきた認証コードを入力して確定をクリックしてください。

画面に出たQRをGoogleAuthenticatorで読み取ります。

アプリ右下にある「+」から、QRコードをスキャンで読み取ってください。

bybit@メアドという風に登録されます。

 

ここに出ている6桁の数値を、bybitの画面の下の6桁に入力して確定を押すと完了です。

~寄り道ここまで

 

さて、APIキーの登録に戻りましょう。

セキュリティ→API管理→新しいキーの作成

です。画面は以下の通り。

①…APIトランザクションとします
②…名前を任意につけましょう
③…自身のIPアドレスを入力します。awsの場合、ec2-user@ip-???-??-??-???という風になっているかと思いますので、ip-の後ろの数値を「???.??.??.???」といった表記で入力しておくとよさそう。。。かと思ったのですが、それでは通りませんでした。私は設定しませんでした。
④…アクティブな注文とポジションとします。
⑤…GooglerAuthenticatorにて数値を確認して入れてください。

確定をクリックすると、APIキーが表示されます。

初回しか表示されませんのできちんとメモしてください!
(とはいえわからなくなったら新しく作り直せばいいよ・・

これでキーの取得は完了です。

まず使ってみるbot

前回はこちらの記事を参考にbitmexで作成しました。あの時から時代は流れ、bitmexは日本人は使えなくなり…。まあ別にいいんだけど(お金残ってなかったから)

 

コメント

タイトルとURLをコピーしました