自作DSL(Esgrsdnl)で株シストレ

株シストレ用の自作DSLの概要

自作シストレツールにて5年以上日本株のシストレを実施していましたが今はやってません

Esgrsdnl と名付けた自作DSLで戦略(ルール)を記述し、コンパイルすることでバックテスト及びシグナル出しが実行できるシステムが動いているので、その概要をこちらに纏めていくつもりでしたが頓挫してます

まずはDSLなしでゴリゴリ構築してみる

一つ前の記事

esgrsdnl.hatenablog.com

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

外部DSL部分を上部として抜き出しましたが・・・

ではその外部DSLなしで下部だけ抜き出すと・・・

ソース

digraph graphname {
	graph [rankdir = TB];

     subgraph cluster2 {
         label="Run";
         h [label="exe file" shape="Msquare"]
         j [label="結果 data"]
         h -> j ;
     }
     subgraph cluster3 {
         label="Run";
         e1 [label="awk src2" shape="box3d"]
         j0 [label="car_bet(awk)" shape="rectangle"]
         l [label="graph data"]
         l0 [label="car_bet(gnuplot)" shape="rectangle"]
         e1 -> j0 -> l ->l0
         {rank = same; e1;j0;}
     }

     f0 [label="C src"]
     f1 [label="template C src" shape="box3d"]
     g [label="car_mt(gcc)" shape="rectangle"]
     i [label="bet file"]
     g0 [label="株 data" shape="folder"]
     i [label="bet file"]
     l1 [label="baktest graph" shape="octagon"]
    
     f1 -> g;
	 f0 -> g;
     g -> h;
     j -> j0;
     i-> j0;
     g0 -> h;
     l0 -> l1;
     
                             
 }

f:id:sucar:20191229094906p:plain

下部抜き出し

 こうなるわけで・・・

普通にC言語で開発してコンパイルして実行するという・・・

しかし、シストレ戦略(ルール)がいくつもある中、システムの方もバグを直したり、機能を追加したり・・・

ちょっとやはりシストレ戦略(ルール)記述は別にやって、それをシステムに取り込むようにしないと運用管理が大変! となります

再び

logmi.jp

こちらのサイトから引用しますが・・・

素直に書くと記述が多い。でも、関数にまとめようと思ってもバリエーションがあってまとめられない。そういったときにDSLを使うのが一番ちょうどいい解決策なんじゃないかと思っています。

とあるように・・・

C言語で自作ライブラリのような感じで関数に纏めて・・・

ってこと考えたわけですが、シストレ戦略(ルール)の記述はいろいろ絡むので纏められないのです

そこでDSLの登場

いや、実際はDSLの概念は作ってから知ったので・・

あ、自分がやってるのって外部DSLだな!

と気づいた次第なんです

まあ、とにかく、シストレツール自作の一例として、どうやっているのか? の記事をこのブログに書いて行くので、何かの参考にでもなれば・・・

シストレが儲かるのかどうか? はその人次第だと思います

私の場合は本家ブログに成績ありますので・・・

読んでいただきたい本家ブログ記事リンク張ります

supercar.hatenablog.com