moex_iss 1.11.0 → 1.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/README.md +5 -3
 - data/lib/moex_iss/market/collection.rb +4 -4
 - data/lib/moex_iss/market/currency.rb +1 -21
 - data/lib/moex_iss/market/history/stock.rb +3 -17
 - data/lib/moex_iss/market/history/stocks.rb +3 -3
 - data/lib/moex_iss/market/security.rb +29 -0
 - data/lib/moex_iss/market/stock.rb +7 -23
 - data/lib/moex_iss/market/stocks.rb +0 -8
 - data/lib/moex_iss/version.rb +1 -1
 - metadata +2 -1
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: dc6e59c116501d2490614026723ffe37b22c554da6a7e01283e61875b2ddd2aa
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 2db4b513cb7cc9dcdd12ff144c5447b23d94ea4234dc6a856de899f2ae355ff4
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 71eb024e491423c345d14b08a25751cbc6a535a3766773aa8d3b70ff20a68085c8402a6b8bb9058f640d262dfc6a27cb6a4254a00a405cadf1bce5a82f8a9413
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 8a0b310f3682a646ee0402e19b990b7ce64c5688df504a35720214321c1ab3b126bfb629f2d4192285f4d4b9d3459d7b7136274a88b214255e29de4f97987557
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -22,7 +22,7 @@ gem "moex_iss" 
     | 
|
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
            Или установите его самостоятельно как:
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
                $ gem install  
     | 
| 
      
 25 
     | 
    
         
            +
                $ gem install moex_iss
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         
             
            ### Поддерживаемые Ruby версии
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
         @@ -42,8 +42,10 @@ client = MoexIss.client 
     | 
|
| 
       42 
42 
     | 
    
         
             
            ```ruby
         
     | 
| 
       43 
43 
     | 
    
         
             
            currencies = client.currencies # => MoexIss::Market::Currencies
         
     | 
| 
       44 
44 
     | 
    
         | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
      
 45 
     | 
    
         
            +
            currencies.map(&:short_name) # -> ["USDRUB_TOM", "EURRUB_TOM", "CNYRUB_TOM"]
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
            cny_rub = currencies.cny_rub # => MoexIss::Market::Currency
         
     | 
| 
      
 48 
     | 
    
         
            +
            cny_rub.price = 12.5762
         
     | 
| 
       47 
49 
     | 
    
         
             
            ...
         
     | 
| 
       48 
50 
     | 
    
         
             
            ```
         
     | 
| 
       49 
51 
     | 
    
         | 
| 
         @@ -10,7 +10,7 @@ module MoexIss 
     | 
|
| 
       10 
10 
     | 
    
         
             
                  def initialize(response, instance_class: Security)
         
     | 
| 
       11 
11 
     | 
    
         
             
                    @response = response
         
     | 
| 
       12 
12 
     | 
    
         
             
                    @instance_class = instance_class
         
     | 
| 
       13 
     | 
    
         
            -
                    @ 
     | 
| 
      
 13 
     | 
    
         
            +
                    @collection_map = {}
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
                    create_instances
         
     | 
| 
       16 
16 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -24,7 +24,7 @@ module MoexIss 
     | 
|
| 
       24 
24 
     | 
    
         
             
                  end
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
26 
     | 
    
         
             
                  def each
         
     | 
| 
       27 
     | 
    
         
            -
                    @ 
     | 
| 
      
 27 
     | 
    
         
            +
                    @collection_map.values.each { |stock| yield stock }
         
     | 
| 
       28 
28 
     | 
    
         
             
                  end
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
30 
     | 
    
         
             
                  private
         
     | 
| 
         @@ -34,9 +34,9 @@ module MoexIss 
     | 
|
| 
       34 
34 
     | 
    
         
             
                  end
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
                  def setup_method(method, data)
         
     | 
| 
       37 
     | 
    
         
            -
                    @ 
     | 
| 
      
 37 
     | 
    
         
            +
                    @collection_map[method] = @instance_class.new(data)
         
     | 
| 
       38 
38 
     | 
    
         | 
| 
       39 
     | 
    
         
            -
                    self.class.send(:define_method, method) { @ 
     | 
| 
      
 39 
     | 
    
         
            +
                    self.class.send(:define_method, method) { @collection_map[method] }
         
     | 
| 
       40 
40 
     | 
    
         
             
                  end
         
     | 
| 
       41 
41 
     | 
    
         
             
                end
         
     | 
| 
       42 
42 
     | 
    
         
             
              end
         
     | 
| 
         @@ -2,33 +2,13 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module MoexIss
         
     | 
| 
       4 
4 
     | 
    
         
             
              module Market
         
     | 
| 
       5 
     | 
    
         
            -
                class Currency
         
     | 
| 
      
 5 
     | 
    
         
            +
                class Currency < Security
         
     | 
| 
       6 
6 
     | 
    
         
             
                  METHODS = {
         
     | 
| 
       7 
7 
     | 
    
         
             
                    "tradedate" => :trade_date, "tradetime" => :trade_time,
         
     | 
| 
       8 
8 
     | 
    
         
             
                    "secid" => :secid, "shortname" => :short_name,
         
     | 
| 
       9 
9 
     | 
    
         
             
                    "price" => :price, "lasttoprevprice" => :last_top_rev_price,
         
     | 
| 
       10 
10 
     | 
    
         
             
                    "nominal" => :nominal, "decimals" => :decimals
         
     | 
| 
       11 
11 
     | 
    
         
             
                  }.freeze
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
                  attr_reader(:response, *METHODS.values)
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                  def initialize(response)
         
     | 
| 
       16 
     | 
    
         
            -
                    @response = response
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                    setup_instance_varibales(@response)
         
     | 
| 
       19 
     | 
    
         
            -
                  end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                  private
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                  def setup_instance_varibales(data)
         
     | 
| 
       24 
     | 
    
         
            -
                    return if data.nil?
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                    data.each do |key, value|
         
     | 
| 
       27 
     | 
    
         
            -
                      next unless METHODS.has_key?(key)
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                      instance_variable_set("@#{METHODS[key]}", value)
         
     | 
| 
       30 
     | 
    
         
            -
                    end
         
     | 
| 
       31 
     | 
    
         
            -
                  end
         
     | 
| 
       32 
12 
     | 
    
         
             
                end
         
     | 
| 
       33 
13 
     | 
    
         
             
              end
         
     | 
| 
       34 
14 
     | 
    
         
             
            end
         
     | 
| 
         @@ -3,31 +3,17 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            module MoexIss
         
     | 
| 
       4 
4 
     | 
    
         
             
              module Market
         
     | 
| 
       5 
5 
     | 
    
         
             
                module History
         
     | 
| 
       6 
     | 
    
         
            -
                  class Stock
         
     | 
| 
      
 6 
     | 
    
         
            +
                  class Stock < Security
         
     | 
| 
       7 
7 
     | 
    
         
             
                    METHODS = {
         
     | 
| 
       8 
8 
     | 
    
         
             
                      "TRADEDATE" => :trade_date, "SHORTNAME" => :short_name, "SECID" => :secid, "VALUE" => :value,
         
     | 
| 
       9 
9 
     | 
    
         
             
                      "OPEN" => :open, "LOW" => :low, "HIGH" => :high, "LEGALCLOSEPRICE" => :legal_close_price,
         
     | 
| 
       10 
10 
     | 
    
         
             
                      "VOLUME" => :volume
         
     | 
| 
       11 
11 
     | 
    
         
             
                    }.freeze
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
                    attr_reader(:response, *METHODS.values)
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
13 
     | 
    
         
             
                    def initialize(response)
         
     | 
| 
       16 
     | 
    
         
            -
                       
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                      setup_instance_varibales(@response["history"])
         
     | 
| 
       19 
     | 
    
         
            -
                    end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                    private
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                    def setup_instance_varibales(data)
         
     | 
| 
       24 
     | 
    
         
            -
                      return if data.nil?
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                      data.each do |key, value|
         
     | 
| 
       27 
     | 
    
         
            -
                        next unless METHODS.has_key?(key)
         
     | 
| 
      
 14 
     | 
    
         
            +
                      setup_methods(response["history"])
         
     | 
| 
       28 
15 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                      end
         
     | 
| 
      
 16 
     | 
    
         
            +
                      super
         
     | 
| 
       31 
17 
     | 
    
         
             
                    end
         
     | 
| 
       32 
18 
     | 
    
         
             
                  end
         
     | 
| 
       33 
19 
     | 
    
         
             
                end
         
     | 
| 
         @@ -3,19 +3,19 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            module MoexIss
         
     | 
| 
       4 
4 
     | 
    
         
             
              module Market
         
     | 
| 
       5 
5 
     | 
    
         
             
                module History
         
     | 
| 
       6 
     | 
    
         
            -
                  class Stocks <  
     | 
| 
      
 6 
     | 
    
         
            +
                  class Stocks < Collection
         
     | 
| 
       7 
7 
     | 
    
         
             
                    def initialize(response, instance_class: MoexIss::Market::History::Stock)
         
     | 
| 
       8 
8 
     | 
    
         
             
                      super
         
     | 
| 
       9 
9 
     | 
    
         
             
                    end
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
                    def create_instances
         
     | 
| 
       12 
12 
     | 
    
         
             
                      @response["history"].each do |data|
         
     | 
| 
       13 
     | 
    
         
            -
                        @ 
     | 
| 
      
 13 
     | 
    
         
            +
                        @collection_map[data["TRADEDATE"]] = @instance_class.new({"history" => data})
         
     | 
| 
       14 
14 
     | 
    
         
             
                      end
         
     | 
| 
       15 
15 
     | 
    
         
             
                    end
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
                    def [](key)
         
     | 
| 
       18 
     | 
    
         
            -
                      @ 
     | 
| 
      
 18 
     | 
    
         
            +
                      @collection_map[key]
         
     | 
| 
       19 
19 
     | 
    
         
             
                    end
         
     | 
| 
       20 
20 
     | 
    
         
             
                  end
         
     | 
| 
       21 
21 
     | 
    
         
             
                end
         
     | 
| 
         @@ -0,0 +1,29 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module MoexIss
         
     | 
| 
      
 4 
     | 
    
         
            +
              module Market
         
     | 
| 
      
 5 
     | 
    
         
            +
                class Security
         
     | 
| 
      
 6 
     | 
    
         
            +
                  attr_reader :response
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  def initialize(response)
         
     | 
| 
      
 9 
     | 
    
         
            +
                    @response = response
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                    setup_methods(response)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                  private
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                  def setup_methods(data)
         
     | 
| 
      
 17 
     | 
    
         
            +
                    return if data.nil?
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                    data.each do |key, value|
         
     | 
| 
      
 20 
     | 
    
         
            +
                      next unless self.class::METHODS.has_key?(key)
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                      define_singleton_method self.class::METHODS[key] do
         
     | 
| 
      
 23 
     | 
    
         
            +
                        value
         
     | 
| 
      
 24 
     | 
    
         
            +
                      end
         
     | 
| 
      
 25 
     | 
    
         
            +
                    end
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
              end
         
     | 
| 
      
 29 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -2,40 +2,24 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module MoexIss
         
     | 
| 
       4 
4 
     | 
    
         
             
              module Market
         
     | 
| 
       5 
     | 
    
         
            -
                class Stock
         
     | 
| 
      
 5 
     | 
    
         
            +
                class Stock < Security
         
     | 
| 
       6 
6 
     | 
    
         
             
                  METHODS = {
         
     | 
| 
       7 
7 
     | 
    
         
             
                    "BID" => :bid, "MARKETPRICETODAY" => :market_price_today,
         
     | 
| 
       8 
8 
     | 
    
         
             
                    "MARKETPRICE" => :market_price, "SECID" => :secid,
         
     | 
| 
       9 
9 
     | 
    
         
             
                    "SHORTNAME" => :short_name, "LATNAME" => :lat_name,
         
     | 
| 
       10 
10 
     | 
    
         
             
                    "BOARDID" => :board_id, "BOARDNAME" => :board_name,
         
     | 
| 
       11 
11 
     | 
    
         
             
                    "ISIN" => :isin, "PREVPRICE" => :prev_price,
         
     | 
| 
       12 
     | 
    
         
            -
                    "PREVDATE" => :prev_date
         
     | 
| 
      
 12 
     | 
    
         
            +
                    "PREVDATE" => :prev_date, "CLOSEPRICE" => :close_price,
         
     | 
| 
      
 13 
     | 
    
         
            +
                    "OPEN" => :open, "LOW" => :low, "HIGH" => :high,
         
     | 
| 
      
 14 
     | 
    
         
            +
                    "LAST" => :last, "VALUE" => :value, "SYSTIME" => :systime
         
     | 
| 
       13 
15 
     | 
    
         
             
                  }.freeze
         
     | 
| 
       14 
16 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
                  MARKET_DATA = %w[CLOSEPRICE OPEN LOW HIGH LAST VALUE SYSTIME]
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                  attr_reader(:response, :market_data, *METHODS.values)
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
17 
     | 
    
         
             
                  def initialize(response)
         
     | 
| 
       20 
18 
     | 
    
         
             
                    @response = response.is_a?(Array) ? response.first : response
         
     | 
| 
       21 
19 
     | 
    
         | 
| 
       22 
     | 
    
         
            -
                     
     | 
| 
       23 
     | 
    
         
            -
                     
     | 
| 
       24 
     | 
    
         
            -
                     
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                    @market_data = @response["marketdata"]&.slice(*MARKET_DATA)
         
     | 
| 
       27 
     | 
    
         
            -
                  end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                  private
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                  def setup_instance_varibales(data)
         
     | 
| 
       32 
     | 
    
         
            -
                    return if data.nil?
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
                    data.each do |key, value|
         
     | 
| 
       35 
     | 
    
         
            -
                      next unless METHODS.has_key?(key)
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
                      instance_variable_set("@#{METHODS[key]}", value)
         
     | 
| 
       38 
     | 
    
         
            -
                    end
         
     | 
| 
      
 20 
     | 
    
         
            +
                    setup_methods(@response["securities"])
         
     | 
| 
      
 21 
     | 
    
         
            +
                    setup_methods(@response["marketdata"])
         
     | 
| 
      
 22 
     | 
    
         
            +
                    setup_methods(@response["history"])
         
     | 
| 
       39 
23 
     | 
    
         
             
                  end
         
     | 
| 
       40 
24 
     | 
    
         
             
                end
         
     | 
| 
       41 
25 
     | 
    
         
             
              end
         
     | 
    
        data/lib/moex_iss/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: moex_iss
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1.11. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.11.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Vyacheslav Konovalov
         
     | 
| 
         @@ -101,6 +101,7 @@ files: 
     | 
|
| 
       101 
101 
     | 
    
         
             
            - lib/moex_iss/market/currency.rb
         
     | 
| 
       102 
102 
     | 
    
         
             
            - lib/moex_iss/market/history/stock.rb
         
     | 
| 
       103 
103 
     | 
    
         
             
            - lib/moex_iss/market/history/stocks.rb
         
     | 
| 
      
 104 
     | 
    
         
            +
            - lib/moex_iss/market/security.rb
         
     | 
| 
       104 
105 
     | 
    
         
             
            - lib/moex_iss/market/stock.rb
         
     | 
| 
       105 
106 
     | 
    
         
             
            - lib/moex_iss/market/stocks.rb
         
     | 
| 
       106 
107 
     | 
    
         
             
            - lib/moex_iss/request.rb
         
     |