Class: TechnicalAnalysis::Vwap
- Defined in:
- lib/technical_analysis/indicators/vwap.rb
Overview
Volume Weighted Average Price
Class Method Summary collapse
-
.calculate(data) ⇒ Array<VwapValue>
Calculates the volume weighted average price (VWAP) for the data en.wikipedia.org/wiki/Volume-weighted_average_price.
-
.indicator_name ⇒ String
Returns the name of the technical indicator.
-
.indicator_symbol ⇒ String
Returns the symbol of the technical indicator.
-
.min_data_size(**params) ⇒ Integer
Calculates the minimum number of observations needed to calculate the technical indicator.
-
.valid_options ⇒ Array
Returns an array of valid keys for options for this technical indicator.
-
.validate_options(options) ⇒ Boolean
Validates the provided options for this technical indicator.
Methods inherited from Indicator
Class Method Details
.calculate(data) ⇒ Array<VwapValue>
Calculates the volume weighted average price (VWAP) for the data en.wikipedia.org/wiki/Volume-weighted_average_price
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/technical_analysis/indicators/vwap.rb', line 52 def self.calculate(data) Validation.validate_numeric_data(data, :high, :low, :close, :volume) Validation.validate_length(data, min_data_size) Validation.validate_date_time_key(data) data = data.sort_by { |row| row[:date_time] } output = [] cumm_volume = 0 cumm_volume_x_typical_price = 0 data.each do |v| typical_price = StockCalculation.typical_price(v) cumm_volume_x_typical_price += v[:volume] * typical_price cumm_volume += v[:volume] vwap = cumm_volume_x_typical_price.to_f / cumm_volume.to_f output << VwapValue.new(date_time: v[:date_time], vwap: vwap) end output.sort_by(&:date_time).reverse end |
.indicator_name ⇒ String
Returns the name of the technical indicator
15 16 17 |
# File 'lib/technical_analysis/indicators/vwap.rb', line 15 def self.indicator_name "Volume Weighted Average Price" end |
.indicator_symbol ⇒ String
Returns the symbol of the technical indicator
8 9 10 |
# File 'lib/technical_analysis/indicators/vwap.rb', line 8 def self.indicator_symbol "vwap" end |
.min_data_size(**params) ⇒ Integer
Calculates the minimum number of observations needed to calculate the technical indicator
42 43 44 |
# File 'lib/technical_analysis/indicators/vwap.rb', line 42 def self.min_data_size(**params) 1 end |
.valid_options ⇒ Array
Returns an array of valid keys for options for this technical indicator
22 23 24 |
# File 'lib/technical_analysis/indicators/vwap.rb', line 22 def self. [] end |
.validate_options(options) ⇒ Boolean
Validates the provided options for this technical indicator
31 32 33 34 |
# File 'lib/technical_analysis/indicators/vwap.rb', line 31 def self.() return true if == {} raise Validation::ValidationError.new "This indicator doesn't accept any options." end |