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

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

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

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

おことわり・・・

今後、このブログで自作DSLによるシステムトレード、略してシストレ日本株です)のシステムについていろいろ書いていこうと思ってます

ただ、ここに書かれていることが、本当に正しいのか? 自信もって勧められるのか? は不明です

もっとよいシステムはあるでしょうし、自分も(スキル不足もあって)「ああすればよかった」とか「なんか無駄なことしてるよね」とか思うことは多々あります

ですが、一応、少しずつ改良しながら、5年以上育ててきたシステムで、実際に運用しているシステムでもあるので、それについてある程度詳しく書いてみるのは、誰かの役に立つかもしれません

なんか面白そうだな、自分も自作でシストレやってみようかな?

と思う人がいればうれしいです

勿論、実践は自己責任でお願いします

このブログに書かれていることはあくまで戯言にすぎません、と断っておきます

 

株のシストレツール自作にはpythonが最適・・・とはいうものの

株のシストレツール自作にはpythonが最適・・・とはいうものの

という記事を本家ブログに書きました

supercar.hatenablog.com

自作システムの基幹エンジン部分はC言語で書いてます

やはりコンパイル言語なので早いし、あとプリプロセッサメタプログラミングには便利に活用できます

今後、このブログで私の自作シストレツールはこんな感じになってます

という記事を書いていく予定です

ですが、結構グダグダかも・・・・

supercar.hatenablog.com

supercar.hatenablog.com

DSLという概念が存在することを知ったのが1年前で、このころはただのマクロ言語(m4を使用)だったのですが・・・

supercar.hatenablog.com

sedをうまく使って、マクロを卒業したような形になってます

まあ、もっとエレガントに設計できたようには思いますが・・・

現在これで動いているし、実際にトレードしてある程度利益は出せているのでこのままの形で行くつもりです

何かの参考になれば幸いです

 

所謂開発環境

シストレツールである自作システムは

を使ってます

 

所謂開発環境としては

  • Windows10に
  • MSYS2を入れて
  • MSYS2上でpacmanにて
  • MinGW-w64 と 
  • M4 を入れて
  • Tcl/Tkはソースからビルドし
  • R言語gnuplotはwin用のものをインストール

してます

エディタはMeryです

 

 

 

 

例えば

Esgrsgnl と名付けた自作DSL

    
	MAIN	000          ; main src に000を指定
	Dx0 := fMax_(tak:10) ; double変数x0にある計算して代入
	Bx0 := Dx0<owa[0]    ; その計算結果を大小判断してブール代数へ代入
	?	Bx0          ; そのブール代数は真か?
	pM[3] : -25 -11      ; 3日前のパラメタMが-25と-11の間?
	Zday	3            ; 3日保持して
	RKK	20           ; 20%で利確
	SNG	3            ; 3%で損切
	

こんなソースを書いて

(追記:コメントを追記しました)

f:id:sucar:20191121203637p:plain

コンパイルして実行すると

 

f:id:sucar:20191123072711p:plain

こういうバックテストグラフが得られます

 

はじめに

自作シストレツールにて5年以上日本株シストレを実施しています

http://cdn-ak.f.st-hatena.com/images/fotolife/s/sucar/20151115/20151115183011.png

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

興味のある方の役に立てば幸いです