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

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

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

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

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

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

戦略:前日比x%以下で買い、前日比y%以上で売り その12 アナライザの使用

昨日の記事で、 `backtrader.Analyzer` を使えば、バックテストの結果を解析することができそうだという技術メモを残した。今日はそれを実際に使っていく。試しに「ドローダウン」と「年次リターン」を表示するように変更する。

技術メモ:backtrader.Analyzerの使い道

昨日の記事で、 Analyzer を使用すればシャープレシオを計測できると書いた。 www.backtrader.com さらにドキュメントを読み進めると、 backtrader.analyzers.SharpeRatio を使用して、シャープレシオの計測を行っていることがわかった。つまり、自分が算出…

技術メモ:シャープレシオの計測方法

backtrader.Analyzer を使用すればよさそう。 www.backtrader.com

戦略:前日比x%以下で買い、前日比y%以上で売り その11 微修正・注文量の調整

昨日の記事に一部誤りがあったので修正する。 how-to-make-stock-trading-system.dogwood008.com ログ出力用の部分で FIXME が残っていたので、それを下記の通り修正したのみ。 price=open_today, unit=size, open_today=open_today, close_yesterday=close_…

戦略:前日比x%以下で買い、前日比y%以上で売り その10 真・注文量の調整

昨日の記事を受けて、動くものを作り直した。 how-to-make-stock-trading-system.dogwood008.com 必要な部分のみ抜粋し、その内容を下記の通り掲載する。 (前略) def _size(self, unit_price: float, is_buy: bool) -> Optional[int]: ''' Params --------…

戦略:前日比x%以下で買い、前日比y%以上で売り その9 注文量の調整

昨日の記事で、一旦戦略は完成したものの、注文量の調整については未着手だった。 how-to-make-stock-trading-system.dogwood008.com そこで bt.Sizer を使用して注文量の調整を行う為、下記を参考に実装していた。 www.backtrader.com しかし、結果として、…

戦略:前日比x%以下で買い、前日比y%以上で売り その8 一旦完成

バックテスト用の戦略1個目が(一旦)完成しました。ライセンスをGPLにして配付しているので、誰でも無料で閲覧できます。

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

昨日に引き続き、公式のドキュメントで怪しいと思った部分を翻訳していく。 how-to-make-stock-trading-system.dogwood008.com <原文> The current data has already happened and cannot be used to execcute an order. If the logic in the strategy is …

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

下記は前回までの記事。 how-to-make-stock-trading-system.dogwood008.com 注文が通らない理由が、だんだんわかってきた気がする。 www.backtrader.com The current data has already happened and cannot be used to execcute an order. If the logic in t…

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

上記は昨日の記事。引き続きうまく注文が通らないので、アタックしている。 にっちもさっちもいかないので、一旦与えているパラメータに誤りが無いかを見直すことにする。 下記は buy() に渡すパラメータのうち、 exectype のものを抜粋したものである。 exe…

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

前回の記事は下記の通り。 how-to-make-stock-trading-system.dogwood008.com しかし、注文が依然として通らない。困った。 下記はbacktraderから出力されたログである。 [DEBUG] 2020-11-18, Expired: Buy ¥xxx,100 (@xxx1.00 * 100) ←前日の注文が有効期限…

技術メモ:KABU+の日付けフォーマットが変更された

以前触れたが、実際に変更になったので注意。 how-to-make-stock-trading-system.dogwood008.com 2021年1月より、日付の表記を「YYYYMMDD」形式(例:20210104)に統一しています。https://t.co/JGFyLwElJEYYYYMMDD形式から元の日時形式に変換する場合は、Ex…

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

昨日に引き続き戦略を作成していく。但し未だ完成していないので途中経過を添付する。 how-to-make-stock-trading-system.dogwood008.com import backtrader as bt from logging import getLogger, StreamHandler, Formatter, DEBUG, INFO if USE_BOKEH: fro…

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

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

技術メモ:VBScriptをタスクスケジューラで動かすには、batファイルを作った方が良い

下記をやりたくて、タスクスケジューラでは *.vbs スクリプトを毎日定時に起動するようにしていたのだが、実際はうまくスクリプトを起動できていなかったようである。 how-to-make-stock-trading-system.dogwood008.com 下記を参考にbatファイルを作成し、再…

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

概要 方針 用意する現金を100万円にする 信用取引を使用する 10-50万円を購入金額にする 建玉は全て買い 最小取引単位の買い注文と、全量売り注文 買い注文は始値と前日終値の比が▲x%を下回ったとき 売り注文は前日終値の比が+y%を上回ったとき 概要 下記で…

メモ:買い込んだ本

本日は、この年末で買い込んだ本の紹介をする。一部の本は現在セール中で、数千円する本を500円程度で買えるものがあるので、検討をおすすめする。(本の中身は未だ読めていないので、レビューを参考にして下さい)

メモ:今後の方針

一通り、KABU+から取得したヒストリカルデータを使ってグラフ描画ができたので、次は戦略の作成に取りかかっていきたい。

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+ のデータを読めるようにする その6

概要 CSVファイルの読み込み _loadline メソッド 概要 昨日の内容で、KABU+のCSVをBacktraderで読み込むことができた。 how-to-make-stock-trading-system.dogwood008.com 今回はそのコードを解説していく。 CSVファイルの読み込み def start(self): (中略…

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 なお…

技術書典10に出展する電子書籍、ほぼできました!

techbookfest.org 上記のページではまだ Ready になっていませんが、ほぼ電子書籍書き上がりました!(今は誤字チェック中) 下記のタイトル、内容で(3人による3本立てです!)、表紙裏表紙込みで44ページ、600円です!是非よろしくお願いします! Fintech…

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+のデータ形式が変わる

日付の表記が変わるようなので、パース処理を自前で書いていたら修正しないといけなそう。 https://kabu.plus/member/document/notice/notice_20201216.pdf

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