もう一息ですね。
集計結果を体裁整えて、ファイル出力出来れば、システムとして一通りカバーでしょう。
Recorderクラスの仕事は以下だそうです。
①1銘柄の取引を記録する
②銘柄ごとの統計の一覧表を作る
③すべての銘柄のすべてのトレードを統合した統計を記録する
④設定ファイルを保存する
銘柄ごとtradeごとの記録、
ロジック(TradeingSystem)単位集計した銘柄ごとの記録、
ロジック(TradeingSystem)単位で全銘柄集計した記録、
あと、ロジック(TradeingSystem)の設定詳細の記録
上3つはCSVファイル(カンマ区切り)で保存するとのこと。
今回使う機能を先に触れます。
記録の内容には触れず、まずはCSVファイルの出力について、
RubyでCSVファイルの読み書き
http://uxmilk.jp/19202
↑これで説明されてるとおりですが、
Rubyにはcsvファイルの扱いもcsvという標準ライブラリあり、
これを使うと、配列とファイルの一行の間を互換出来る。
それから、
OS上でのファイル操作は、fileunitsという標準ライブラリで、
今回はファイルコピーとディレクトリ作成の機能使ってます。
fileunitsライブラリでファイル操作の基本機能は網羅してるようです。
https://docs.ruby-lang.org/ja/latest/class/FileUtils.html
あと、
y/nを対話的に処理してます。
引用しちゃいますね。
def yes?
while answer = $stdin.gets
if answer =~ /^[yY]/
yield
break
elsif answer =~ /^[nN]/
puts "終了します"
exit
else
puts "y (はい)か n (いいえ)でお答えください"
end
end
end
stdinが標準入力で、そこから入力値を取ります。
whileなのは、入力があるまで待つということ。
yesのときyieldってことは、
呼び出した側で指定した処理を実行。
noのときexitとは、プログラムの終了。
それ以外は再入力を促し続ける。
ここまで踏まえて、
4つのファイル出力の中身を見てきましょう。
質問コーナー、お問い合わせは、sanpome.net@gmail.fcom まで。