お楽しみ様です。
坂本です。
仮想通貨取引ではおなじみの言葉「bot」(ボット)。
「bot」は仮想通貨の自動売買取引を行うプログラムで
一定のストラテジーに沿って反復取引を行うことで利益を得る手法です。
FXでいうところの「EA(Expert Advisor)」ですな。
仮想通貨であろうがFXであろうが
「人がやるべきところは人がやり
機械(bot)に任せられるところは機械(bot)に任せる」
この自動売買化がシステムトレーダーにとってのメリットですから
「自分でbotを作って稼ぎたい!!」
と思ったことのある人は少なくないでしょう。
しかし、何から始めたらいいのかわからない。
これがシステムトレードです。
予めお伝えしておきます。
残念ながらこの記事を読んだだけで、
「bot」を作れるようにはなりません。
しかし。
まだ、botを使ったことがない人がお読みになることで
「botを作るって思っていたよりも簡単ヤン!!」
とシステムトレードのハードルを下げることができる内容になっています。
botに興味がある方はどうぞ最後までお読みになってくださいませ。
目次
仮想通貨の自動売買「bot」のプログラム言語
仮想通貨の自動売買「bot」はプログラムですから、
あたり前ですがプログラム言語で書かれています。
一口にプログラム言語といっても、
世の中には多くのプログラミング言語が存在しています。
仮想通貨の自動売買取引をするのに、
「このプログラミング言語じゃなきゃダメ。」
というものはありませんが、プログラミング言語にも
向き不向きががあるので自ずと限られてきます。
例えば、グラフィック処理に優れたプログラミング言語は
仮想通貨取引においては全く関係ありません。
そりゃあそうです。
我々の目的は「稼ぐこと」ですから
「見た目が良い」「見た目が悪い」などどうでもいいのです。
この思考が大事です。
さて。
botを作るのに適したプログラミング言語をあげるとざっとこんなところですが
汎用性が高くて使い道の多い言語が向いています。
仮想通貨の自動売買を行いたいのであれば
いづれかのプログラミング言語を知っておくことは大事です。
とはいっても。
記述するプログラム(ひな形のようなもの)は取引所が共有してくれるので
決して難しいものではないのでご安心なすってください。
仮想通貨取引所が自動売買「bot」のためにAPIを開放している
多くの仮想通貨取引所ではシステムトレーダーがbotを利用しやすいように
情報取得・発注・キャンセルといった機能をプログラムから利用できるようにした
API(Application Programing Interface)を開放しています。
仮想通貨の自動売買「bot」を始めてみようと思うのでしたら、
「API Playground」という「遊び場」を提供してくれるbitFlyerがオススメです。
bitFlyerで提供されているAPIをご覧ください。
いろんな機能があって内容は理解できないかも知れませんが、
「へえ。左側のメニューにあるようなことがbotでできるんだ!!」
と思えればOKです。
仮想通貨の自動売買「bot作り」の準備をしよう
「botを作ってみたい」という高揚感が出始めてきたかも知れません。
しかし、お待ちなすってください。
「bot」を作るには当然のことながら準備が必要です。
ここでは
「bitFlyerで使えるプログラミング言語「Ruby」と使ったbotを作る」
という前提で次の3つを準備します。
それでは順を追って解説します。 「botを使って行う内容」によってはbitFlyerのアカウントが必要になります。 ここからはAPIキーの発行手順をご紹介します。 ①bitFlyer Lightningにログインする。 ②メニューの「API」をクリックする。 ③「新しいAPIキーを追加」をクリックする。 ④ラベル欄に適当な名前を入力し、このAPIキーに与える権限だけにチェックして、「OK」をクリックします。 ⑤作ったAPIが一覧で表示されます。 ⑥API KeyとAPI Secretは専用のファイルを作ってコピペで保存しておくと便利です。 「bitFlyerで使えるプログラミング言語「Ruby」と使ったbotを作る」 そのため、お使いのパソコンにRubyプログラムを実行できる ご興味のある方は プログラムを書いたり保存したりするのにテキストエディタを使います。 最初からインストールされている「メモ帳」などを使うこともできますが、 「プログラミング エディタ」でググるとオススメがいくつか見つかると思います。 坂本の場合は、シンプルさがウリの「TeraPad」というエディタを使っています。 お待たせしました。 bitFlyerで使えるプログラミング言語「Ruby」を使ったbotをご紹介します。 bitFlyerが提供しているAPI Playgroundを利用するだけで、 誰でも見ることができる情報の取得はAPIキーが不要ですので 例として、現在のBTC/JPYの板情報を取得してみます。 ①API Documentation左のメニューから「板情報」をクリックすると、 ②API Playgroundの画面に移って、左側のメニューから 今回はBTC/JPYの板情報なので、最初に表示されているままでOKです。 その下に表示されている「Submit」をクリックします。 ③右の画面を下までスクロールさせるとプログラムらしきものが表示されています。 ④テキストエディタを開き、これをそのまま保存します。 拡張子を「.txt」から「.rb」に変更するのは、 ⑤Rubyの実行画面で「ruby sample.rb」と入力してプログラムを実行させます。 全ての板情報を取得しているので、ドエライことになっていますが これであなたも自作システムトレーダーの仲間入りです。 APIキーをプログラム内に組み込んでおけば 例えば、APIキーに送金の権限を持たせておくと だからこそ。 APIキーを利用する場合はくれぐれも次の点に注意しましょう。 いかがでしたでしょうか。 botを作るって思っていたよりも簡単だと思っていただけたでしょうか。 であれば坂本はこの上なく嬉しいですワ。 すでにお気づきかも知れません。 botを作るときに最も大切なことはプログラミングの知識でもなければ、 もちろんそれ自体が大切なことには変わりないのですが、 それは「諦めない」こと。 プログラムは「命令通りに実行します」が、 プログラム自体にミスがあったとしても、 最初は思い通りにいかない。 これが当たり前です。 そんな時も諦めずに どうぞこれを機にbotにチャレンジなさってくださいませ!!
1. bitFlyerのアカウント(APIキーの発行)
bitflyerにアカウントがなくてもbotを使った情報取得ができます。
botにAPIキーを組み込んでおくことで、botが自分のアカウントに対して操作できる権限を持てるようになるので、bitflyerにログインして「APIキー」を発行する必要があります。
「API Key」と「API Secret」のセットで利用します。
API Secretは、「表示」をクリックすると画面に表示されます。
坂本の場合は2行だけのファイルを「key.rb」というファイル名で保存しています。
API_SECRET = “{API Secret}”2.プログラムを実行できる環境
という前提で話を進めていますが、
ほぼ間違いなく初期状態のパソコンではRubyのプログラムを実行できません。
アプリケーションをインストールする必要があります。
「Ruby 開発環境」「Ruby 環境設定」
などでググってインストールなすってください。3.テキストエディタ
プログラミングに適したテキストエディタも無料で提供されています。
(参考)TeraPad:https://tera-net.com/library/tpad.htmlbitFlyerで動くbotを作るぞ
Rubyでのプログラミングがサクっとできるので安心して読み進めてください。
https://lightning.bitflyer.com/docs/playground?lang=ja#GETv1%2Fgetmarkets/rubyAPIキーが不要な命令
ここでは「APIキー不要の命令」を作ってみます。
板情報を取得するための命令は「GET /v1/getboard」
または「GET /v1/board」だということがわかります。
「GET /v1/getboard」または「GET /v1/board」をクリックすると
product_codeを入力できるようになります。
「Ruby」タブを選択すると表示されるのが、Rubyのプログラムです。
一度テキストファイルとして保存してから、ファイル名を「sample.rb」に変更してください。
「このファイルはRubyのプログラムですよ」という意味です。
require ‘uri’
uri = URI.parse(“https://api.bitflyer.com”)
uri.path = ‘/v1/getboard’
https = Net::HTTP.new(uri.host, uri.port)
https.use_ssl = true
response = https.get uri.request_uri
puts response.body
bitFlyerで使える初歩的なbotが完成です。(厳重注意)APIキーの取扱い
そのAPIキーにあらかじめ与えた権限の範囲内で
様々な命令を実行できます。
botによって外部に送金することもできてしまいます。
まとめ
それ相応の堅牢なロジックでもありません。
それより大事なことがあります。
見方を変えれば「命令された通りにしか実行できない」のです。
我々人間のように「融通を利かせて正しく解釈する」なんてことはありゃしません。
「ココをこうしてみよう。」
「それともこっちをこうしてみよう。」
と仮説検証を立ててイライラせずに粘り強く
PDCAを回していくことでなんとかなるもんです。
Ruby
Physon
JavaScript
C#