バックテスト環境の構築
「Docker コンテナによる自動的なファイル同期」ができるような Docker イメージの作成は、打ち切ることとする。 費用対効果が悪いので、別のアプローチの方がよさそうだ。 ツールを使った場合と同等以下の同期速度になるような Linux 用スクリプトを作成し…
引き続き docker run するだけでCSVを取得してくれる便利 Docker イメージを作成しようともがいている。 how-to-make-stock-trading-system.dogwood008.com どうやってもうまくいかないので、いっそ ServerCore である mcr.microsoft.com/windows/servercore…
引き続き Docker の Windows コンテナの中で WebDAV サーバをドライブとしてマウントしようとしているが、うまくいかない。 how-to-make-stock-trading-system.dogwood008.com System Error 53 System error 67 has occurred. とエラーが出るばかりで、マウ…
昨日の記事に引き続き、Dockerで Windows 用のイメージを作っていく。ただし、引き続き試行錯誤中なので、まだ完全に動くわけではない。 今日は `Dockerfile` から呼び出される `files\init.ps1` を紹介する。
Windows Server 2016にて、下記を自動で行う Docker イメージを作ろうとしている。 Docker イメージからコンテナを作れば、スケジューラに `docker run` を自動実行するようにさえ設定すれば、実行したタイミングで最新のものに同期してくれるのがメリットで…
昨日の記事で、 `backtrader.Analyzer` を使えば、バックテストの結果を解析することができそうだという技術メモを残した。今日はそれを実際に使っていく。試しに「ドローダウン」と「年次リターン」を表示するように変更する。
昨日の記事に一部誤りがあったので修正する。 how-to-make-stock-trading-system.dogwood008.com ログ出力用の部分で FIXME が残っていたので、それを下記の通り修正したのみ。 price=open_today, unit=size, open_today=open_today, close_yesterday=close_…
昨日の記事を受けて、動くものを作り直した。 how-to-make-stock-trading-system.dogwood008.com 必要な部分のみ抜粋し、その内容を下記の通り掲載する。 (前略) def _size(self, unit_price: float, is_buy: bool) -> Optional[int]: ''' Params --------…
昨日の記事で、一旦戦略は完成したものの、注文量の調整については未着手だった。 how-to-make-stock-trading-system.dogwood008.com そこで bt.Sizer を使用して注文量の調整を行う為、下記を参考に実装していた。 www.backtrader.com しかし、結果として、…
バックテスト用の戦略1個目が(一旦)完成しました。ライセンスをGPLにして配付しているので、誰でも無料で閲覧できます。
昨日に引き続き、公式のドキュメントで怪しいと思った部分を翻訳していく。 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 …
下記は前回までの記事。 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…
上記は昨日の記事。引き続きうまく注文が通らないので、アタックしている。 にっちもさっちもいかないので、一旦与えているパラメータに誤りが無いかを見直すことにする。 下記は buy() に渡すパラメータのうち、 exectype のものを抜粋したものである。 exe…
前回の記事は下記の通り。 how-to-make-stock-trading-system.dogwood008.com しかし、注文が依然として通らない。困った。 下記はbacktraderから出力されたログである。 [DEBUG] 2020-11-18, Expired: Buy ¥xxx,100 (@xxx1.00 * 100) ←前日の注文が有効期限…
昨日に引き続き戦略を作成していく。但し未だ完成していないので途中経過を添付する。 how-to-make-stock-trading-system.dogwood008.com import backtrader as bt from logging import getLogger, StreamHandler, Formatter, DEBUG, INFO if USE_BOKEH: fro…
昨日は大まかな戦略の方針を定めた。 how-to-make-stock-trading-system.dogwood008.com この方針に従って実装を進めていく。まだ完成はしていないが、戦略の部分だけ途中経過を公開する。 import backtrader as bt from logging import getLogger, StreamHa…
概要 方針 用意する現金を100万円にする 信用取引を使用する 10-50万円を購入金額にする 建玉は全て買い 最小取引単位の買い注文と、全量売り注文 買い注文は始値と前日終値の比が▲x%を下回ったとき 売り注文は前日終値の比が+y%を上回ったとき 概要 下記で…
昨日の記事ではうまく動かせなかったが、それを修正して動くようにしたのが本日の記事である。 how-to-make-stock-trading-system.dogwood008.com backtrader_plotting を動かす都合上、 Google Colab では TestStrategyWithLogger クラスを別ファイル test_…
昨日まででKABU+のCSVを読み込んで Backtrader でバックテストをする準備が整った。 github.com ここで、下記のスクリプトを実行しようとしているが、期待通りに動かないので現在修正中。 github.com -----------------------------------------------------…
昨日は元の呼び出し部分をそのままコピーしてきて、 KabuPlusJPCSVData クラスに再実装することで、確かにそのメソッド内で失敗することを確認した。 how-to-make-stock-trading-system.dogwood008.com 今日以降はそれを受けて、実際に呼び出し部で失敗しな…
昨日の記事では転けている箇所とその行数、およびその行が所属するメソッドを特定した。 how-to-make-stock-trading-system.dogwood008.com 今回は、標準で bt.feeds.YahooFinanceCSVData に用意されているパーサである _loadline() メソッドを上書きするた…
昨日は、どの辺で転けているかの特定を行った。 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…
これの続きをやっていく。 how-to-make-stock-trading-system.dogwood008.com 下記を参考に、本当に必要な部分のみを記載して実行してみる。なお、諸般の事情によりGoogle Colabを使用して実行する。 how-to-make-stock-trading-system.dogwood008.com なお…
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…
振り返り nginx の設定ファイル nginx.conf nginx 振り返り ここまで下記の記事のようにプロキシを作るとして連載してきたが、振り返ってみると「プロキシサーバ」が一般的に指すものではなく、「代理で値を取得&キャッシュしておくAPIサーバ」を作ってきた…
手順 動作確認 今後 nginxに外からアクセスできるようにするため、Windows ファイアウォールの設定を変更して、待ち受けポートを開放する。 手順 サーバーマネージャー → セキュリティが強化された Windows ファイアウォール 受信の規則 → 新しい規則... ポ…
何故ポートを変えるのか 基本的に、HTTPのデフォルトポートは 80 、HTTPSは 443 である。これはPublicにするAPIサーバであれば、従う方が良い。なぜなら、アクセスの度にポートを指定しなくて良いからである。 では、何故そのポートを変えるのか。今回作成す…
今日はメモ程度。Windows の中でnginxをホストして、指定したポートを開けておけばそとからアクセスできるようになった。これでほぼ確実にプロキシサーバの構築が可能な目処が立った。参考にしたサイトは下記の通り。 nginx.org mode-n.jp qiita.com
昨日までの記事で、いよいよCSVを自分のサーバ向けに配信できる環境が整った。 how-to-make-stock-trading-system.dogwood008.com Windowsで動いている都合上、色々と不便があるので、WSL2 を入れて ほぼ Linux にしたかったのだが、どうもさくらのVPSで提供…
結論 取説の後ろの方に記載があった内容で解決する。具体的にはレジストリの編集を行う事で、1つのディレクトリ内のファイル数上限を2000万個まで許容する。 症状 同期ツールを実行すると、 「システムに接続されたデバイスが機能していません。」 と表示が…