ついXMLで設定ファイル記述すること考えちゃいます、古い人間の固定観念ですね。
実際、RubyはXML解析もサポートされてますから、
そういう定石どおりのことしても全然大丈夫です。
ですが、
新しい約束事覚えるの面倒だし、面倒を上回るほどの恩恵はありません。
Rubyだけで全部完結させたい。
コレ自体は大賛成です。別に設定ファイル然としてなくても構わない。
ただそのために取った手段は疑問です。
疑問なことについては、明日書きます。
まずは賛成の理由。
それから、どんな手段を代わりに採用するか述べます。
Rubyだけでいい。だってコンパイルしないもん。
他の言語の場合、設定ファイルを外出しにして、部品の一部を取り替える。
なんでそんなことやるかというと、ただ取り替えると、
コンパイルという作業がやり直しになるからです。
商業的にはテストも全部やり直しという話ですが、
趣味であったとしても、再コンパイルは面倒くさい。
そのため動的にインスタンス生成させる工夫してます。
でも、もともとコンパイルしないんだもんRuby、そんなこと考えなくていい。
それと、そんなにRuby見づらいわけでもないですし、
ちょっとリファクタリングすれば、以下の程度には起動ファイルできます。
simulation = Simulation.new(
stock_list: “tosho_list.txt”,
record_dir: ”result/estrangement/all_simulation”,
entries: EstrangementEntry.new(span: 20, rate: 5),
exits: [StopOutExit.new,
EstrangementExit.new(span: 20, rate: 3)],
stops: AverageTrueRangeStop.new(span: 20),
filters: MovingAverageDirectionFilter.new(span: 30)
)
simulation.simulate_all_stocks
このくらいにはすぐ、書き換えられます。
Simulation内部で処理するだけですから。
テストのところと見比べてみてください。
設定してるものは変わってません。
リストで最初に対象銘柄指定するんだから、個別と全部の区別もいらない。
集計出すか出さないかと、かどうでもいい選択肢いらないし。出しゃいい。
Recorderの設定は出力先だけで充分です。
あと指定で必要なのは、ロジックの種類とそのパラメータ。
ちょっとだけ、newとか邪魔な文言が入りますが、
充分見やすいじゃないですか、
それコピペして、必要なとこだけ書き換えればいいです。
この起動ファイルを設定ファイルとして出力ディレクトに保存すればいい。
それで充分です。
目的から逆算して、選択する手段はこれでよかったはずです。
鶏を割くに焉んぞ牛刀を用いん。の話は明日。
質問コーナー、お問い合わせは、sanpome.net@gmail.com まで。