SU/CAR-ST-APplication-cells

自己流株シストレ真面目で時におバカな独り言ブログ

ぴけやねんの「俺ひまやねん」
ぴけやねん

ス・パ・カー・エス・ティー説明してね
楽しいシストレ、ス・パ・カー・エス・ティー
Sort Uniq (perl) C Awk R Selenium Tcl/Tk
Stock Trading APplication cells
ローマは一日にしてならず R,C

53歳限界プログラマの憂鬱
安倍野ミックス

にほんブログ村 株ブログ 株 自動売買へ

来訪ありがとうございます
←クリックいただくと励みになります→
2017/5/2 サラリーマン投資家へ登録しました

にほんブログ村 株ブログ サラリーマン投資家へ

 自分用メモ
05C_9y0T1 24 DblV 9-17要調整 今は9 05C_OR_0 60 成績良くない長期下落相場では停止 今はOK 05C_OR_0Pi0 60 常時運用可能(シグナル少ない) mp16_3_0 60 常時運用可能だが1年以上ヨコヨコはあり得る mp16_3_0T1 24 常時運用可能だが大きな暴落はある 要再検討

バックテストの速度改善

f:id:sucar:20151115183011p:plain

2日ぶりの記事です

ちょっとしたアイディアがあって、ここ数日c言語ソースと格闘して実装してました

まだ、完全じゃないけど一応動作は確認できたところです

自分のシステムだと1000日分のバックテストに3分20秒くらいかかります

c言語なので、計算自体は爆速のはずで、株価データも配列に入っているので、データへのアクセスも爆速のはずです

実は3分20秒のうち、3分近くはHDD上の株価csvファイルからデータを読んで、配列に格納する処理にかかってます

もし、システムが、GUIのイベントドリブン方式の、終了ボタンを押すまでメモリ上に存在する方式なら、最初にHDDから株価データを読み込んでしまえば、以後はシステム内でストラテジーをとっかえひっかえしてバックテストを繰り返しても、3分近くのHDD上の株価csvファイルからデータを読む処理は発生しないので、バックテストがサクサクすすむはずですが・・・・

残念ながら、我が稚拙なスキルでは、GUIはTcl/Tkによる操作パネルのようなもので、そこから、script 経由でc言語で書かれた自作コマンドを起動するだけのナンチャッテGUIなので・・・

  • 自作コマンド起動
  • HDDから株価データを読み込む(3分かかる)
  • 計算してデータファイル作成
  • 自作コマンド終了
  • グラフ描画script起動
  • グラフ描画して終了

をバックテストのたびに繰り返すので、

  • HDDから株価データを読み込む(3分かかる)

がどうしてもバックテスト毎に、毎回発生してしまいます

3分程度待てないことはないのですが・・・・

やはりどうしてもイライラするのです

そこで、ちょっとしたアイディアがひらめきました

HDDから株価データを読み込む(3分かかる)をなくせばいいと・・・w

でも、データ読まないとその後の計算意味ないじゃん

と思われるかもしれない

でも、閃いたアイディアだと、データを読み込まなくていいんですw

なんでかというと・・・・

最初から自作コマンドの中にデータを組み込んでおけばいいのですw

要は、c言語ソースの中にデータも入れてしまえばOKという話

データの読み込みは無くなって、ちょっと大きめの実行ファイルが起動するだけの話なので

  • 3分20秒掛かっていた処理が
  • 18秒にまで短縮!

という快挙を達成しました!

ただ・・・・

ちょっと落ちがあって・・・・

ソースにバカでかいデータが入っているので

  • コンパイル時間が数秒から
  • 2分以上かかるようになってしまったorz

現在はストラテジーのパラメタを弄るたびに再コンパイルする必要があるので、結局バックテストを繰り返すのに時間がかかる・・・・

でも、いずれ、ストラテジーパラメタの一部は再コンパイルなして書き換えられるようにするアイディアもあるので、それが完成すれば・・・・(期待が膨らむ)

でもまあ、それには手間とスキルが必要なので、とりあえず

  • 日ごとファイルでcsv形式を読み込んで
  • 始値終値、高値、安値、代金、コード、別にバイナリで書きだす処理をして
  • 2回目以後はそのバイナリファイルを一気に読み込む

という方式で、バックテスト時間25秒くらいのシステムにはすることができました

これだと、コンパイルは数秒で終わるので、現状のままでも大丈夫です

というわけで、新しいストは開発できてませんが、システムの開発はけっこう進んでいます

システムがGUIの立派なシステムではなく、ただのコマンドだと非常に面白いある可能性があって

  • 複数のストラテジーデータを用意して
  • scriptでforループでデータを切り替えながらコマンド起動して
  • 期待値が一定以上あるストラテジーサマリーのみを残しておく

というスクリプトを作成し、十数時間かかってもいいので走らせるとか・・・

まああんまりやると過剰なカーブフィットになりそうですがw

大変ですけど、自作だとどんなアイディアでも、自分のスキルとやる気さえあれば何でもできます

それでうまくいくかは別ですがw

 

f:id:sucar:20150414192227p:plain

CとRでス・パ・カー・エス・ティー
高級アセンブラC言語と統計分析R言語を
駆使して生まれたその名は、ス・パ・カー・エス・ティー!

f:id:sucar:20150414193802p:plain