53歳限界プログラマの憂鬱

SU/CAR-ST-APplication-cellsから派生したプログラマのブログ

来訪ありがとうございます
シストレツールを自作してました
自分用の記事が多いのであまり役には立たないブログでした

f:id:sucar:20150414193802p:plain

自作システム詳細目次

株価データcsvフォーマット変換

追記)フォーマット変換が複雑になってるので、整理予定

株価データを準備して所定のフォルダに置いて

f:id:sucar:20190321105900p:plain

をクリックすると

tcltk2/scr2.tcl に

.m.m1 add command -label "HenkanDauto" -underline 0 -command {exec bash -c ./henkanDauto &}

 と記述されてるので、

henkanDauto

#!/bin/bash
for var in `ls ./henkan/before/D*csv`
do
	year=`echo $var | cut -c 18-19`
	month=`echo $var | cut -c 20-21`
	day=`echo $var | cut -c 22-23`
	stocks=./henkan/stocks/stocks_20${year}-${month}-${day}.csv
	cat $var | awk -f ./awk/henkanD2new.awk > $stocks
	echo mv -f $var ./henkan
	mv -f $var ./henkan
	echo cp $stocks ./stocksnew
	cp $stocks ./stocksnew
done
exit

 というshell script が実行され、入手データのフォーマットを変換してくれます

実際に変換を行っているのは

awk/henkanD2new.awk

#!/bin/awk
BEGIN { 
	FS=","
	#print "henkanD2new"
	print "コード,銘柄名,市場,始値,高値,安値,終値,出来高,売買代金,henkanD2new"
 }
# 1,2行目を無視
NR>2 {
	printf("%s-T,",$2)
	printf("dummy,")
	printf("dummy,")
	if ($4==0) {printf(",")}
	else {printf("%s,",$4)}
	if ($5==0) {printf(",")}
	else {printf("%s,",$5)}
	if ($6==0) {printf(",")}
	else {printf("%s,",$6)}
	if ($7==0) {printf(",")}
	else {printf("%s,",$7)}
	printf("%s,",$8)
	printf("%d\n",($4+$7)*$8/2) #売買代金=(始値+終値)*出来高/2で代用
}

END {}

 です(ちなみに日本語シフトJIS LF(UNIX)となってますね)

 もし、入手するデータフォーマットが変わったら、このあたりを変更することになります

 更にちなみに変換後のcsvデータは シフトJIS CRLF になってます

 これで1回目の変換が実行され、前に入手していた新しいタイプのcsvフォーマットに変換されてます

で、あと2回変換が行われることになります

この辺は何とか簡潔にしたいのですが、動いているからまあいいか状態ですw

 

上場廃止銘柄除外の登録

毎日の作業でまず最初に上場廃止銘柄除外登録を行います

f:id:sucar:20190321104236p:plain

Preparation→jjhsi をクリックすると

上場廃止銘柄(取引注意銘柄)|取引注意銘柄 |セミナー・マーケット情報|株のことならネット証券会社【カブドットコム】

↑がブラウザで開き、同時に設定ファイルがエディタで開くので、そこに(手動でw)4桁のコードを登録します

これで、バックテスト及びシグナル出しの際に登録した銘柄が除外されます

(バックテストで除外されるのはちょっと困ったことでもあるんですが仕方ないかと)

 ちなみに設定ファイルは

になってるようです

※システムの改行コードが混在しててちょっとまずいかもしれません まあ動いてるのでいいか状態w

 

株価データについて・・・

株価データの入手については特に書きません

まあ、探せば見つか・・・

とだけ書いときます

基本的にはcsvファイルで、その日の4本値データ+売買代金または出来高が銘柄ごとに1行になってるやつを使います

f:id:sucar:20190321102218p:plain

現在はこんな感じのDataをゲットして使ってます

ちなみに シフトJIS CRLF となってますね

繰り返しますが、入手方法については特に書きませんので・・・・

 で、このcsvのフォーマットに決まりがあるわけではないので、入手するデータによって微妙にフォーマットに違いがあります

また、扱いやすいフォーマットにしたいというのもあるので・・・

  • 入手したcsv
  • 前入手していた新しいタイプのcsvフォーマットに変換し
  • それを更にその前に入手していた古いタイプのcsvフォーマットに変換し
  • 更に扱いやすいcsvフォーマットに変換

とちょっとややこしいことになってしまってますw

 

株の自作システムの詳細について書いていこうと・・・

ひょっとしたら自分で(大規模な?)株のスィングトレード用のシステム(アプリ)をプログラムしてみたいと思っている人もいるかと思いますので、私のシステムの詳細を(グダグダと)書いて行ってみようかと思ってます

https://cdn-ak.f.st-hatena.com/images/fotolife/s/sucar/20190302/20190302071844.png

現在のパネルがこんな感じで、Tcl/Tkで書いてます

とりあえず簡易的なGUIはできてますが、プログラム本体はCUIで、shell script 駆使してます

マニュアルも開発仕様書もない状態のフルスクラッチソフトですので、まあ、記事書くことで自分のためになるので・・・・・

使っている言語は

C言語

R言語

shell script (bash

awk

sed

m4

Tcl/Tk

gnuplot

こんなところです

 

https://cdn-ak.f.st-hatena.com/images/fotolife/s/sucar/20190316/20190316195419.png

バックテストでこんな資産グラフが描けます

 

CSN_1Aという戦略の2008年対策検討

CSN_1Aという戦略

abenomix.hatenablog.com

2008年の暴落に全く対応できていないので、パラメタ(変数)を弄ってみる

 2007/1/5~2011/2/4の1000日データ

https://cdn-ak.f.st-hatena.com/images/fotolife/s/sucar/20181124/20181124210809.png

全くだめ!

変数は

Vckc	22
Va1	15
Va2	29
Vzd	10
Vmn	30

となってる

いろいろやったが割といい結果になったものだけ掲載

Va1 15⇒25(+10) Va2 29⇒33(+4)

f:id:sucar:20181125073335p:plain

信用倍率2倍
DD:j=249:357,783( 5.50%) 資金=6,509,645
損益=2,528,449 (年740,033 年利 11.37%)

結論

  • 年利10%程度だが
  • Va1,2を大きくすれば
  • 許容DD内で運用可能

 追記)同じパラメタ調整をしてもコロナショックには対応できず

f:id:sucar:20200601054428p:plain

追記終わり)

 

CSN_1Aという戦略のバックテスト

追記)コロナショックにも対応できてない

f:id:sucar:20200601053805p:plain

更に追記)パラメタ弄ってた

supercar.hatenablog.com


追記終わり)

すみません ほぼ自分用記事です

CSN_1A という戦略

	MAIN	000
; -----市場----------------------
	NotT1
; ----------------------
	Var(ckc,22)
	Var(a1,15)
	Var(a2,29)
; ----------------
	IntV(zd,10)
	IntV(mn,30)
; ----------------------
_	CK_CNT=Vckc
	CK_CNT	22
; ---------------------
	DblD	-Va1	d1
	pAd(Dd1)
; ---------------------
	pD(Oku(1),Oku(500000))
; ---------------------
	DblD	-Va2	d2
	sAu(Dd2)
; ---------------------
_	Zday=Nzd
	Zday	10
_	MAXn=Nmn
	MAXn	30
dnl --------------------
	YSN 360000
	RKK 5
	SSN 5

 2014/10/28~2018/11/22の1000日データ

f:id:sucar:20181124203746p:plain

信用倍率2倍
DD:j=200:176,691( 1.74%) 資金=10,162,940 損益=9,035,723 (年2,644,601 年利 26.02%)

DD小さく年利20%以上

2012/11/28~2016/12/30の1000日データ

f:id:sucar:20181124204938p:plain

信用倍率2倍
DD:j=668:604,187( 5.68%) 資金=10,629,865 損益=12,248,285 (年3,584,863 年利 33.72%)

DDがちょっと大きいが年利は30%以上

まあ、DDは耐えられるレベル

2009/12/4~2013/12/30の1000日データ

f:id:sucar:20181124205702p:plain

信用倍率2倍
DD:j=867:474,333( 4.74%) 資金=10,016,245 損益=4,336,824 (年1,269,314 年利 12.67%)

DDは少し大きい(耐えられるレベル) 年利は10%ちょっとで物足りない

それ以前にシグナル少ない

2007/1/5~2011/2/4の1000日データ

f:id:sucar:20181124210809p:plain

信用倍率2倍
DD:j=437:4,949,243(44.43%) 資金=11,139,635 損益=-1,564,451 (年-457,888 年利 -4.11%)

結論

  • 2008年の暴落には対応できない
  • その後はDDも許容範囲でアベノミクス開始までは運用はできるが
  • シグナル少なく年利も低い
  • アベノミクス以降はgood

gr125255チェックで2007~2008レベルになったら運用停止して、別の戦略に譲った方がいいかも・・・・