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

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

backtrader

kabu STATION APIを使ったリアルタイムトレード用のクラスを作る その9

引き続き、実装を進めている。本日の差分は、OANDA特有の変数の読み取り・宣言・代入を行っているメソッドを FIXME のラベルをつけてコメントアウトしている、ということになる。 下記にそのWIPのソースコードを載せておく。Gistのリンクも後述する。 #!/usr…

技術メモ:リアルタイムトレード(ライブトレード) その6 方針転換

そもそもの思い違いをしていたようだ。 www.backtrader.com リアルタイムトレード(ライブトレード)には予め3つの業者のものが backtrader には用意されており、それは以下のものである、ということに気付いた。 Interactive Brokers Visual Chart Oanda て…

技術メモ:リアルタイムトレード(ライブトレード) その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…

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

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

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

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

戦略:前日比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) ←前日の注文が有効期限…

戦略:前日比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…

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…

技術メモ - KABU+で取得したCSVファイルをbacktraderで使う

bt.feeds にCSVファイルでインポートするためのクラスが揃っている。その中でも、米Yahoo!用の be.feeds.YahooFinanceCSVData をオーバライドして使えば、独自の外部CSVファイルの取り込みができるようになりそう。 github.com

手数料の導入 ◆ Backtrader 最初の戦略その8

## 今回の内容 今回は、株取引に避けては通れない、手数料の計算を導入する。

グラフに単純移動平均 (SMA) を追加する (変更内容PRの紹介) ◆ Backtrader 最初の戦略その6.1

概要 下記の記事で変更した内容を、GitHubのPRにまとめたので、参考にしてほしい。 https://how-to-make-stock-trading-system.dogwood008.com/entry/backtrader-output-chart-smahow-to-make-stock-trading-system.dogwood008.com GitHubのPR github.com

グラフに単純移動平均 (SMA) を追加する ◆ Backtrader 最初の戦略その6

前回の振り返り 今回の内容 単純移動平均 (Simple Moving Average; SMA)とは? main.py を変更 前回の振り返り 前回は、バックテストの結果をグラフとして出力した。 how-to-make-stock-trading-system.dogwood008.com how-to-make-stock-trading-system.dog…

バックテストの結果を出力する(変更内容PRの紹介) ◆ Backtrader 最初の戦略その5.1

概要 下記の記事で修正した内容を、GitHubのPRにまとめたので、参考にしてほしい。 how-to-make-stock-trading-system.dogwood008.com GitHubのPR github.com サンプル 実際にこのPRに沿ってグラフを出力すると、下記のようなものになる。 how-to-make-stock…

バックテスト中に手仕舞いする(変更内容PRの紹介) ◆ Backtrader 最初の戦略その4.2

概要 下記の2記事で修正した内容を、GitHubのPRにまとめたので、参考にしてほしい。 how-to-make-stock-trading-system.dogwood008.com how-to-make-stock-trading-system.dogwood008.com GitHubのPR github.com

バックテストの結果を出力する ◆ Backtrader 最初の戦略その5

前回の振り返り 今回の内容 main.py の変更 Photo by Lorenzo from Pexels 前回の振り返り 前回は手仕舞いするためのコードを紹介した。 how-to-make-stock-trading-system.dogwood008.com 今回の内容 今回は、一連のバックテストの結果をグラフとして出力す…

バックテスト中に手仕舞いする ◆ Backtrader 最初の戦略その4.1

前回の振り返りと今回の内容 main.py の修正 next() の修正内容 Photo by Chris Ried on Unsplash 前回の振り返りと今回の内容 この記事は、下記記事の続きの記事である。手仕舞い戦略の部分の説明を追加する。 how-to-make-stock-trading-system.dogwood008…

backtrader-plotting: Backtraderのグラフを綺麗に描画してくれるライブラリ

Backtrader の標準の機能で出力できるグラフは、2種類ある。PNGの静止画として出力するか、Jupyter等で対話的に出力することでインタラクティブなグラフとして出力するかである。 しかし、後者の場合、ファイルとして保存することがやや難しい。 backtrader-…

バックテスト中に手仕舞いする ◆ Backtrader 最初の戦略その4.0

前回の振り返り 前回は、株式を買うことで建玉を作った。 how-to-make-stock-trading-system.dogwood008.com 今回の内容 建玉を手仕舞い(売る)ことで、含み益または含み損を確定させる。また、どのようなタイミングで売買しているかをグラフにプロットする…

バックテスト中に買い建玉を作成する ◆ Backtrader 最初の戦略その3

前回の振り返り 今回の内容 変更差分 Photo by Jason Leung on Unsplash 前回の振り返り 前回は、ログレベルに応じたログ出力をできるように改造した。 how-to-make-stock-trading-system.dogwood008.com 今回の内容 今回は、簡単なロジックに基づいて、バッ…

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