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
- SYMBOL_TYPE_COLUMN_ID =
"SymbolType"- SYMBOL_TYPE_ORDER =
%w[CommonStock PreferredStock DepositaryReceipt].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.
223 224 225 226 |
# File 'lib/tradingview_screener/screen_data.rb', line 223 def initialize(screen_data, field_contract: nil) @data = deep_stringify(screen_data) @field_contract = field_contract end |
Instance Method Details
#markets ⇒ Object
228 229 230 231 |
# File 'lib/tradingview_screener/screen_data.rb', line 228 def markets values = Array(@data.dig("market_settings", "markets")) values.empty? ? ["america"] : values.map(&:to_s) end |
#to_payload ⇒ Object
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 258 259 260 261 262 |
# File 'lib/tradingview_screener/screen_data.rb', line 233 def to_payload source_filters = Array(@data["filters"]) filter2 = convert_symbol_type_filter2(source_filters) filters = convert_filters(source_filters.reject { |filter| symbol_type_filter?(filter) }) 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" => 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 |