(ビットバンク)」の提供しているAPI機能を使って価格データの取得と口座残高の確認・注文処理を行ってきました。今回はいよいよ満を持してこの2つ記事でやったことを組み合わせて簡単な自動売買Botを作ってみます。この記事で作るのはあくまで簡単なテクニカル指標に従って自動で売買するプログラムなので儲かるとかそういうことは考えずあくまで動かすことを目的としています。コードが動くと楽しいですし達成感がありますのでプログラミングのモチベ向上になると思います。(ビットバンク)」の提供しているAPI機能を使って価格データの取得と口座残高の確認・注文処理を行ってきました.最初の記事の「Pythonで自動売買Botを作る1~システムトレードの流れを把握する」でも説明したように、自動売買botを作る上においてはプログラムから売買注文を出す処理の他に自動で売買を行う判断に使う「トレードシグナル」を作る必要があります。このトレードシグナルを何にするかは人によって変わってきます。基本的には過去の価格データをもとに売買シュミレーション(バックテスト)を行ってその中でリターンが高かったトレードシグナルを採用するというのが一般的です。関連記事:【Python】トレード戦略をバックテストして有効性を検証する本来ならばバックテストをしてリターンが出せているかを確認したりしますが、今回はとりあえず簡単なものを作るだけなので、有名なテクニカル指標である移動平均線を使います。移動平均線とは何か?まず移動平均についてざっと説明すると、移動平均線とは、ある一定期間の価格から平均値を計算し、その数値を線で表したものです。その日を含めた過去何日間(または何週間)かの価格を毎日計算するため、平均値が移動していくことから、移動平均と呼ばれます。[100・110・120・130・140・150・160]という値動きをしている金融商品があったとするならば、その5日移動平均はまず4日目まではデータが足りないので算出不可能です。5日目の移動平均は(100+110+120+130+140)÷5=120、6日目の移動平均は(110+120+130+140+150)÷5=130、7日目の移動平均は(120+130+140+150+160)÷5=140、という風な計算になります。このように計算期間がローリングして移動していくので、移動平均と言われています。この移動平均は代表的なテクニカル指標のひとつで、価格の傾向(トレンド)など、相場の方向性を図る意味合いでよく使われます。YahooFinanceとかにもチャート画面にも移動平均線はデフォルトで乗っていたり、移動平均はテクニカルの王道中の王道なので投資・トレードに興味のある人は頭の隅にとどめておきましょう。他にも移動平均の考え方はMACDなど、他のテクニカルチャートにも応用して利用されています。株式投資やFXを少しでもやったことのある人ならわかると思いますが、ようはチャートに画面に引いてあるこんな線のことですね。移動平均線の使い方としては、任意の2つの期間で計算した長期移動平均線と短期移動平均線が交差する「ゴールデンクロス」「デッドクロス」がトレードシグナルです。「ゴールデンクロス」とは短期移動平均線が長期移動平均線を上に突き上げる形で交差することを指し、直近の価格が上向きだということで上がる可能性が高い=買い、反対に「デッドクロス」とは短期移動平均線が長期移動平均線を下に突き抜ける形で交差することを指し、直近の価格が下向きだということで下がる可能性が高い=売りという感じになります。引用元:https://www.jibunbank.co.jp/products/foreign_deposit/chart/help/sma/まあ「ゴールデンクロス=買い、デッドクロス=売り」という感じで覚えていれば問題ありません。このゴールデンクロスとデッドクロスを構成する長期と短期の2つの移動平均線の計算期間は人によってそれぞれですが、一般的に「5日・25日」とか「25日・75日」とかいう組み合わせがよく見かけますね。pythonで移動平均線を計算するというわけで移動平均の計算方法と使い方についてざっと説明したので次は実際にPythonで移動平均線計算していきます。移動平均の計算方法は簡単なので、自分でfor文で計算するのも全然アリですが、Pythonだと「Pandas」というライブラリを使えば、簡単に計算できます。このPandasは基本的にエクセルのような表計算をpythonに実装するためのライブラリですが、拡張機能が豊富で、今回みたく移動平均線が計算出来たり日経平均株価やダウ工業平均の価格データも関数1つで入手できるので非常に便利なライブラリです。pythonを使いこなすあたっては絶対に使えるようにしておきたいライブラリです。今回はPythonで日経平均株価を取得していきたいと思います。環境はWin10・Ancondaを使用しています。anaconda?jupyter?という人は以下の記事を参照してください。この2つはpythonでのデータ分析において必須なので、使いこ...Pandasはpythonの拡張ツールである「Anaconda」をインストールしていればデフォルトでインストールされているので、pipでわざわざインストールうる必要はなく、importするだけで使用できます。ちなみにプログラミングを始める時に、ど...加えてPythonの拡張ソフトウェアである「Anaconda」もPythonでプログラミングするにあたって非常に便利なソフトなので絶対にインストールしておいたほうが良いです。今回移動平均を計算のもとになるビットコインの価格データですが、tickerをちまちま集めていると時間が掛かるので、今日はとりあえず仮想通貨の価格サイトからビットコインの価格データを引っ張ってきます。ちなみにトレードシグナルの計算のもとになるビットコインを始めとする仮想通貨の価格データの集め方は1「取引所が配信しているtickerを一定時間ごとに取得する」2「仮想通貨の価格データを集めているサイトから引っ張ってくる」という2つの方法がありますが、基本的には2でいいと思います。今回使うビットコインの価格データは「Coingecko」という仮想通貨の価格サイトから取得します。他にもビットコインの価格データは「CryptoWatch」という仮想通貨価格サイトからも取得できます。ビットコインを始めとする仮想通貨の価格データはビットフライヤーやビットバンクなどの国内の仮想通貨取引所のAPIを使って取得することが可能ですが、国内の取引所から取得できる価格データはあくまで国...という訳で上の記事で紹介した自作の関数を使ってビットコインの価格データの取得&前処理を行い、そのデータから移動平均線を計算していきます。データの確認print(bitcoinprice.head())これは直近1日分のビットコインの5分足価格データを取得する関数なので、数値は実行した日によって返ってくる数値は変わってしまいますが、こういう感じの結果が返ってくると思います。次はこのビットコインの5分足の価格データから移動平均線を計算します。Pythonでの移動平均の計算は「変数名.rolling(window=任意の数).mean()」で計算できます。引数のwindowで計算する移動平均を計算する期間を指定できます。今回は5分足のデータから25分と75分の移動平均を計算したいので、window=5とwindow=15として、25分移動平均線と75分移動平均線を計算します。price.rolling(window=15).mean()これで移動平均が計算できました。一応確認のためビットコインの価格と移動平均線をプロットしてみます。label='EMA25')plt.legend()plt.grid(which='both')こういう感じのグラフがプロットできます。pythonは計算だけでなく、「Matplotlib」というライブラリを使うと様々なグラフをプロットすることもできるので、便利です。関連記事:【Python】Matplotlibでのグラフ作成の基本をわかりやすく解説するこんな感じで価格データの取得とトレードシグナルとする長期と短期の2つの移動平均線の計算ができました。これとシリーズ3つ目の記事「Pythonで自動売買Botを作る3~プライベートAPIを使って仮想通貨を売買する」で説明したプライベートAPIを使った売買注文のプログラムでPythonでビットコインを自動売買するために必要な要素はすべて集まったので、次はこれらを組み合わせたPythonによるビットコインの自動売買botを作っていきます。(ビットバンク)」で使える移動平均線を使ったビットコインの自動売買botの作り方とコードの中身を解説していきます。time.sleep(300)このコードだとビットコインの価格を取得する→シグナルに使っているテクニカル指標を計算する→条件を満たしている場合買い注文を入れる→一定時間がたったら売り注文を入れるという処理を5分おきに繰り返しています。長期移動平均線の数値<短期移動平均線の数値」という風になります。ゴールデンクロスは価格が上がる可能性が高いサインなので、ゴールデンクロスが発生したらビットコインを購入して、一定時間(5分後)にビットコインを売却するという処理を行っています。ちなみにデッドクロスが発生した場合は売るという処理を行いたい場合は、売りから入ることができる信用取引ができる環境である必要があります。残念ながらビットバンクは現物しかなく、信用取引で売りから入ることはできないので、売買機会が少なくなってしまいます。2019年現在APIを使って信用取引ができる国内の取引所はビットフライヤーとリキッドの2つですが、ここの2つは取引所自体が怪しいので、あまり信用できないというのが難しいところです。終わり以上がpythonでビットコインを自動売買するための知見です。今回はデモなので単純移動平均(SMA)と現物取引でしたが、株式やビットコインを自動売買するプログラムを組んで、システムトレードで本気で儲けようとする場合は、移動平均線ではなく、もっと有効性の高いトレード戦略を自分でバックテストなりで見つけたり、売りから入れる信用取引にするなどして、売買の条件処理をもう少し複雑にする必要があります。それでも儲かるとは限りませんが・・・また自動化した売買プログラムを常時実行させたい場合はレンタルサーバーと契約して、そこにプログラムのソースをおいてCronやWhile文で定期実行するのが一般的です。詳細は次の記事で解説しています関連記事:Pythonで自動売買Botを作る5~レンタルサーバーでプログラムを定期実行するちなみにpythonで移動平均線以外のテクニカル指標を計算するにあたっては「ta-lib」というライブラリを使うと、MACD・RSI・ボリンジャーバンドなどメジャーなテクニカル指標は全部関数1つで計算することができるようになります。pockets【Python】テクニカル指標が簡単に計算できるTa-libの使い方https://tkstock.site/2018/08/22/post-593/前回はPythonで移動平均線・MACD・RSIなどのテクニカル分析において定番の指標たちを計算しましたが、今回はより充実したテクニカル分析を行うため、他のテクニカル指標も計算していきたいと思います。これがBotを作るうえでの基本でここから色々アレンジをしていく形になります。本気でリターンを出そうと思うのであれば様々なトレード戦略やアービトラージやサーバーの高速化など色んな知識が必要になってきます。いったトレード戦略の話は「Python3ではじめるシステムトレード」に書いてあったので、もっと本気でシステムトレード(自動売買)に取り組んでみたいという方は是非読んでみてください。楽天ブックスAmazonKindleしばらく忙しいので更新できるか分かりませんが、時間が出来ればもっと凝ったコードも作っていきたいと思います。user【Python】移動平均を使った仮想通貨自動取引Botを作ってみるhttps://tkstock.site/2018/07/17/post-471/の続きで今回は↑の記事でCoinEXから取得したCETの価格データをもとに注文を出して売買する自動取引Botを作っていきたいと思います。昨今、テレビでもSNSでもディープラーニング・AIという単語を聞かない日はありません。・大学生に超オススメな格安プログラミングスクール「クリプテックアカデミア」が凄い!プログラミングの独学はとても難しいプログラミングは小学校の義務教育にも導入され始めており、これから社会人として生きていく上でプログラミングはもはや出来て当たり前、出来なれば論外というエクセルレベルの必須スキルになりつつあります。いう話を聞いて参考書なりを購入して独学でプログラミング勉強しようと思っている人も少なくないでしょう。・「コードのエラーの原因が分からない」という壁にぶち当たって、プログラミングの勉強を止めてしまう方が少なくありません。独学でプログラミングを勉強してる時間のほとんどはつまづいている時間です。実際僕も最初のころ独学でプログラミングを勉強していた頃はエラーの原因が分からず丸1日を不意にしてしまった・・・そんな苦い経験がありました。「エンジニアとして若いうちから高収入を得たい」という強い気持ちから一念発起して「侍エンジニアのwebサービスコース」に申し込み、プロのエンジニアの方に対面でマンツーマンでPythonによるWebサービス作り方とWeb技術の基本を教えてもらい、ようやくプログラミングが理解でき、今ではエンジニアとしてそこそこの暮らしができるようになりました。無料レッスンの詳細を見てみる侍エンジニアでは、とりあえずプログラミングやインターネットの基本を知っておきたい人から、HTML・cssなどでWebサイトやWebアプリを作ってみたい人やPythonを勉強してデータサイエンティストやAIエンジニアになりたい人まで幅広いニーズに応えた様々なコースが用意されています。IT業界と言ってもエンジニアの仕事はプログラミング言語次第でサーバーから機械学習・ディープラーニングまで多種多様ですし、侍エンジニアの無料レッスン(カウンセリング)を受けてみて、自分のやりたいITの仕事は何なのか?を見つけるのがエンジニアへの第一歩になります。」の無料レッスンを受けると1000円分のAmazonギフト券がもらえるので、試しに受けてみるだけもお得です。自分は半端に独学やオンラインスクールで勉強して金と時間を無駄にするくらいなら、リアルのプログラミングスクールに通ってしっかりプログラミングを勉強した方がいいと思います。ちなみに今、侍エンジニアに申し込むと、25歳以下の学生の方であれば、受講料が20%OFFになるので超お得です。プログラミングは大勢で授業を受けたり漫然とオンライン学習をするよりも自分が分からない箇所をピンポイントでプロの講師に直接質問して、ちゃんと納得するというスタイルの方がお金は確かに少し掛かりますが、独学で学ぶよりも絶対にモノになります。Qiitaに非常にわかりやすい画像があったので、使わせてもらいます。湊の研究室.侍エンジニアの無料体験レッスンを予約する-->。