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

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

2021-01-01から1ヶ月間の記事一覧

作業経過:「株式分析チュートリアル」の冪等性のある実行環境の作成 その2

昨日の記事の続きをやっている。 how-to-make-stock-trading-system.dogwood008.com まだ完成していないので途中だが、できたところまでを掲載する。(動作を確認しながら、試行錯誤中) vagrant up で仮想マシン起動、 vagrant ssh でSSHクライアントを通じ…

作業経過:「株式分析チュートリアル」の冪等性のある実行環境の作成

昨日の記事で紹介した下記チュートリアルについて、実行環境をできるだけ簡単に用意できる Docker + Vagrant 環境を作っている。 なぜ Docker 単体ではないかというと、mac の場合、ファイル同期あるいはIO周りで遅くなるので、その回避策として Vagrant を…

メモ:株式分析チュートリアル

japanexchangegroup.github.io (株)日本取引所グループがCC BY-NC-ND 4.0で公開している。ざっとしか見ていないが、非常に参考になると思われる。

メモ:コンペ「J-Quants」

www.jpx-jquants-info.com JPXが公式で関わっているコンペが明日から開催される。 私もチャレンジしてみたいと思う。

技術メモ:リアルタイムトレード(ライブトレード) その5

今日も昨日の続き。 how-to-make-stock-trading-system.dogwood008.com data = ibstore.getdata(dataname='TWTR-STK-SMART', rtbar=True) cerebro.resampledata(data, timeframe=bt.TimeFrame.Seconds, compression=20) この場合、データの属性である ._time…

技術メモ:リアルタイムトレード(ライブトレード) その4

今日も昨日の続き。 how-to-make-stock-trading-system.dogwood008.com 下記の要約の続きを行っていく。 www.backtrader.com データの時間枠と圧縮 下記のコードでデータを取得できる。 data = ibstore.getdata(dataname='EUR.USD-CASH-IDEALPRO', timeframe…

技術メモ:リアルタイムトレード(ライブトレード) その3

how-to-make-stock-trading-system.dogwood008.com データコントラクトの確認 下記は Backtraderの公式ドキュメントから引用と翻訳。(閲覧日: 2021年1月25日) # OK data = ibstore.getdata(dataname='TWTR') # Twitter data = ibstore.getdata(dataname='…

技術メモ:リアルタイムトレード(ライブトレード) その2

昨日の振り返りと今日の内容 backtrader.stores.IBStore の紹介 backtrader.feeds.IBData の紹介 昨日の振り返りと今日の内容 昨日はリアルタイムトレードを行う助けとなるドキュメントの紹介をし始めた。今日はその続きをしていく。 how-to-make-stock-trad…

技術メモ:リアルタイムトレード(ライブトレード) その1

下記のドキュメントで言及がある。 www.backtrader.com また、サンプルのスクリプトがリポジトリに存在するようだ。 github.com リアルタイムで取引するライブトレードの実現のためには、 Interactive Brokers を用いたインタラクションが必要で、それには2…

技術メモ:パラメータ最適化

下記のページが参考になる。 www.backtrader.com

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

「Docker コンテナによる自動的なファイル同期」ができるような Docker イメージの作成は、打ち切ることとする。 費用対効果が悪いので、別のアプローチの方がよさそうだ。 ツールを使った場合と同等以下の同期速度になるような Linux 用スクリプトを作成し…

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

引き続き docker run するだけでCSVを取得してくれる便利 Docker イメージを作成しようともがいている。 how-to-make-stock-trading-system.dogwood008.com どうやってもうまくいかないので、いっそ ServerCore である mcr.microsoft.com/windows/servercore…

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

引き続き Docker の Windows コンテナの中で WebDAV サーバをドライブとしてマウントしようとしているが、うまくいかない。 how-to-make-stock-trading-system.dogwood008.com System Error 53 System error 67 has occurred. とエラーが出るばかりで、マウ…

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ファイルを作成し、再…

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