Class: JIJI::Output
Overview
グラフデータの出力先を作成するためのクラス
エージェントでグラフを描画するには、JIJI::Output#getを呼び出してJIJI::GraphOutを取得し、グラフデータを出力します。
# output から出力先を作成。 }) …(略)
# グラフのデータを出力。 # 出力先作成時にデータ数は2としているので、2つのデータを指定可能。 @out.put( 33, 39 ) @out.put( 45, 43 ) @out.put( 60, 69 )
Constant Summary collapse
- PROPERTIES_FILE_NAME =
プロパティファイル名
"properties.yaml"
- META_FILE_NAME =
メタ情報ファイル名
"meta.yaml"
Instance Attribute Summary collapse
-
#agent_id ⇒ Object
readonly
エージェントID.
-
#scales ⇒ Object
スケール.
-
#time ⇒ Object
現在時刻.
Instance Method Summary collapse
-
#agent_name ⇒ Object
エージェント名を取得する.
-
#agent_name=(name) ⇒ Object
エージェント名を設定する.
-
#each(&block) ⇒ Object
出力先を列挙する.
-
#exist?(name) ⇒ Boolean
出力先をが存在するか評価する.
-
#get(name, type = :graph, options = {}) ⇒ Object
グラフの出力先オブジェクトを取得します。.
-
#initialize(agent_id, dir, scales = []) ⇒ Output
constructor
:nodoc:.
Constructor Details
#initialize(agent_id, dir, scales = []) ⇒ Output
:nodoc:
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/jiji/output.rb', line 38 def initialize( agent_id, dir, scales=[] ) #:nodoc: @dir = "#{dir}/#{agent_id}" # 「ベースディレクトリ/エージェントID/出力名」に保存する。 FileUtils.mkdir_p @dir @outs = {} @scales = scales @agent_id = agent_id # 既存データの読み込み DirLock.new( @dir ).writelock { Dir.glob( "#{@dir}/*" ) {|d| = "#{d}/#{META_FILE_NAME}" next unless File.directory? d next unless File.exist? props = YAML.load_file @outs[props[:name]] = create_output( d, props[:name], props[:type].to_sym, props ) } } # 名前の読み込み file = properties_file if File.exist? file properties = YAML.load_file(file) @agent_name = properties[:agent_name] end end |
Instance Attribute Details
#agent_id ⇒ Object (readonly)
エージェントID
129 130 131 |
# File 'lib/jiji/output.rb', line 129 def agent_id @agent_id end |
#scales ⇒ Object
スケール
127 128 129 |
# File 'lib/jiji/output.rb', line 127 def scales @scales end |
#time ⇒ Object
現在時刻
125 126 127 |
# File 'lib/jiji/output.rb', line 125 def time @time end |
Instance Method Details
#agent_name ⇒ Object
エージェント名を取得する
75 76 77 |
# File 'lib/jiji/output.rb', line 75 def agent_name #:nodoc: @agent_name end |
#agent_name=(name) ⇒ Object
エージェント名を設定する
67 68 69 70 71 72 |
# File 'lib/jiji/output.rb', line 67 def agent_name=(name) #:nodoc: @agent_name = name FileLock.new( properties_file ).writelock { |f| f.write( YAML.dump({:agent_name=>name}) ) } end |
#each(&block) ⇒ Object
出力先を列挙する
107 108 109 |
# File 'lib/jiji/output.rb', line 107 def each( &block ) #:nodoc: @outs.each( &block ) end |
#exist?(name) ⇒ Boolean
出力先をが存在するか評価する
112 113 114 |
# File 'lib/jiji/output.rb', line 112 def exist?( name ) #:nodoc: @outs.key? name end |
#get(name, type = :graph, options = {}) ⇒ Object
グラフの出力先オブジェクトを取得します。
- name
-
名前(UIでの表示名)
- type
-
種別。:graph を指定してください。
- option
-
補足情報。以下が指定可能です
- 「:column_count」 .. グラフのカラム数を整数値で指定します。(<b>必須</b>)
- 「:graph_type」 .. グラフの種類を指定します。以下の値が指定可能です。
- :rate .. レート情報に重ねて表示(移動平均線やボリンジャーバンド向け)。グラフは、ローソク足描画領域に描画される。
- :zero_base .. 0を中心線とした線グラフ(RCIやMACD向け)。グラフは、グラフ描画領域に描画される。
- :line .. 線グラフとして描画する。(デフォルト)。グラフは、グラフ描画領域に描画される。
- 「:colors」 .. グラフの色を「#FFFFFF」形式の文字列の配列で指定します。指定を省略した場合「0x557777」で描画されます。
- return
-
出力先
91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/jiji/output.rb', line 91 def get( name, type=:graph, ={} ) raise "illegal Name. name=#{name}" if name =~ /[\x00-\x1F\x7F\\\/\r\n\t]/ return @outs[name] if @outs.key? name DirLock.new( @dir ).writelock { sub_dir = "#{@dir}/#{JIJI::Util.encode(name).gsub(/\//, "_")}" FileUtils.mkdir_p sub_dir [:type] = type.to_s [:name] = name @outs[name] = create_output( sub_dir, name, type, ) @outs[name].time = time @outs[name].save } @outs[name] end |