Class: TradingviewScreener::ScreenData::Converter
- Inherits:
-
Object
- Object
- TradingviewScreener::ScreenData::Converter
- Defined in:
- lib/tradingview_screener/screen_data.rb
Constant Summary collapse
- COLUMN_MAP =
{ "Price" => "close", "Exchange" => "exchange", "Change" => "change", "Volume" => "volume", "MarketCap" => "market_cap_basic", "PriceToEarnings" => "price_earnings_ttm", "EpsDiluted" => "earnings_per_share_diluted_ttm", "EpsDilutedGrowth" => "earnings_per_share_diluted_yoy_growth_ttm", "DividendsYield" => "dividends_yield_current", "Sector" => "sector", "AnalystRating" => "AnalystRating", "PreMarketChange" => "premarket_change", "PreMarketVolume" => "premarket_volume", "PreMarketGap" => "premarket_gap", "TickerUniversal" => "ticker-view", "RelativeVolume" => "relative_volume_10d_calc", "RelativeVolumeAtTime" => "relative_volume_intraday|5", "AverageTrueRangePercent" => "ATRP", "PriceAvgVolume" => "AvgValue.Traded_10d", "AverageVolume" => "average_volume_10d_calc", "Performance" => "Perf.W", "RevenueGrowth" => "total_revenue_yoy_growth_ttm", "PriceToEarningsToGrowth" => "price_earnings_growth_ttm", "ReturnOnEquity" => "return_on_equity", "Beta" => "beta_1_year", "Ma" => "SMA" }.freeze
- SORT_MAP =
{ "PreMarketVolume" => "premarket_volume", "MarketCap" => "market_cap_basic", "Volume" => "volume", "Change" => "change", "Price" => "close", "PreMarketChange" => "premarket_change", "RelativeVolume" => "relative_volume_10d_calc" }.freeze
- DEFAULT_COLUMNS =
%w[ ticker-view close type typespecs pricescale minmov fractional minmove2 currency change volume relative_volume_10d_calc market_cap_basic fundamental_currency_code price_earnings_ttm earnings_per_share_diluted_ttm earnings_per_share_diluted_yoy_growth_ttm dividends_yield_current sector.tr market sector AnalystRating AnalystRating.tr premarket_change premarket_volume ].freeze
- OPERATION_MAP =
{ "above" => "greater", "greater" => "greater", "below" => "less", "less" => "less", "aboveOrEqual" => "egreater", "above_or_equal" => "egreater", "egreater" => "egreater", "belowOrEqual" => "eless", "below_or_equal" => "eless", "eless" => "eless", "equal" => "equal", "eq" => "equal", "notEqual" => "nequal", "not_equal" => "nequal", "nequal" => "nequal", "between" => "in_range", "inRange" => "in_range", "in_range" => "in_range", "outside" => "not_in_range", "notBetween" => "not_in_range", "not_between" => "not_in_range", "notInRange" => "not_in_range", "not_in_range" => "not_in_range", "crosses" => "crosses", "crossesUp" => "crosses_above", "crossesAbove" => "crosses_above", "crosses_above" => "crosses_above", "crossesDown" => "crosses_below", "crossesBelow" => "crosses_below", "crosses_below" => "crosses_below" }.freeze
Instance Method Summary collapse
-
#initialize(screen_data, field_contract: nil) ⇒ Converter
constructor
A new instance of Converter.
- #markets ⇒ Object
- #to_payload ⇒ Object
Constructor Details
#initialize(screen_data, field_contract: nil) ⇒ Converter
Returns a new instance of Converter.
220 221 222 223 |
# File 'lib/tradingview_screener/screen_data.rb', line 220 def initialize(screen_data, field_contract: nil) @data = deep_stringify(screen_data) @field_contract = field_contract end |
Instance Method Details
#markets ⇒ Object
225 226 227 228 |
# File 'lib/tradingview_screener/screen_data.rb', line 225 def markets values = Array(@data.dig("market_settings", "markets")) values.empty? ? ["america"] : values.map(&:to_s) end |
#to_payload ⇒ Object
230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 |
# File 'lib/tradingview_screener/screen_data.rb', line 230 def to_payload filters = convert_filters(Array(@data["filters"])) if @data.dig("market_settings", "is_primary_listing") validate_field!("is_primary") filters << { "left" => "is_primary", "operation" => "equal", "right" => true } end %w[type typespecs].each { |field| validate_field!(field) } { "markets" => markets, "symbols" => {}, "options" => { "lang" => "en" }, "columns" => convert_columns(Array(@data["default_custom_column_set"])), "filter" => filters, "filter2" => deep_dup(Relation::STOCK_TYPE_FILTER2), "sort" => convert_sort, "range" => [0, 100], "ignore_unknown_fields" => false, "meta" => { "id" => @data["id"], "title" => @data["title"], "version" => @data["version"], "date_created" => @data["date_created"], "date_updated" => @data["date_updated"], "date_used" => @data["date_used"] }.compact } end |