Class: TradingviewScreener::ScreenData::Converter

Inherits:
Object
  • Object
show all
Defined in:
lib/tradingview_screener/screen_data.rb

Constant Summary collapse

COLUMN_MAP =
{
  "Price" => "close",
  "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

Instance Method Summary collapse

Constructor Details

#initialize(screen_data) ⇒ Converter

Returns a new instance of Converter.



121
122
123
# File 'lib/tradingview_screener/screen_data.rb', line 121

def initialize(screen_data)
  @data = deep_stringify(screen_data)
end

Instance Method Details

#to_payloadObject



125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# File 'lib/tradingview_screener/screen_data.rb', line 125

def to_payload
  markets = Array(@data.dig("market_settings", "markets"))
  markets = ["america"] if markets.empty?
  filters = convert_filters(Array(@data["filters"]))
  if @data.dig("market_settings", "is_primary_listing")
    filters << { "left" => "is_primary", "operation" => "equal", "right" => true }
  end

  {
    "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