PythonでシストレBotを作る①~シストレを作る流れを把握する

スポンサーリンク

今回はプログラミング言語を使ってpythonでシステムトレード、つまり自動売買を行うための流れを説明していきます。自動売買するBotは仕組み自体は簡単なものですが、テクニカル系の知識、取引所の注文についての知識、プログラミングについての知識の3つが必要となるため、仕組み自体は単純なもののなかなか理解するのが難しいという人が多く見受けられるので1つ1つ丁寧に解説していきます。

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

まずシステムトレード:通称シストレというのは、ざっくりいうと株式・FXや仮想通貨などで「自分で決めたルールをプログラムとしてPCにインプットし、そのルールに則ってPCで自動でトレードをさせる」ものです。

このルールに使われるものとしては一般的に単純移動平均線・MACD・RSI・ボリンジャーバンドなどのテクニカル指標が採用されることが一般的です。例えばRSIを使うとするならば、「RSI が30以下になったときに買い、RSIが80以上になったら売るといった」などのルールをプログラムで設定すれば、それの通りにコンピューターが忠実にトレードをおこなってくれます。システムトレードの大きな利点としてはPCが機械的に取引を行うので、人間が手動でポチポチやるときに起こりがちな狼狽売りみたいなものが起こらない点です。

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

アルゴリズムによる自動売買のやり方

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

一応UIを直接操作すれば、自動取引ができないこともにですが、UIを操作して取引を行うのはハードルがかなり高いです。ちなみに機関投資家がアルゴで高頻度取引ができるのは法人向けにはAPIが公開されているからだと思います。

ですが、APIを使えばアクセスが超簡単にできるので、Botによるアルゴリズムトレードは基本的にAPIが公開されているところでやるのが無難でしょう。上述したように株式取引のAPIは個人向けには公開されていませんが、FX・仮想通貨・ビットコインを扱う仮想通貨取引所はAPIが公開されているため、仮想通貨やビットコインはアルゴリズムで自動売買を行っている人が多いです。

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

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

Botを作るために使用するプログラミング言語は何を使っても基本的にできますが、PythonやRubyなどだとBot作りのノウハウを書いたブログがいっぱいあるので、独学でシステムトレード(自動取引)を始めたいという人はPython・Rubyがオススメです。まあ個人的にはPythonの方がGoogleなどでも採用されており、ディープラーニングでAIを作る際にも重宝されるプログラミング言語であり、今後のIT業界で潰しがきくプログラミング言語だと思うのでPythonの方がオススメです。

アルゴリズム(Bot)の仕組み

まずはBotが売買判断を下すためには価格データが必要です。例えば移動平均でゴールデンクロス・デッドクロスを売り買いのシグナルとするためには日足であれば14日分といった感じで、価格データを集めて記録しておくこと必要になります。そのために仮想通貨取引所から、ticker(価格データ)を一定時間ごとに取得してそのデータをデータベースに蓄積します。

なのでシストレBotを作るためには、まずデータベースを作る必要があります。Pythonの場合ならば、データベースの作成するにはSQL(データベースを操作する言語)と使ったりpandasをインポートしてDataframe(データフレーム)→csvとして保管するのがオススメです。

個人的にはPythonが好きなのはこういうウェブマシーンとして、インターネットに接続して情報を送ったり収集したりする環境が整っているという点にあります。ですが、SQLとかよくわからんという人は単純にプログラム内のリストに数値を格納しておくだけでもBot自体は成立します。

他にも日経平均の日足などであればpandasのデフォルトの関数で取得する事もできますし、仮想通貨の価格ならば価格サイトがあるので、そこから過去のデータを取得するということも可能です。まあいろいろやり方はあります。

そしてその集めたデータから移動平均線やボリンジャーバンド・RSIなどのテクニカル指標を計算し、トレード判断の材料とします。移動平均線ならば短期移動平均線(5分足)が長期移動平均線(20分足)を抜ければゴールデンクロスということで買い、逆に長期を短期が突き抜ければデッドクロスということで売りというような戦略が立てられます。

ちなみにこの売買の判断にする指標のことを一般的にシグナルと言います。今回であればゴールデンクロスとデッドクロスをシグナルとするアルゴリズムbotということになります。

スポンサーリンク

自動取引Botがしていること

自動取引というと漠然としたイメージで、いきなり自動取引アルゴリズムBotを作ろうと思っても、まず何から手を付けたらいいのか分からなくなりがちですが、自動取引Botも中身を細かく分けると単純なプログラム指示を積み重ねてループさせているだけです。

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

Botを起動

①価格を取得する

②トレード指標を計算

③設定条件を満たした場合買い注文を作成

④買い注文を送信する

⑤注文内容と残高の確認

⑥シグナルに売り合図が出たら売る

⑦売り注文の送信

⑧注文内容・残高の確認

最初に戻る

基本はこんな感じです。FXとか指値注文を混ぜる場合はこれよりも処理が少し複雑になりますが、とりあえず ①「価格データを取得」、②「それに基づいたテクニカル指標の計算」、③「テクニカルの合図に従って売買注文を出す」という大まかな流れは変わりません。

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

この辺の詳しい説明は個人投資家のためのFinTechプログラミングという参考書に書いてあります。この本の惜しいところはデータベースの作り方と連携させる方法が紹介されていないため簡易的なBotのコードしか載せられていない点ですが、それでもBotの大まかな骨子があるので、始めてPythonで自動取引Botを作るという人にはとても参考になると思いますし、実際にビットフライヤーやZaifへの自動取引のコードが用意されていたり、数あるシステムトレードの参考書の中でも実践的なのでとてもオススメです。

次は実際に仮想通貨取引所のAPIを使って価格データ(ticker)や板情報を取得していきます。

スポンサーリンク

シェアする

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

フォローする