読者です 読者をやめる 読者になる 読者になる

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

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

本家はこちら↓
f:id:sucar:20151115183011p:plain

SU/CAR-ST-APplication-cellsの安倍野ミックスと申します
来訪ありがとうございます
シストレツールを自作してます

f:id:sucar:20150414193802p:plain

にほんブログ村 IT技術ブログ プログラム・プログラマーへ
にほんブログ村 IT技術ブログ C/C++へ
にほんブログ村 株ブログ 株日記(アフィリなし)へ
←ランキングに
1票お願いします

メタプログラミング的な、、、、3

メタプログラミング的な、、、、の第3弾ですw

何か安易な方向に暴走してるような気もしますが、、、

過去、2つのメタプログラミング的手法は、プログラムでC言語R言語ソースの一部を吐かせて、それを強引にinclude(C言語) やsource(R言語)で取り込んで活用するという話でしたが、今度はshell script をプログラムに吐かせて活用してるという話w

自作システムトレードの正体はいくつかの shell script なんですが、、、、

f:id:sucar:20150816081038p:plain

運用すべきストラテジー(自動売買ルール)の名前とパラメタがcsv形式で保存されていて、それぞれをどう実行させるか? って問題

これまでは、手作業でshell script を弄ってたんですが、、、

最初に考えたのは for 文の利用

でも、csvファイルからストラテジーの名前を取り出して for 文にぶち込む方法が思いつかない

それにパラメタもあるし、、、

で閃いたメタプログラム的手法は、、、、

  • csvファイルを読んでshell script を吐くプログラムを作る
  • shell スクリプト内でそのプログラムを起動しリダイレクトする
  • shell スクリプト内でリダイレクトしたshell スクリプトを実行

て方法でうまく実現できましたw

csvファイルを読んでshell script を吐くプログラムを作る」って部分が大変そうですが、awkを使うと楽ちんです

こんな感じ

#!/bin/awk
BEGIN { FS="," }
$1 !~ /^#/{
      printf("echo ./bin/su7_%s\n",$1)
      printf("./bin/su7_%s\n",$1)
      printf("./bin/output%s su7_%s\n",$2,$1)
}
END {}

改めてawkって便利って思いなおしています

追記) #で始まる行はコメントになるので、$1 !~ /^#/ は多分不要だと思います