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

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

今読んでる本「アルゴリズム取引」

まだ読んでる途中。感覚として「こうなんだろうなあ」と思っているようなことが、数式による証明でわかりやすく記述されている。読んでいて面白い。 取引の戦略として、直接取り入れられるかというとちょっと遠そうだが、その下地を作る上では読んでいて参考…

DBへCSVをインポートするツールを作っている その3 - Rubyスクリプト

how-to-make-stock-trading-system.dogwood008.com # csv_base.rb require 'csv' class CsvBase def initialize(file_path) @file_path = file_path end def each_line open(@file_path, 'r') do |f| CSV.foreach(@file_path, headers: header?, encoding: e…

DBへCSVをインポートするツールを作っている その2 - Docker Compose と Dockerfile

昨日の続き。 how-to-make-stock-trading-system.dogwood008.com docker-compose.yml と Dockerfile を掲載しておく。 # docker-compose.yml version: '3.9' services: db: image: 'postgres:13.4' environment: - POSTGRES_USER=postgres - POSTGRES_PASSWO…

DBへCSVをインポートするツールを作っている その1

やりたいのは、これで読みだすDBを作るということ。 how-to-make-stock-trading-system.dogwood008.com そのままだと文字コード不一致で都合が悪かったり、日付けと時刻が別フィールドになっているので、それをRFC3339の形式にしたいので、そのコンバート&…

RustでDBを読み込む その1

下記の記事の続き。今度はDBを立てて、そこにアクセスした結果を返すようにする。 how-to-make-stock-trading-system.dogwood008.com DBは PostgreSQL を使用する。好みで MySQL でも良いだろう。直接立てるのではなく、Docker + Docker Compose を使って立…

actix-web で HelloWorld

下記ページを参考にして、 actix-web で Hello World を作った。 github.com 今後はDBに接続して、下記を参考にしつつ最も近い値を返すように変更していく。 how-to-make-stock-trading-system.dogwood008.com メインのプログラム // main.rs use actix_web:…

Rust開発環境のセットアップとHelloWorld

下記の記事を参考に進める。なお、実行環境は intel mac (Big Sur) である。 note.com インストール curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh info: downloading installer Welcome to Rust! This will download and install the of…

Rustの勉強を始めた

doc.rust-jp.rs how-to-make-stock-trading-system.dogwood008.com Rust自体全くの素人なので、まずはその勉強から始めることにした。

RustのWebアプリケーションフレームワークやライブラリを調査

一通り調査し、丁寧にまとめてある記事があったので,貼っておく。 developers.cyberagent.co.jp どうも actix-web がデファクトのようなので、今のところはそれで作ろうかなと思う。

Rustで作ってみようかな:日時を投げると、その時の時価を返してくれるサーバ

how-to-make-stock-trading-system.dogwood008.com 昨日のこれだが、Rustで作ってみようかなって思ってる。始めた触るけど、やってみよう。

次に作るもの:日時を投げると、その時の時価を返してくれるサーバ

次は、DBのラッパのようなものを作る。下記で構想していたものをもう少し具体的に書く。 how-to-make-stock-trading-system.dogwood008.com 作ろうとしているのは、「指定した日時における、現在価格を歩み値から取得して返す」というサーバである。これはプ…

PUSH APIのフェイクサーバを作る その7

how-to-make-stock-trading-system.dogwood008.com 今日は昨日の後始末。JSON形式でトークンを返したり、READMEを作成したりした。 github.com

PUSH APIのフェイクサーバを作る その6

how-to-make-stock-trading-system.dogwood008.com 昨日の続きだが、完成した。 github.com $ docker-compose --build up と入力するだけで、 localhost:18080 で待ち受けを開始する。 あとは、 kabu STATION API にリクエストを出すように /kabusapi/token …

PUSH APIのフェイクサーバを作る その5

how-to-make-stock-trading-system.dogwood008.com 昨日の続き。フェイクのトークンを配信できるような nginx.conf は設定できた。一旦ここまでをリポジトリに公開する。 github.com ただし、まだWebsocket周りのサービスが想定通り動かないので、継続して調…

PUSH APIのフェイクサーバを作る その4

how-to-make-stock-trading-system.dogwood008.com 昨日の続き。前段にnginxを置き、アクセスされたパスによって後段のexpressかwebsocketのどちらかのサーバへアクセスを流し、nginxはそのリバースプロキシとして振る舞う、という構造を目指している。 まだ…

PUSH APIのフェイクサーバを作る その3

how-to-make-stock-trading-system.dogwood008.com 上の記事の続き。 0.8-1.5秒毎にランダムで値を返却するフェイクサーバを作った。 ただ、これだとトークンを返却するリクエストに対応できないので、expressを使ってダミーのトークンを返せるように変更し…

PUSH APIのフェイクサーバを作る その2

細かいところを調整しているが、大まかにはフェイクサーバはできたんじゃないだろうか。 'use strict'; // ref: https://shizenkarasuzon.hatenablog.com/entry/2021/04/21/004132 const fs = require('fs'); const WebSocket = require('ws'); const wss = …

PUSH APIのフェイクサーバを作る その1

開発用に動作をモックするフェイクサーバを作る。まずは先行事例を見つつ、Websocketでメッセージを返すところから。 'use strict'; // ref: https://shizenkarasuzon.hatenablog.com/entry/2021/04/21/004132 const fs = require('fs'); const WebSocket = …

Websocketを python-kabusapi から閉じられるようにしたい

github.com 試行錯誤中、、、あんまりうまくいっていない

お休み:楽天ひかりがだめになったので

PCがネットに繋がらないので、本日お休みします。😢

macやLinuxから kabu STATION APIを使う(Windowsにnginxを立ててリバースプロキシ)

Windowsでしか kabu STATION が動かないため、APIもWindowsでしか実行できない、そう思っていないだろうか。 そんなことはない、macやLinuxからでもAPIは叩くことができる。ただし、Windowsは必要で、Windows上にnginxを立てる必要がある。 公式のissueで削…

WIP: python-kabusapi をBASIC認証に対応させる

python-kabusapi は requests を使用しているので、BASIC認証にも容易に対応できそうだ。現在進行中。

WIP:nginx で Websocketのリバースプロキシ

how-to-make-stock-trading-system.dogwood008.com 昨日の記事の続き。下記の記事が参考になる。 qiita.com

アイデア:nginx で Websocketのリバースプロキシ

how-to-make-stock-trading-system.dogwood008.com これをやるべく、nginxでWebSocketのリバースプロキシを書いている。mac <-> Virtualbox <-> win の通信をしようと思っている。

SBI証券でeワラントの取り扱い終了

site1.sbisec.co.jp 馬鹿みたいに損した記憶しかないわ…

SBI証券、デザイン変わったか?

www.sbisec.co.jp スクレイピングしている人は、正しく動いているか確認した方が良さそう。

asyncioは close() する前に cancel() する必要がある?

how-to-make-stock-trading-system.dogwood008.com 上記の記事に沿ってやってみたが、うまく行かなかった。 わかりやすいように、Ctrl+Cを押した時点で Close websocket と表示するようにしたスクリプトが、下記のものである。 try: # 受信開始 api.websocke…

python-kabusapi でWebsocketをクローズする

時間が無いので動作未検証だが、イメージとしてはこんな感じでソケットをクローズできるのではないかと考えている。時間取れた時に検証する。 @api.websocket def recieve(msg): # ここで処理を行う msgはdict形式である。 print("{} / {} {} {}".format( ms…

調査:Websocketをきちんと閉じていないのがPUSH APIから取得できなくなる原因ては?

公式のサンプルを見ると、やはりきちんとWebsocketを終了時に閉じているようだ。 https://github.com/kabucom/kabusapi/blob/master/sample/Python/kabusapi_websocket.py python-kabusapi だと、起動して初めの1回だけ情報を取得できたことから、終了処理が…

訂正:「kabu STATION API のPUSH APIは、土日には一切情報が流れてこない」というのは誤り

how-to-make-stock-trading-system.dogwood008.com 昨日の記事で、「一切流れて来ない」と書いたが、それは誤りだった。 現在試行錯誤中だが、 shirasublue/python-kabusapi を使う際、正常にWebsocketをクローズしない場合(例えばCtrl+Cで抜けた場合)、次…

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