株のシステムトレードをしよう - 1から始める株自動取引システムの作り方

株式をコンピュータに売買させる仕組みを少しずつ作っていきます。できあがってから公開ではなく、書いたら途中でも記事として即掲載して、後から固定ページにして体裁を整える方式で進めていきます。

データの取得・保存

CSV取得処理をDockerイメージ化して再利用・自動化 その2

昨日の記事に引き続き、Dockerで Windows 用のイメージを作っていく。ただし、引き続き試行錯誤中なので、まだ完全に動くわけではない。 今日は `Dockerfile` から呼び出される `files\init.ps1` を紹介する。

CSV取得処理をDockerイメージ化して再利用・自動化 その1

Windows Server 2016にて、下記を自動で行う Docker イメージを作ろうとしている。 Docker イメージからコンテナを作れば、スケジューラに `docker run` を自動実行するようにさえ設定すれば、実行したタイミングで最新のものに同期してくれるのがメリットで…

戦略:前日比x%以下で買い、前日比y%以上で売り その2

昨日は大まかな戦略の方針を定めた。 how-to-make-stock-trading-system.dogwood008.com この方針に従って実装を進めていく。まだ完成はしていないが、戦略の部分だけ途中経過を公開する。 import backtrader as bt from logging import getLogger, StreamHa…

Backtrader で KABU+ のデータを読めるようにする その8

昨日の記事ではうまく動かせなかったが、それを修正して動くようにしたのが本日の記事である。 how-to-make-stock-trading-system.dogwood008.com backtrader_plotting を動かす都合上、 Google Colab では TestStrategyWithLogger クラスを別ファイル test_…

Backtrader で KABU+ のデータを読めるようにする その7

昨日まででKABU+のCSVを読み込んで Backtrader でバックテストをする準備が整った。 github.com ここで、下記のスクリプトを実行しようとしているが、期待通りに動かないので現在修正中。 github.com -----------------------------------------------------…

Backtrader で KABU+ のデータを読めるようにする その5

昨日は元の呼び出し部分をそのままコピーしてきて、 KabuPlusJPCSVData クラスに再実装することで、確かにそのメソッド内で失敗することを確認した。 how-to-make-stock-trading-system.dogwood008.com 今日以降はそれを受けて、実際に呼び出し部で失敗しな…

Backtrader で KABU+ のデータを読めるようにする その4

昨日の記事では転けている箇所とその行数、およびその行が所属するメソッドを特定した。 how-to-make-stock-trading-system.dogwood008.com 今回は、標準で bt.feeds.YahooFinanceCSVData に用意されているパーサである _loadline() メソッドを上書きするた…

Backtrader で KABU+ のデータを読めるようにする その3

昨日は、どの辺で転けているかの特定を行った。 how-to-make-stock-trading-system.dogwood008.com 具体的には、 h = float(linetokens[next(i)]) で転けている。 /usr/local/lib/python3.6/dist-packages/backtrader/feeds/yahoo.py in _loadline(self, lin…

Backtrader で KABU+ のデータを読めるようにする その2

これの続きをやっていく。 how-to-make-stock-trading-system.dogwood008.com 下記を参考に、本当に必要な部分のみを記載して実行してみる。なお、諸般の事情によりGoogle Colabを使用して実行する。 how-to-make-stock-trading-system.dogwood008.com なお…

Backtrader で KABU+ のデータを読めるようにする その1

how-to-make-stock-trading-system.dogwood008.com の続き。 japan-stock-prices_2020_7974.csv で読めるようにする。 class KabuPlusJPCSVData(bt.feeds.YahooFinanceCSVData): ''' Parses pre-downloaded Yahoo Japan CSV Data Feeds (or locally generate…

Kabu + のプロキシを作る - nginx.conf を設定して、APIサーバとして待ち受ける

振り返り nginx の設定ファイル nginx.conf nginx 振り返り ここまで下記の記事のようにプロキシを作るとして連載してきたが、振り返ってみると「プロキシサーバ」が一般的に指すものではなく、「代理で値を取得&キャッシュしておくAPIサーバ」を作ってきた…

Kabu + のプロキシを作る - Windows Server のポート開放

手順 動作確認 今後 nginxに外からアクセスできるようにするため、Windows ファイアウォールの設定を変更して、待ち受けポートを開放する。 手順 サーバーマネージャー → セキュリティが強化された Windows ファイアウォール 受信の規則 → 新しい規則... ポ…

Kabu + のプロキシを作る - nginxの待ち受けポートを変える

何故ポートを変えるのか 基本的に、HTTPのデフォルトポートは 80 、HTTPSは 443 である。これはPublicにするAPIサーバであれば、従う方が良い。なぜなら、アクセスの度にポートを指定しなくて良いからである。 では、何故そのポートを変えるのか。今回作成す…

Kabu + のプロキシを作る - nginx on Windows でプロキシ

今日はメモ程度。Windows の中でnginxをホストして、指定したポートを開けておけばそとからアクセスできるようになった。これでほぼ確実にプロキシサーバの構築が可能な目処が立った。参考にしたサイトは下記の通り。 nginx.org mode-n.jp qiita.com

Kabu + のプロキシを作る - サーバを何にするか

昨日までの記事で、いよいよCSVを自分のサーバ向けに配信できる環境が整った。 how-to-make-stock-trading-system.dogwood008.com Windowsで動いている都合上、色々と不便があるので、WSL2 を入れて ほぼ Linux にしたかったのだが、どうもさくらのVPSで提供…

Kabu + のプロキシを作る - WebDAV の同期ツールで個別株のヒストリカルデータを取得できない問題に対処

結論 取説の後ろの方に記載があった内容で解決する。具体的にはレジストリの編集を行う事で、1つのディレクトリ内のファイル数上限を2000万個まで許容する。 症状 同期ツールを実行すると、 「システムに接続されたデバイスが機能していません。」 と表示が…

Kabu + のプロキシを作る - Windows Server 2016 で WebDAV をマウントする

Windows Server 2016 で WebDAV のエンドポイントをマウントする方法を紹介。

Kabu + のプロキシを作る - Windows搭載のVPSをさくらで借りる

本記事では、さくらのVPS for Windows Server を借りるまでの一連の手順を紹介する。 GCP の GCE や AWS の EC2 も検討したが、さくらのVPSを借りるのと大きく料金が変わらないため、後述の理由より、さくらのvpsを採用した。 第一に、月額1000円でvpsを借り…

Kabu + のプロキシを作る - 続・Windows搭載インスタンスの調査

AWS Windows on Docker 結局何が一番良いのか AWS 昨日の記事では、AWSのEC2を使えば、格安でWindowsマシンを使えるかもしれない、と言及した。 how-to-make-stock-trading-system.dogwood008.com しかし、実際に積み込まれるメモリを考えると「本当にWindow…

Kabu + のプロキシを作る - 雑記・技術調査

ここで、AWS re:Invent 2020 にて下記の新サービスが発表された。 (略) これはサーバレスで Lambda が動くのは常識として、さらに docker のイメージ化しておけば、コンテナとしてそれをサーバレスで実行してくれるものである。

Kabu + のプロキシを作る - サーバレスで日次バッチを作る情報収集

せっかく Serverless で作るのであれば、SAM (Serverless Application Model) か Serverless Framework を使ってみたい。後者は個人レベルであればダッシュボードも付いてくるので、前向きに検討したい。 www.serverless.com 今日は諸事情によりこれでおしま…

Kabu + のプロキシを作る - 大雑把な構成

日次で更新データを取ってくるバッチサーバは Python で書いて、サーバレスで動かす。今のところ GCP or AWS どっちもアリだと思ってる。

Kabu + のプロキシを作る - API制限を確認する

まとめ 日次バッチで大丈夫、十分足りる。ただし、初期のデータ取得はその限りではないが、同期ツールでその制限外で取得できる。

Kabu + のプロキシを作る - 方針変更

昨日の記事では規約上で許可されている共有フォルダ一括同期ツールを使用して、API制限を受けずにアクセスしようとしていた。 how-to-make-stock-trading-system.dogwood008.com てっきり、WebDAVを使えば条件が満たされると思っていたが、どうやらそうでは…

Kabu + のプロキシを作る

Kabu+へのプロキシを作り、必要以上に Kabu+ のサーバへ負荷をかけずにCSVを取得できるようにしていく。

アイデアメモ - CSVに調整後終値を付与(本当の完成)

昨日はCSVから読み込んだDataFrameに、調整後終値を付加したが、1日適用するのが早かったため、直す必要があった。今日はこれを直す。 結果、調整後終値を無事に付加することができた。調整後終値を付加する連載はこれで一旦完了である。次回からはCSV取得の…

アイデアメモ - CSVに調整後終値を付与(一旦実装完了と凡ミス)

CSVを DataFrame に変換し、調整後終値を付加することはできた。しかし、凡ミスが1点だけあり、修正が必要。

アイデアメモ - CSVに調整後終値を付与(ラスト直前、実装アイデア)

本日はラフに書いているコードを共有して、最終イメージを掴んでもらうことにする。 全営業日について、その日の調整後終値を算出するための終値調整比を用意し、日付けと調整比のペアで DataFrame を作成する。

アイデアメモ - ある月の営業日を取得する

jpbizday というライブラリを使って、営業日を取得する。

アイデアメモ - Kabu+ で取得した CSV から必要なカラムだけフィルタリングして表示

Pythonのコード 出力 今回は how-to の記事。 pandasの API Referenceを見ると、 header や usecols を使った方が良いのかもしれないが、簡易にフィルタリング&リネームする方法を紹介する。 pandas.pydata.org Pythonのコード 下記のコードは、Kabu+で取得…

(C) 2020 dogwood008 禁無断転載 不許複製 Reprinting, reproducing are prohibited.