Pythonで自動売買Botを作る①~システムトレードの流れを把握する

Pythonで自動売買botの作り方

今回はプログラミング言語を使ってpythonでシステムトレード、つまり自動売買を行うための流れを説明していきます。自動売買を行うBotの仕組み自体は簡単なif文とfor文の組み合わせですが、テクニカル系の知識、取引所の注文についての知識、プログラミングについての知識の3つが必要となります。

なので、仕組み自体は単純なもののなかなか理解するのが難しいという人が多く見受けられるので1つ1つ丁寧に解説していきます。このシリーズの記事を読むと以下のような技術が身に付きます。

/・・・このシリーズを読んで学べること・・・/

・ビットコインの価格データ・板情報の取得方法

・APIを使って取引所にプログラムから注文を出す方法

・Pythonでのテクニカル指標の計算方法

・Pythonによる自動売買プログラムの作り方

/・・・シリーズ記事一覧・・・/

Pythonで自動売買Botを作る①~システムトレードの流れを把握する

Pythonで自動売買Botを作る②~仮想通貨取引所からビットコインの価格を取得する

Pythonで自動売買Botを作る③~プライベートAPIを使って仮想通貨を売買する

Pythonで自動売買Botを作る④~テクニカル指標を用いた自動売買botを作って動かしてみる(コピペで実行できるコード付き)

Pythonによる自動売買Botを作る⑤~レンタルサーバーでbotを定期実行させる

システムトレードとは何か?

まずシステムトレード:通称シストレというのは、ざっくりいうと株式・FXやビットコイン・仮想通貨などで「自分で決めた取引ルールをプログラムとして、その取引ルールに則ってコンピューターに自動でトレードさせる」もので、システムトレード(自動取引)の利点としては以下のようなものがあります。

①感情を挟むことなく機械的に損切・利確ができる。

②建てた戦略についてバックテストを行うことで、確実に儲からない戦略をあらかじめ排除できる。

③バックテストを行うことで、実稼働では不可能に近い回数と少ない時間でロジックの検証をできる。

④コンピューターが勝手に取引してくれるので、画面に張り付かなくても24時間トレードを行ってくれる。

引用元:https://dmjtmj-stock.com/entry/2017/01/12/002729

人間が手動でポチポチ取引する場合であれば、チャートを見て上がりそうs下がりそうでなんとなく売買しますが、プログラムに自動で売買取引をさせる場合は、なにを売買の判断基準にするのかちゃんとルールを設定しておく必要があります。このような、プログラムに買うか売るかのトレードの判断させる取引ルールを「シグナル」と言います。

このトレードシグナルに使われるものとしては一般的に「移動平均線」・「MACD」・「RSI」・「ボリンジャーバンド」などに代表されるテクニカル指標が一般的です。

例えばRSIというテクニカル指標を使うとするならば、「RSI が30以下になったときに買い、RSIが80以上になったら売るといった」などのルールをプログラムで設定すれば、それの通りにコンピューターが忠実にトレードをおこなってくれます。

このように、「システムトレードというのは、分足・日足などをから算出したテクニカル指標をトレードシグナルに使用することが一般的」です。その発展系としては機械学習による分類やニューラルネットワーク・ディープラーニングによる深層学習、強化学習を使うパターンも存在します。

株式の自動取引は難しい

最近はメモリの指数関数的な性能向上とAPIの登場で誰でも手軽にシステムトレードができるようになり昨今流行りではありますが、残念ながら日本の証券会社では一般個人向けの株式売買のAPIは公開されていません。そのため、APIを通しての株式の自動売買は基本的にできません。

一応Pythonであれば「Selenium」というライブラリを使って直接ウェブブラウザを操作して証券の会社のサイトにアクセスしてそこから銘柄を売買すれば、自動取引ができないこともありませんが、機関投資家のような高頻度取引は到底できません。

まあUIを操作して取引を行うのは、サイトのHTMLの仕様を知っておく必要があったりハードルがちょっと高いですが、頑張ればできないことはないと思います。↓の記事ではSBI証券で自動ログインする方法と「Selenium」の使い方を解説しているので、どうしても株式の自動取引がしたいという人は読んでみてください。

ただブラウザを自動で操作しての自動取引すると、サイトの仕様が変わるたびにプログラムを組みなおさなければいけなかったり、そもそも株式取引自体が平日の9時~15時までの短い時間しかできないと不便なので、株式はあまりシステムトレードに向いていないと思います。

ちなみになぜ機関投資家が高頻度取引ができるのかというと、恐らく法人向けにはAPIが公開されているからだと思います。

個人が株式取引において自動取引を行うbotを作るのは、ちょっとハードルが高く、手っ取り速く自動取引botを作りたいとなるとAPIが用意されている取引所で実行するのが楽で簡単です。

取引所のサイト側からAPIが用意されていれば、売買の指示や残高の確認みたいなURL処理が簡単にできるので、プログラムによる自動取引は基本的にAPIが公開されている取引所で実行するのが簡単でオススメです

というわけで、現在個人投資家向けにAPIが公開されている取引所はどこなのかという話な訳ですが、個人向けにAPIが公開されているのは仮想通貨・ビットコイン(FX)を扱う仮想通貨取引所が多いです。

なので、仮想通貨やビットコインはアルゴリズムで自動売買を行っている人はSNSで検索するとそこそこ居てますし、当サイトのように自動取引のノウハウを書いているブログもあります。なので、『とりあえず自分でプログラムを組んで自動売買がしてみたいという人は仮想通貨・ビットコインがオススメ』です。

シストレに使うプログラミング言語

当たり前ですが、システムトレードを自動取引を行うBot(アルゴリズム)を作るには丁寧に設計を行う必要があります。まあプログラミングは全部そうなのですが、一か所でもエラーがあると基本的にプログラムは動きません。

自動取引Botを作るために使用するプログラミング言語は何を使っても基本的にできますが、Pythonだと自動取引プログラム作りのノウハウを書いたブログがいっぱいあるので、独学でシステムトレード(自動取引)を始めたいという人は「Python(パイソン)」を勉強するのがオススメです。

ちなみにPython(パイソン)はGoogleなどでも採用されており、ディープラーニングでAIを作る際にも重宝されるプログラミング言語であり、今後のIT業界で潰しがきくプログラミング言語だと思うので、特に前途多望な学生の方などであれば、Python(パイソン)を勉強する方がオススメです。

自動取引Botを作るのに必要なもの

自動取引Botを作るために必要なものは以下です。

・Pythonのプログラミング環境(環境構築)

・ビットコインの価格データ

・ビットコインを自動取引する仮想通貨取引所の口座(Bitbank)

・プログラミング経験(レベルはpaizaでCランクくらい取れれば十分)

・レンタルサーバー(24時間常時実行する場合)

・エラーが出ても頑張れる根気と情熱

用意の方法については後々解説していきます。まずはPythonのプログラミングがPCで出来る環境を用意する必要があります。これを「環境構築」と言います。まあ御大層な名称ですが、やることは「Anaconda」というソフトウェアをインストールするだけです。「Anaconda」のインストール方法については以下の記事で解説しているので参考にしていただける幸いです。

自動取引Botの仕組み

まずはプログラムがビットコインを売るか買うかのトレード判断を下すためには価格データが必要です。例えばビットコインを移動平均でゴールデンクロス・デッドクロスを売り買いのシグナルにして売買するためには、まず日足であれば最低でも5日分・25日分のビットコインの価格データが必要になります。

なので、システムトレード(自動売買)の最初の第一歩は価格データを集めて記録・保存しておくこと必要にあると言えます。そのために仮想通貨取引所から、Ticker(価格データ)を一定時間ごとに取得してそのデータをデータベースに蓄積している人もいます。

Pythonの場合ならば、SQL(データベースを操作する言語)と使ってデータベースの作成したり、「Pandas」というライブラリを使用してDataframe(データフレーム)→csvとして保管するのがオススメです。

個人的にはPythonが好きなのはこういうウェブマシーンとして、インターネット上の情報収集が他のプログラミング言語よりも簡単にできるという点にあります。一応、SQLとかよくわからんという人は単純に価格データサイトから価格データを取得してプログラム内の変数に数値を格納しておくだけでもBot自体は作成できます。

Pythonであればビットコインだけではなく日経平均株価の日足なども、この「Pandas」というライブラリの関数で1行で取得する事もできます。

そして、ビットコインを始めとする仮想通貨の価格ならば価格サイトがあるので、そこから過去のデータを取得するということも可能です。まあビットコインの価格データの取得方法はいろいろとあります。

そして、その集めたビットコインの価格データから移動平均線やボリンジャーバンド・RSIなどのテクニカル指標を計算し、トレード判断の材料(トレードシグナル)とします。

例えば、移動平均線ならば短期移動平均線(5分足)が長期移動平均線(20分足)を抜ければ「ゴールデンクロス」ということで買い、逆に長期を短期が突き抜ければ「デッドクロス」ということで売りというような戦略が立てられます。

この売買の判断にする指標のことを一般的に「シグナル」と言います。今回のサンプルとして作成する自動取引Botは、「ゴールデンクロスとデッドクロスをシグナルとする自動取引bot」ということになります。

※自動取引のシグナルはテクニカル指標だけではなく、アービトラージ(裁定取引)などの手法もありますし、どういう戦略にするかは個人の好みで今回は一番オーソドックスな例を挙げています。

スポンサーリンク

自動売買Botが行っていること

自動売買というと漠然としたイメージで、いきなり自動取引アルゴリズムBotを作ろうと思っても、まず何から手を付けたらいいのか分からなくなりがちです。しかし、自動取引を行うBotも中身を細かく分けると単純な条件分岐とループを実行しているだけです。

なので、自動売買Botは大まかな流れを理解し、1つ1つの処理を組み合わせれば簡単に作ることができます。シストレBotの大まかな流れは以下のようになります。

①価格を取得する→②テクニカル指標(シグナル)を計算→③設定条件を満たした場合買い(売り)注文を作成→④買い(売り)注文を送信する→⑤注文の実行の確認と残高の確認→⑥シグナル再びが出たら売り(買り)注文を送信する→⑦注文内容・残高の確認→⑧最初に戻る

基本的な自動取引処理の流れはこんな感じです。FXとか指値注文を混ぜる場合はこれよりも処理が少し複雑になりますが、とりあえず以下の3つの大まかな流れは基本です。

自動売買プログラムの基本的な処理
①「価格データを取得」
②「それに基づいたテクニカル指標(シグナル)の計算」
③「テクニカルの合図に従ってAPIから売買注文を出す」

ただこれをいっぺんにやろうとすると頭が混乱して、自動売買Botを作るのは難しいと断念してしまいがちです。なので、ここではこの工程の1つ1つをじっくりやっていこうと思います。そうすれば脱落する人も少なるなるのではないかな?と考えています。

以上がシステムトレードbotを作るにあたっての基本的な流れです。今回は移動平均線のゴールデンクロス・デッドクロスに従って取引する自動取引botの作り方を分かりやすく解説していきます。

というわけここからはBitbank(ビットバンク)という国内大手の仮想通貨取引所が提供しているAPIを使ってビットコインの価格データ(ticker)や板情報を取得していき、ビットバンク(bitbank)で動く移動平均線をシグナルとした自動売買Botの作り方を解説していきます。

bitbank

→(続き)PythonでシストレBotを作る②~仮想通貨取引所からビットコインの価格を取得する

/・・・自動取引bot作成シリーズ記事一覧・・・/

Pythonで自動売買Botを作る①~システムトレードの流れを把握する

Pythonで自動売買Botを作る②~仮想通貨取引所からビットコインの価格を取得する

Pythonで自動売買Botを作る③~プライベートAPIを使って仮想通貨を売買する

Pythonで自動売買Botを作る④~テクニカル指標を用いた自動売買botを作って動かしてみる

Pythonによる自動売買Botを作る⑤~レンタルサーバーでbotを定期実行させる

プログラミングの独学はとても難しい


プログラミングは小学校の義務教育にも導入され始めており、これから社会人として生きていく上でプログラミングはもはや出来て当たり前、出来なれば論外というエクセルレベルの必須スキルになりつつあります。そしてそういう話を聞いて参考書なりを購入して独学でプログラミング勉強しようと思っている人も少なくないでしょう。しかしプログラミングを独学で勉強し始めようと思うものの



・「分からない箇所で詰まって挫折してしまった」

・「勉強する時間が足りない」

・「ネットの記事だと情報が断片的でよくわからない」

・「コードのエラーの原因が分からない」



という壁にぶち当たって、プログラミングの勉強を止めてしまう方が少なくありません。独学でプログラミングを勉強してる時間のほとんどはつまづいている時間です。実際僕も最初のころ独学でプログラミングを勉強していた頃はエラーの原因が分からず丸1日を不意にしてしまった・・・そんな苦い経験がありました。



それで僕は一度はプログラミングの学習を諦めてしまいましたが、就活で現実を知る中で「プログラミングを勉強して、いずれフリーランスとして自由な生き方がしたい」「エンジニアとして若いうちから高収入を得たい」という気持ちから一念発起して「侍エンジニアのwebサービスコース」に申し込み、プロのエンジニアの方に対面でマンツーマンでPythonによるWebサービス作り方とWeb技術の基本を教えてもらい、ようやくプログラミングが理解でき、今ではエンジニアとしてそこそこの暮らしができるようになりました。





侍エンジニアでは、とりあえずプログラミングやインターネットの基本を知っておきたい人から、HTML・cssなどでWebサイトやWebアプリを作ってみたい人やPythonを勉強してデータサイエンティストやAIエンジニアになりたい人まで幅広いニーズに応えた様々なコースが用意されています。



IT業界と言ってもエンジニアの仕事はプログラミング言語次第でサーバーから機械学習・ディープラーニングまで多種多様ですし、侍エンジニアの無料レッスン(カウンセリング)を受けてみて、自分のやりたいITの仕事は何なのか?を見つけるのがエンジニアへの第一歩になります。ちなみに今侍エンジニアの無料レッスンを受けると1000円分のAmazonギフト券がもらえるので、試しに受けてみるだけもお得です。


自分は半端に独学やオンラインスクールで勉強して金と時間を無駄にするくらいなら、リアルのプログラミングスクールに通ってしっかりプログラミングを勉強した方がいいと思います。ちなみに今、侍エンジニアに申し込むと、25歳以下の学生の方であれば、受講料が20%OFFになるので超お得です。


そして、プログラミングは大勢で授業を受けたり漫然とオンライン学習をするよりも自分が分からない箇所をピンポイントでプロの講師に直接質問して、ちゃんと納得するというスタイルの方がお金は確かに少し掛かりますが、独学で学ぶよりも絶対にモノになります。


シェアする

  • このエントリーをはてなブックマークに追加

フォローする

   侍エンジニア塾       
侍エンジニアの無料体験レッスンを予約する -->