Skip to content

Screener

James Bury edited this page Oct 19, 2020 · 2 revisions

Views

df := GetScreenerData(NewClient(), &OverviewScreenerView{}, &map[string]interface{}{
    "signal": AllStocks,
    "filters": []FilterInterface{
        ExchangeFilter(NYSE),
        PriceFilter(PriceOver5),
        IndexFilter(SP500),
    },
    "general_order": Descending,
    "specific_order": Volume,
})
df := GetScreenerData(NewClient(), &ValuationScreenerView{}, &map[string]interface{}{
    "signal": AllStocks,
    "filters": []FilterInterface{
        ExchangeFilter(NYSE),
        PriceFilter(PriceOver5),
        IndexFilter(SP500),
    },
    "general_order": Descending,
    "specific_order": Volume,
})
df := GetScreenerData(NewClient(), &OwnershipScreenerView{}, &map[string]interface{}{
    "signal": AllStocks,
    "filters": []FilterInterface{
        ExchangeFilter(NYSE),
        PriceFilter(PriceOver5),
        IndexFilter(SP500),
    },
    "general_order": Descending,
    "specific_order": Volume,
})
df := GetScreenerData(NewClient(), &PerformanceScreenerView{}, &map[string]interface{}{
    "signal": AllStocks,
    "filters": []FilterInterface{
        ExchangeFilter(NYSE),
        PriceFilter(PriceOver5),
        IndexFilter(SP500),
    },
    "general_order": Descending,
    "specific_order": Volume,
})
df := GetScreenerData(NewClient(), &CustomScreenerView{}, &map[string]interface{}{
    "signal": AllStocks,
    "filters": []FilterInterface{
        ExchangeFilter(NYSE),
        PriceFilter(PriceOver5),
        IndexFilter(SP500),
    },
    "general_order": Descending,
    "specific_order": Volume,
    "custom_columns": []string{"0", "1", "3", "Company", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "shares Outstanding", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "volume", "68", "69", "IPO Date"},
})
df := GetScreenerData(NewClient(), &FinancialScreenerView{}, &map[string]interface{}{
    "signal": AllStocks,
    "filters": []FilterInterface{
        ExchangeFilter(NYSE),
        PriceFilter(PriceOver5),
        IndexFilter(SP500),
    },
    "general_order": Descending,
    "specific_order": Volume,
})
df := GetScreenerData(NewClient(), &TechnicalScreenerView{}, &map[string]interface{}{
    "signal": AllStocks,
    "filters": []FilterInterface{
        ExchangeFilter(NYSE),
        PriceFilter(PriceOver5),
        IndexFilter(SP500),
    },
    "general_order": Descending,
    "specific_order": Volume,
})
df := GetScreenerData(NewClient(), &ChartsScreenerView{}, &map[string]interface{}{
    "signal": AllStocks,
    "filters": []FilterInterface{
        ExchangeFilter(NYSE),
        PriceFilter(PriceOver5),
        IndexFilter(SP500),
    },
    "general_order": Descending,
    "specific_order": Volume,
    "chart_type": Candle,
    "timeframe": Weekly,
})
df := GetScreenerData(NewClient(), &BasicScreenerView{}, &map[string]interface{}{
    "signal": AllStocks,
    "filters": []FilterInterface{
        ExchangeFilter(NYSE),
        PriceFilter(PriceOver5),
        IndexFilter(SP500),
    },
    "general_order": Descending,
    "specific_order": Volume,
    "chart_type": Candle,
    "timeframe": Weekly,
})
df := GetScreenerData(NewClient(), &NewsScreenerView{}, &map[string]interface{}{
    "signal": AllStocks,
    "filters": []FilterInterface{
        ExchangeFilter(NYSE),
        PriceFilter(PriceOver5),
        IndexFilter(SP500),
    },
    "general_order": Descending,
    "specific_order": Volume,
    "chart_type": Candle,
    "timeframe": Weekly,
})
df := GetScreenerData(NewClient(), &DescriptionScreenerView{}, &map[string]interface{}{
    "signal": AllStocks,
    "filters": []FilterInterface{
        ExchangeFilter(NYSE),
        PriceFilter(PriceOver5),
        IndexFilter(SP500),
    },
    "general_order": Descending,
    "specific_order": Volume,
    "chart_type": Candle,
    "timeframe": Weekly,
})
df := GetScreenerData(NewClient(), &SnapshotScreenerView{}, &map[string]interface{}{
    "signal": AllStocks,
    "filters": []FilterInterface{
        ExchangeFilter(NYSE),
        PriceFilter(PriceOver5),
        IndexFilter(SP500),
    },
    "general_order": Descending,
    "specific_order": Volume,
    "chart_type": Candle,
    "timeframe": Weekly,
})
df := GetScreenerData(NewClient(), &TAScreenerView{}, &map[string]interface{}{
    "signal": AllStocks,
    "filters": []FilterInterface{
        ExchangeFilter(NYSE),
        PriceFilter(PriceOver5),
        IndexFilter(SP500),
    },
    "general_order": Descending,
    "specific_order": Volume,
    "chart_type": Candle,
    "timeframe": Weekly,
})
df := GetScreenerData(NewClient(), &TickersScreenerView{}, &map[string]interface{}{
    "signal": AllStocks,
    "filters": []FilterInterface{
        ExchangeFilter(NYSE),
        PriceFilter(PriceOver5),
        IndexFilter(SP500),
    },
    "general_order": Descending,
    "specific_order": Volume,
})
df := GetScreenerData(NewClient(), &BulkScreenerView{}, &map[string]interface{}{
    "signal": AllStocks,
    "filters": []FilterInterface{
        ExchangeFilter(NYSE),
        PriceFilter(PriceOver5),
        IndexFilter(SP500),
    },
    "general_order": Descending,
    "specific_order": Volume,
})
df := GetScreenerData(NewClient(), &BulkFullScreenerView{}, &map[string]interface{}{
    "signal": AllStocks,
    "filters": []FilterInterface{
        ExchangeFilter(NYSE),
        PriceFilter(PriceOver5),
        IndexFilter(SP500),
    },
    "general_order": Descending,
    "specific_order": Volume,
})

Signals

The signals are defined here.


Order

There are two main General Order types:

  • Ascending
  • Descending

The default General Order is Ascending.

For more details on Specific Order types, click here.


Filters

Filters are the primary parameters used to modify a screen. Each filter has an array of default options provided by Finviz.

Initializing a filter with a default value:

industry := IndustryFilter(Gold)

Initializing a filter with multiple default values:

industry := IndustryFilter(Gold, Silver, Steel)

If Finviz supports a filter option that is not currently available in the default list, it can still be used. The custom value passed to the filter must be the same as the value passed in the Finviz screen url. For the following example, the Finviz screen url would contain the parameter exch_virtualreality. Thus, virtualreality must be passed to the filter as shown below.

Initializing a filter with a custom value (if its valid):

industry := IndustryFilter("virtualreality")

Each filter handles its own URL generation. Users only need to state the filter value they want to use, i.e. NYSE, OMUnder80, Price10PercentBelowSMA200. The values of the default 60+ filters provided by Finviz have already been defined as constants in filters.go.

All registered filters are documented below.