TradingSystemの使い方 <株入門>


 
ここにきて、使い方が判明した、仕様上の留意点もあり、疑問点もあり。
目出度くもあり、不満もあり、
ま、いずれにせよ、
./check/trading_system_check.rbを引用した方が話が早いな。

def simulate(code)
 stock = @data.generate_stock(code)
 @trading_system.set_stock(stock)
 @trading_system.calculate_indicators
 trade = nil
 trades = []
 stock.prices.size.times do |i|
  if trade
   @trading_system.set_stop(trade, i)
   trade.length += 1
  end
  unless trade
   trade = @trading_system.check_entry(i)
   trade.volume = stock.unit if trade
  end
  if trade
   @trading_system.check_exit(trade, i)
   if trade.closed?
    trades << trade
    trade = nil
   end
  end
 end
 trades
end
 
trades = simulate(8604)

 
テスト用のコードに定義された、simulateという関数を見て、
始めて、TradingSystemの使い方の全容が明らかになった。
 
以下の順で語ってみる。
1.仕様上の注意 
2.処理手順
3.素朴な疑問 
 
 
1.仕様上の注意 
 同時にポジションを複数持たない。
 ということが、このコードから分かる。
  
 同一銘柄を同一期間、
 複数の別のロジック構成のTradingSytemを走らせることは可能だから、
 Ruleを詰め込み過ぎなければ、これはこれで問題ない。
 しかし、売りと買いは分ける余地を残すべきでは。(後述)
 
 
2.処理手順
 指定したコードのStockオブジェクトを生成。
 index分、以下の処理を繰り返す。
  ポジション持ってれば、日々のストップ設定を行い。保有期間を増やす。
  ポジション無ければ、仕掛けシグナルあれば仕掛ける。
  既にポジションがあるか今日仕掛けたなら、手仕舞のチェックし終了済ポジションを格納。
   
 これで同時期に複数ポジション持つことなく、
 ロジックのシミュレーションが出来る。
 
 
3.素朴な疑問。
 3つ気になる。
 
 3.1.買い優先でどちらか一方で良いのか 
  Indicator実装するときに、両方出来るやつは、
  買いのみ、売りのみ、両方(買い優先)とか設定できるべき。
  買いと売り、別々に検証するほうが実戦に近いと思う。
 
 3.2.TradingSystemが外部に提供するメソッドはsimulate一つで充分では。
  以下の5種類の内部メソッド用意しておいて、
   ストップ設定、
   フィルターチェック、
   仕掛けのシグナル、
   手仕舞いのフィルターチェック、
   手仕舞いのシグナル、
  
  テストで書いたsimulateの処理の流れを、
  適時5つの内部メソッド呼び出して、実現すべきじゃないかな。
  simulate(stock)ってメソッドで充分だよ、外から呼び出すのは。
  コード渡すより、stock渡した方が良さそうだけど。
  
 3.3.TradingSystemというより、TradeLogicだね
  Systemを名乗るなら、複数のロジックを管理しつつ、全部のポジションも管理しときたい。
  これはトレードの一つのロジックだね。
  ネーミングとしては若干疑問かなぁ。
  
  
とまあ、
IndicatorからTradingSystemまでは、
プログラムの設計として、気に入らないとこは幾つかあって、
文句ばかり書いてしまった。
 
とはいえ、ここまでゼロから組み上げて、
シミュレーション出来るまでにしたのは偉大なことだと思うよ。
ただ、自分で使うなら、気になるとこは、改造するかな。
リファクタリングっていうやつですね。
 
いずれにせよ、TradingSystemが目出度く機能した。
先を急ごう。 
 
 
質問コーナー、お問い合わせは、sanpome.net@gmail.com まで。

  
 

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

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

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

コメントを残す

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


*