TradingSystemの全体像 <株入門>


では、コードを見てみる。
./lib/trading_system.rb 

ああ、ちょっと見通しつけづらい。

とりあえず、準備から、
コンストラクタで複数全てのruleを種類別にセットする。
 ここでは、メソッドflatten,compactで配列を整えている。
 
取引対象のstockを全てのruleにセットする。
 ここで、セットされた全てのruleを順番に処理するeach_rulesメソッドを使う。

全てのruleのcalculate_indicatorを実行し、ruleの準備を完了する。
 同様にるeach_rulesメソッドを使う。
 
コード載せちゃう。

private
def each_rules
 [@entries, @exits, @stops, @filters].flatten.each do |rule|
  yield rule
 end
end

種類別にセットされてるruleをもいちど配列に並べて、順次処理。
each do でyieldを呼び出す、コールバック的なやり方は既に学習済。
この辺はRubyの洗練されてるところと思う。
Rubyに慣れてないと毎回ベタに書いてしまいそう。
  
 
準備の後は、処理の流れ。
日々の指定はindexで与える。
以下の処理をデータの日数分indexをずらしながら続ければ、
シミュレーション出来る。
 
処理の流れはこう、セットされたruleを順次処理する。
check_entry(index)
 indexの日に、フィルターをくぐり抜けて、シグナル発生してれば仕掛け。
仕掛けがあれば、tradeを生成して仕掛けを実行。
 
set_stop(position, index)
 indexの日のストップをpositionに設定。
 (このpositionはtradeのことで、こういう引数の不統一はよろしくない。)
 
check_exit(trade, index)
 indexの日に、手仕舞うシグナルが発生してれば手仕舞う。
  
 
外側から、このメソッドを順番に呼び出すことで、
一日分の処理が完了する。
 
どうやら、trade(ポジションのこと)はTradingSystemの外側で管理するようだ。
まあ、複数のruleを組み合わせた売買ロジックがTradingSystemということでしょう。
ネーミングには若干違和感感じるが、、

外側でtrade管理しておいて、
TradingSystemを回して、
外側で全てのtradeの結果を分析用のデータとして出力出来れば、
完了だろう。
シミュレーションの全体がようやく想像できた。

ま、先走らずに、処理の詳細を見てゆこう。
  
 
質問コーナー、お問い合わせは、sanpome.net@gmail.com まで。

  
 

社会・経済ニュース ブログランキングへ

にほんブログ村 海外生活ブログへ
にほんブログ村

カテゴリー: 株式投資, 株式投資入門はじめました2016.05 タグ: , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*