A stock ticker retrieval and display program Data queried from Robinhood using robin_stocks Data displayed on ws2811 LED strip Running on a Raspberry Pi 3B+
Last active
October 21, 2021 23:19
-
-
Save alyoshenka/af880ca471cc5d429413519a44a73423 to your computer and use it in GitHub Desktop.
Stock Ticker
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
*.pyc | |
robin_stocks/ | |
__pycache__/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def convert(num, h=8): | |
# if in even column | |
if num % (h * 2) < h: | |
return num | |
# offset from column start | |
offset = num % h | |
# column start | |
start = num - offset | |
# inverted value | |
inv = start + (h - 1) - offset | |
return inv | |
def test_convert(): | |
assert convert(0) == 0 | |
assert convert(7) == 7 | |
assert convert(8) == 15 | |
assert convert(15) == 8 | |
assert convert(9) == 14 | |
assert convert(10) == 13 | |
test_convert() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# gui | |
from letters import SPACE, a | |
import pygame | |
from led import LED_GUI | |
from writing import ( | |
FullDisplay, | |
Color, | |
convert_old_character_to_lines, | |
convert_string_to_data_array, | |
convert_10_to_colors, | |
) | |
import time | |
import threading | |
import stocks | |
import pprint | |
sleep_time = 0.05 | |
W = 32 | |
H = 8 | |
S = 20 | |
O = S * 2 | |
green = Color(0, 150, 0) | |
blue = Color(0, 0, 150) | |
red = Color(150, 0, 0) | |
# add new stock data to the end | |
def add_stock_data(sym, display_data): | |
stock = stocks.Stock(sym) | |
arr = convert_string_to_data_array(stock.get_display() + " ") | |
arr = convert_old_character_to_lines(arr) | |
arr = convert_10_to_colors(arr, green if stock.delta_up() else red) | |
print("adding", len(arr), "lines of data") | |
for line in arr: | |
display_data.data.append(line) | |
# initialize led position | |
def initialize_leds(leds): | |
for c in range(0, W): | |
for r in range(0, H): | |
i = c * H + r | |
pos = (20 + c * O, 20 + r * O) | |
led = LED_GUI(position=pos, size=S) | |
led.turn_on() | |
leds.append(led) | |
# text loop | |
def loop(screen, display_data, leds, col_idx): | |
for event in pygame.event.get(): | |
if event.type == pygame.QUIT: | |
return False | |
screen.fill((30, 30, 30)) | |
colors = display_data.get_data_slice(col_idx) | |
for i in range(W * H): | |
leds[i].color = colors[i] | |
leds[i].draw(screen) | |
pygame.display.flip() | |
time.sleep(sleep_time) | |
return True | |
def run(): | |
leds = [] | |
initialize_leds(leds) | |
stocks.login() | |
syms = stocks.get_stock_symbols() | |
sym_idx = 0 | |
display_data = FullDisplay(_wrap=True) | |
display_data.add_front_padding() | |
for i in range(3): | |
add_stock_data(syms[sym_idx], display_data) | |
sym_idx = sym_idx + 1 | |
screen = pygame.display.set_mode([W * 40, H * 40]) | |
pygame.init() | |
col_idx = 0 | |
running = True | |
thread = None | |
while running: | |
running = loop(screen, display_data, leds, col_idx) | |
col_idx = col_idx + 1 | |
if col_idx >= display_data.data_length(): | |
col_idx = 0 | |
if col_idx > W * 3: | |
print(">") | |
if col_idx == W * 3: | |
display_data.cut(W * 3) | |
col_idx = 0 | |
print("lines:", display_data.data_length()) | |
if display_data.data_length() < W * 4 and ( | |
thread == None or not thread.is_alive() | |
): | |
thread = threading.Thread( | |
target=add_stock_data, | |
args=( | |
( | |
syms[sym_idx], | |
display_data, | |
) | |
), | |
) | |
thread.start() | |
sym_idx = sym_idx + 1 | |
if sym_idx >= len(syms): | |
sym_idx = 0 | |
pygame.quit() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from letters import * | |
uppercase = [ | |
A, | |
B, | |
C, | |
D, | |
E, | |
F, | |
G, | |
H, | |
I, | |
J, | |
K, | |
L, | |
M, | |
N, | |
O, | |
P, | |
Q, | |
R, | |
S, | |
T, | |
U, | |
V, | |
W, | |
X, | |
Y, | |
Z, | |
] | |
lowercase = [ | |
a, | |
b, | |
c, | |
d, | |
e, | |
f, | |
g, | |
h, | |
i, | |
j, | |
k, | |
l, | |
m, | |
n, | |
o, | |
p, | |
q, | |
r, | |
s, | |
t, | |
u, | |
v, | |
w, | |
x, | |
y, | |
z, | |
] | |
symbols = { | |
"$": DOLLAR, | |
"%": PERCENT, | |
"↑": UP, | |
"↓": DOWN, | |
"(": OPEN, | |
")": CLOSE, | |
"-": MINUS, | |
".": PERIOD, | |
":": COLON, | |
"=": EQUALS, | |
"~": TILDE, | |
"!": EXCLAMATION, | |
"@": AT, | |
"&": AMPERSAND, | |
"*": ASTERISK, | |
"?": QUESTION, | |
"<": LESSTHAN, | |
">": GREATERTHAN, | |
";": SEMICOLON, | |
"|": PIPE, | |
"{": OPENCURLY, | |
"}": CLOSECURLY, | |
'"': DOUBLEQUOTE, | |
"'": SINGLEQUOTE, | |
" ": SPACE, | |
} | |
numbers = [ZERO, ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# leds | |
from sys import setprofile | |
import pygame.draw as draw | |
# represents a GUI LED | |
class LED_GUI: | |
def __init__(self, position=(0, 0), size=0): | |
self.position = position | |
self.color = (0, 0, 0) | |
self.turn_on() | |
self.size = size | |
def draw(self, screen): | |
if self.color != (0, 0, 0): | |
try: | |
draw.circle( | |
screen, | |
(self.color.r, self.color.g, self.color.b), | |
self.position, | |
self.size, | |
) | |
except Exception as e: | |
print(e) | |
def turn_off(self): | |
self.color = (0, 0, 0) | |
def turn_on(self): | |
self.color = (0, 0, 255) | |
# represents a physical, addressable LED | |
class LED_Other: | |
def __init__(self): | |
self.idx = -1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# uppercase | |
def A(): | |
return [[2, 3, 4, 5, 6], [9, 12], [17, 20], [25, 26, 27, 28, 29, 30]] | |
def B(): | |
return [[1, 2, 3, 4, 5, 6], [9, 11, 14], [17, 19, 22], [26, 28, 29]] | |
def C(): | |
return [[2, 3, 4, 5], [9, 14], [17, 22], [26, 29]] | |
def D(): | |
return [[1, 2, 3, 4, 5, 6], [9, 14], [17, 22], [26, 27, 28, 29]] | |
def E(): | |
return [[1, 2, 3, 4, 5, 6], [9, 12, 14], [17, 20, 22], [25, 30]] | |
def F(): | |
return [[1, 2, 3, 4, 5, 6], [9, 12], [17, 20], [25]] | |
def G(): | |
return [[2, 3, 4, 5], [9, 14], [17, 20, 22], [26, 28, 29]] | |
def H(): | |
return [[1, 2, 3, 4, 5, 6], [12], [20], [25, 26, 27, 28, 29, 30]] | |
def I(): | |
return [[1, 6], [9, 10, 11, 12, 13, 14], [17, 22]] | |
def J(): | |
return [[1, 5], [9, 14], [17, 18, 19, 20, 21], [25]] | |
def K(): | |
return [[1, 2, 3, 4, 5, 6], [11], [18, 20], [25, 29, 30]] | |
def L(): | |
return [[1, 2, 3, 4, 5, 6], [14], [22], [30]] | |
def M(): | |
return [ | |
[1, 2, 3, 4, 5, 6], | |
[9], | |
[17, 18, 19, 20, 21, 22], | |
[25], | |
[34, 35, 36, 37, 38], | |
] | |
def N(): | |
return [[1, 2, 3, 4, 5, 6], [11], [20], [25, 26, 27, 28, 29, 30]] | |
def O(): | |
return [[2, 3, 4, 5], [9, 14], [17, 22], [26, 27, 28, 29]] | |
def P(): | |
return [[1, 2, 3, 4, 5, 6], [9, 12], [17, 20], [26, 27]] | |
def Q(): | |
return [[2, 3, 4, 5], [9, 14], [17, 21, 22], [26, 27, 28, 29, 30]] | |
def R(): | |
return [[1, 2, 3, 4, 5, 6], [9, 12], [17, 20, 21], [26, 27, 30]] | |
def S(): | |
return [[2, 6], [9, 11, 14], [17, 19, 22], [25, 28, 29]] | |
def T(): | |
return [[1], [9, 10, 11, 12, 13, 14], [17], [25]] | |
def U(): | |
return [[1, 2, 3, 4, 5], [14], [22], [25, 26, 27, 28, 29]] | |
def V(): | |
return [[1, 2, 3, 4], [13], [22], [25, 26, 27, 28, 29, 30]] | |
def W(): | |
return [[1, 2, 3, 4, 5], [14], [17, 18, 19, 20, 21, 22], [30], [33, 34, 35, 36, 37]] | |
def X(): | |
return [[1, 2, 4, 5, 6], [11], [19], [25, 26, 28, 29, 30]] | |
def Y(): | |
return [[1, 2, 3, 6], [12, 14], [20, 22], [25, 26, 27, 28, 29]] | |
def Z(): | |
return [[1, 5, 6], [9, 12, 14], [17, 19, 22], [25, 26, 30]] | |
# lowercase | |
def a(): | |
return [[5], [10, 12, 14], [18, 20, 22], [27, 28, 29, 30]] | |
def b(): | |
return [[1, 2, 3, 4, 5, 6], [11, 14], [19, 22], [28, 29]] | |
def c(): | |
return [[3, 4, 5], [10, 14], [18, 22], [27, 29]] | |
def d(): | |
return [[4, 5], [11, 14], [19, 22], [25, 26, 27, 28, 29, 30]] | |
def e(): | |
return [[3, 4, 5], [10, 12, 14], [18, 20, 22], [27]] | |
def f(): | |
return [[3], [9, 10, 11, 12, 13, 14], [17, 19]] | |
def g(): | |
return [[3, 4], [10, 13, 15], [18, 21, 23], [27, 28, 29, 30]] | |
def h(): | |
return [[1, 2, 3, 4, 5, 6], [11], [19], [28, 29, 30]] | |
def i(): | |
return [[1, 3, 4, 5, 6]] | |
def j(): | |
return [[3, 7], [9, 11, 12, 13, 14]] | |
def k(): | |
return [[1, 2, 3, 4, 5, 6], [12], [19, 21], [26, 30]] | |
def l(): | |
return [[1, 2, 3, 4, 5, 6], [14]] | |
def m(): | |
return [[2, 3, 4, 5, 6], [10], [18, 19, 20, 21, 22], [26], [35, 36, 37, 38]] | |
def n(): | |
return [[2, 3, 4, 5, 6], [10], [18], [27, 28, 29, 30]] | |
def o(): | |
return [[3, 4, 5], [10, 14], [18, 22], [27, 28, 29]] | |
def p(): | |
return [[2, 3, 4, 5, 6, 7], [10, 13], [18, 21], [27, 28]] | |
def q(): | |
return [[3, 4], [10, 13], [18, 21], [26, 27, 28, 29, 30, 31]] | |
def r(): | |
return [[2, 3, 4, 5, 6], [10], [19]] | |
def s(): | |
return [[3, 6], [10, 12, 14], [18, 20, 22], [26, 29]] | |
def t(): | |
return [[2], [9, 10, 11, 12, 13, 14], [18, 22]] | |
def u(): | |
return [[2, 3, 4, 5], [14], [22], [26, 27, 28, 29]] | |
def v(): | |
return [[2, 3, 4], [13], [22], [26, 27, 28, 29]] | |
def w(): | |
return [[2, 3, 4, 5], [14], [18, 19, 20, 21, 22], [30], [34, 35, 36, 37]] | |
def x(): | |
return [[2, 3, 5, 6], [12], [20], [26, 27, 29, 30]] | |
def y(): | |
return [[2, 3, 4], [13, 15], [21, 23], [26, 27, 28, 29, 30]] | |
def z(): | |
return [[2, 5, 6], [10, 12, 14], [18, 20, 22], [26, 27, 30]] | |
# symbols | |
def DOLLAR(): | |
return [ | |
[2, 6], | |
[9, 11, 14], | |
[16, 17, 18, 19, 20, 21, 22, 23], | |
[25, 27, 30], | |
[33, 36, 37], | |
] | |
def UP(): | |
return [[3], [10], [17, 18, 19, 20, 21, 22], [26], [35]] | |
def DOWN(): | |
return [[4], [13], [17, 18, 19, 20, 21, 22], [29], [36]] | |
def PERCENT(): | |
return [[1, 5, 6], [12], [19], [25, 26, 30]] | |
def OPEN(): | |
return [[1, 2, 3, 4, 5, 6], [9, 14]] | |
def CLOSE(): | |
return [[1, 6], [9, 10, 11, 12, 13, 14]] | |
def MINUS(): | |
return [[3], [11], [19]] | |
def PERIOD(): | |
return [[6]] | |
def COLON(): | |
return [[2, 4]] | |
def EQUALS(): | |
return [[2, 4], [10, 12], [18, 20]] | |
def TILDE(): | |
return [[2], [9], [18], [25]] | |
def EXCLAMATION(): | |
return [[1, 2, 3, 4, 6]] | |
def AT(): | |
return [[2, 3, 4, 5], [9, 14], [17, 19, 20, 22], [25, 26, 27, 28, 30]] | |
def AMPERSAND(): | |
return [[2, 4, 5], [9, 11, 14], [18, 20, 22], [29], [36, 38]] | |
def ASTERISK(): | |
return [[1, 3], [10], [17, 19]] | |
def QUESTION(): | |
return [[2], [9, 12, 13, 15], [17, 19], [26]] | |
def LESSTHAN(): | |
return [[3], [10, 12], [17, 21]] | |
def GREATERTHAN(): | |
return [[1, 5], [10, 12], [19]] | |
def SEMICOLON(): | |
return [[5], [10, 12]] | |
def PIPE(): | |
return [[1, 2, 3, 4, 5, 6]] | |
def OPENCURLY(): | |
return [[3], [9, 10, 11, 13], [17, 22]] | |
def CLOSECURLY(): | |
return [[1, 5], [9, 10, 12, 13], [19]] | |
def DOUBLEQUOTE(): | |
return [[1, 2], [], [17, 18]] | |
def SINGLEQUOTE(): | |
return [[1, 2]] | |
def SPACE(width=4): | |
ret = [] | |
for i in range(width): | |
ret.append([]) | |
return ret | |
# numbers | |
def ZERO(): | |
return [[2, 3, 4, 5], [9, 12, 14], [17, 18, 22], [26, 27, 28, 29]] | |
def ONE(): | |
return [[3, 6], [10, 14], [17, 18, 19, 20, 21, 22], [30]] | |
def TWO(): | |
return [[2, 5, 6], [9, 12, 14], [17, 20, 22], [26, 27, 30]] | |
def THREE(): | |
return [[2, 5], [9, 14], [17, 19, 22], [26, 28, 29]] | |
def FOUR(): | |
return [[3, 4], [10, 12], [17, 18, 19, 20, 21, 22], [28]] | |
def FIVE(): | |
return [[1, 2, 3, 5], [9, 11, 14], [17, 19, 22], [25, 28, 29]] | |
def SIX(): | |
return [[2, 3, 4, 5], [9, 11, 14], [17, 19, 22], [25, 28, 29]] | |
def SEVEN(): | |
return [[1], [9, 12, 13, 14], [17, 19], [25, 26]] | |
def EIGHT(): | |
return [[2, 4, 5], [9, 11, 14], [17, 19, 22], [26, 28, 29]] | |
def NINE(): | |
return [[2, 3, 6], [9, 12, 14], [17, 20, 22], [26, 27, 28, 29]] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
Time: 2021-08-31 21:03:13.887709 | |
Error: <class 'IndexError'> | |
Message: list index out of range | |
--- | |
Please enter a valid code. | |
Please enter a valid code. | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def log_message(msg, fileName="/home/jay/StockTicker/log.txt"): | |
"""log message to file""" | |
file = open(fileName, "a") | |
file.write("---\n") | |
file.write(msg) | |
file.write("\n---\n\n") | |
file.close() | |
return True | |
def construct_error_message(msg, timeStr, errorType): | |
"""constructs an error message""" | |
errorMsg = ( | |
"Time: " + timeStr + "\n" + "Error: " + errorType + "\n" + "Message: " + msg | |
) | |
return errorMsg |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
# NeoPixel library strandtest example | |
# Author: Tony DiCola (tony@tonydicola.com) | |
# | |
# Direct port of the Arduino NeoPixel library strandtest example. Showcases | |
# various animations on a strip of NeoPixels. | |
from writing import FullDisplay | |
from stocks import get_stock_symbols, login | |
from display import add_stock_data | |
from strip import init_strip, set_display, clear_display, convert_to_lib_color | |
from operation_checker import connected_to_internet | |
from logger import log_message, construct_error_message | |
from math import floor | |
from datetime import datetime | |
import time | |
import threading | |
import sys | |
sleep_time = 0.1 | |
WIDTH = 32 | |
HEIGHT = 8 | |
# display all stocks | |
def run_stocks(strip): | |
if not connected_to_internet(): | |
print("Not connected to internet") | |
timeString = (str)(datetime.now()) | |
msg = construct_error_message("Not connected to Internet", timeString, "") | |
log_message(msg) | |
return False | |
if not login(): | |
timeString = (str)(datetime.now()) | |
msg = construct_error_message("Unable to login", timeString, "") | |
log_message(msg) | |
return False | |
symbols = get_stock_symbols() # stock symbols | |
symbol_idx = 0 # current stock symbol | |
data_container = FullDisplay(_wrap=True) | |
data_container.add_front_padding() | |
for i in range(3): | |
add_stock_data(symbols[symbol_idx], data_container) | |
symbol_idx = symbol_idx + 1 | |
column_idx = 0 # column to take color data from | |
thread = None | |
run = True | |
while run: | |
try: | |
# get current "frame" of colors | |
colors = data_container.get_data_slice(column_idx, flip=True) | |
for i in range(len(colors)): | |
c = colors[i] | |
bc = convert_to_lib_color(c.r, c.g, c.b) | |
strip.setPixelColor(i, bc) | |
# "publish" colors | |
strip.show() | |
# scroll | |
column_idx = column_idx + 1 | |
if column_idx >= data_container.data_length(): | |
column_idx = 0 | |
# error checking | |
if column_idx > WIDTH * 3: | |
print(">") | |
# cut off front of array | |
if column_idx == WIDTH * 3: | |
data_container.cut(WIDTH * 3) | |
column_idx = 0 | |
print("lines:", data_container.data_length()) | |
# add new data (to end) | |
if data_container.data_length() < WIDTH * 4 and ( | |
thread == None or not thread.is_alive() | |
): | |
thread = threading.Thread( | |
target=add_stock_data, | |
args=( | |
( | |
symbols[symbol_idx], | |
data_container, | |
) | |
), | |
) | |
thread.start() | |
# iterate through symbols | |
symbol_idx = symbol_idx + 1 | |
if symbol_idx >= len(symbols): | |
symbol_idx = 0 | |
time.sleep(sleep_time) | |
except KeyboardInterrupt: # ctrl + c | |
clear_display(strip) | |
exit() | |
except Exception as e: # else | |
timeString = (str)(datetime.now()) | |
errorType = (str)((type)(e)) | |
errorMsg = (str)(e) | |
msg = construct_error_message(errorMsg, timeString, errorType) | |
log_message(msg) | |
clear_display(strip) | |
exit() | |
if __name__ == "__main__": | |
try: | |
time.sleep(10) | |
strip = init_strip() | |
run_stocks(strip) | |
except Exception as e: | |
file = open("/home/jay/StockTicker/log.txt", 'a') | |
file.write((str)(e)) | |
file.write("\n\n") | |
file.close() | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def test_stocks(strip): | |
login() | |
my_stocks = build_stocks() | |
for stock in my_stocks: | |
stock.display() | |
strip.setBrightness(5) | |
writer = Writer(strip) | |
green = Color(0, 255, 0) | |
red = Color(255, 0, 0) | |
sym = Message() | |
for stock in my_stocks: | |
msg = stock.to_message() | |
sym.addMessage(msg) | |
# sym.addSpace(4) | |
while True: | |
clearDisplay() | |
writer.writeMessage(sym) | |
strip.show() | |
sym.scroll(-1) | |
time.sleep(0.1) | |
def test_letters(strip): | |
msg = Message() | |
for letter in uppercase: | |
msg.addLetter(Letter(letter())) | |
for letter in lowercase: | |
msg.addLetter(Letter(letter())) | |
for number in numbers: | |
msg.addLetter(Letter(number())) | |
# for symbol in symbols: | |
# msg.addLetter(Letter(symbols.get(symbol)())) | |
msg.addSpace() | |
msg1 = Message() | |
msg1.addLetter(Letter(m())) | |
msg1.addLetter(Letter(s())) | |
msg1.addLetter(Letter(g())) | |
msg2 = Message() | |
for i in range(6): | |
msg2.addLetter(Letter(SIX())) | |
msg = msg1 | |
msg.addMessage(msg2) | |
strip.setBrightness(5) | |
writer = Writer(strip) | |
while True: | |
clearDisplay() | |
writer.writeMessage(msg) | |
strip.show() | |
msg.scroll(-1) | |
time.sleep(0.2) | |
def hello_world(strip): | |
msg = Message() | |
msg.addString("Hello World *$") | |
msg.addSpace(4) | |
strip.setBrightness(3) | |
writer = Writer(strip) | |
while True: | |
clearDisplay() | |
writer.writeMessage(msg) | |
strip.show() | |
msg.scroll(-1) | |
time.sleep(0.1) | |
def test_symbols(strip): | |
msg = Message() | |
for s in symbols: | |
msg.addLetter(Letter(symbols.get(s)())) | |
msg.addSpace(4) | |
strip.setBrightness(2) | |
writer = Writer(strip) | |
while True: | |
clearDisplay() | |
writer.writeMessage(msg) | |
strip.show() | |
msg.scroll(-1) | |
time.sleep(0.1) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import requests | |
def connected_to_internet(): | |
"""returns whether an internet connection is detected""" | |
try: | |
requests.get("https://google.com", timeout=5) | |
return True | |
except (requests.ConnectionError, requests.Timeout) as e: | |
return False | |
else: | |
return True # not sure |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import platform | |
def windows(): | |
"""windows is current platform""" | |
return platform.platform().startswith("Windows") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
requests==2.20.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Copyright (c) 2018 Joshua M. Fernandes | |
Permission is hereby granted, free of charge, to any person obtaining a copy of | |
this software and associated documentation files (the "Software"), to deal in | |
the Software without restriction, including without limitation the rights to | |
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies | |
of the Software, and to permit persons to whom the Software is furnished to do | |
so, subject to the following conditions: | |
The above copyright notice and this permission notice shall be included in all | |
copies or substantial portions of the Software. | |
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
sudo /usr/bin/python3 /home/jay/StockTicker/main.py |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
sudo python3 main.py |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[ | |
{ | |
"Symbol": "AAL" | |
}, | |
{ | |
"Symbol": "AAME" | |
}, | |
{ | |
"Symbol": "AAOI" | |
}, | |
{ | |
"Symbol": "AAON" | |
}, | |
{ | |
"Symbol": "AAPL" | |
}, | |
{ | |
"Symbol": "AAWW" | |
}, | |
{ | |
"Symbol": "AAXJ" | |
}, | |
{ | |
"Symbol": "ABCB" | |
}, | |
{ | |
"Symbol": "ABMD" | |
}, | |
{ | |
"Symbol": "ACET" | |
}, | |
{ | |
"Symbol": "ACFN" | |
}, | |
{ | |
"Symbol": "ACGL" | |
}, | |
{ | |
"Symbol": "ACHC" | |
}, | |
{ | |
"Symbol": "ACIW" | |
}, | |
{ | |
"Symbol": "ACLS" | |
}, | |
{ | |
"Symbol": "ACNB" | |
}, | |
{ | |
"Symbol": "ACOR" | |
}, | |
{ | |
"Symbol": "ACRX" | |
}, | |
{ | |
"Symbol": "ACST" | |
}, | |
{ | |
"Symbol": "ACTG" | |
}, | |
{ | |
"Symbol": "ACUR" | |
}, | |
{ | |
"Symbol": "ACWI" | |
}, | |
{ | |
"Symbol": "ACWX" | |
}, | |
{ | |
"Symbol": "ADBE" | |
}, | |
{ | |
"Symbol": "ADES" | |
}, | |
{ | |
"Symbol": "ADI" | |
}, | |
{ | |
"Symbol": "ADMA" | |
}, | |
{ | |
"Symbol": "ADMP" | |
}, | |
{ | |
"Symbol": "ADMS" | |
}, | |
{ | |
"Symbol": "ADP" | |
}, | |
{ | |
"Symbol": "ADRA" | |
}, | |
{ | |
"Symbol": "ADRE" | |
}, | |
{ | |
"Symbol": "ADSK" | |
}, | |
{ | |
"Symbol": "ADTN" | |
}, | |
{ | |
"Symbol": "ADUS" | |
}, | |
{ | |
"Symbol": "ADXS" | |
}, | |
{ | |
"Symbol": "AEHR" | |
}, | |
{ | |
"Symbol": "AEIS" | |
}, | |
{ | |
"Symbol": "AERI" | |
}, | |
{ | |
"Symbol": "AEY" | |
}, | |
{ | |
"Symbol": "AEZS" | |
}, | |
{ | |
"Symbol": "AFMD" | |
}, | |
{ | |
"Symbol": "AGEN" | |
}, | |
{ | |
"Symbol": "AGIO" | |
}, | |
{ | |
"Symbol": "AGNC" | |
}, | |
{ | |
"Symbol": "AGNCP" | |
}, | |
{ | |
"Symbol": "AGRX" | |
}, | |
{ | |
"Symbol": "AGTC" | |
}, | |
{ | |
"Symbol": "AGYS" | |
}, | |
{ | |
"Symbol": "AGZD" | |
}, | |
{ | |
"Symbol": "AHPI" | |
}, | |
{ | |
"Symbol": "AIMC" | |
}, | |
{ | |
"Symbol": "AINV" | |
}, | |
{ | |
"Symbol": "AIQ" | |
}, | |
{ | |
"Symbol": "AIRR" | |
}, | |
{ | |
"Symbol": "AIRT" | |
}, | |
{ | |
"Symbol": "AKAM" | |
}, | |
{ | |
"Symbol": "AKBA" | |
}, | |
{ | |
"Symbol": "ALCO" | |
}, | |
{ | |
"Symbol": "ALDX" | |
}, | |
{ | |
"Symbol": "ALGN" | |
}, | |
{ | |
"Symbol": "ALGT" | |
}, | |
{ | |
"Symbol": "ALIM" | |
}, | |
{ | |
"Symbol": "ALKS" | |
}, | |
{ | |
"Symbol": "ALLT" | |
}, | |
{ | |
"Symbol": "ALNY" | |
}, | |
{ | |
"Symbol": "ALOT" | |
}, | |
{ | |
"Symbol": "ALTR" | |
}, | |
{ | |
"Symbol": "AMAT" | |
}, | |
{ | |
"Symbol": "AMBA" | |
}, | |
{ | |
"Symbol": "AMBC" | |
}, | |
{ | |
"Symbol": "AMCF" | |
}, | |
{ | |
"Symbol": "AMCX" | |
}, | |
{ | |
"Symbol": "AMD" | |
}, | |
{ | |
"Symbol": "AMED" | |
}, | |
{ | |
"Symbol": "AMGN" | |
}, | |
{ | |
"Symbol": "AMKR" | |
}, | |
{ | |
"Symbol": "AMNB" | |
}, | |
{ | |
"Symbol": "AMOT" | |
}, | |
{ | |
"Symbol": "AMOV" | |
}, | |
{ | |
"Symbol": "AMPH" | |
}, | |
{ | |
"Symbol": "AMRK" | |
}, | |
{ | |
"Symbol": "AMRN" | |
}, | |
{ | |
"Symbol": "AMRS" | |
}, | |
{ | |
"Symbol": "AMSC" | |
}, | |
{ | |
"Symbol": "AMSWA" | |
}, | |
{ | |
"Symbol": "AMTX" | |
}, | |
{ | |
"Symbol": "AMWD" | |
}, | |
{ | |
"Symbol": "ANAC" | |
}, | |
{ | |
"Symbol": "ANAT" | |
}, | |
{ | |
"Symbol": "ANDE" | |
}, | |
{ | |
"Symbol": "ANGI" | |
}, | |
{ | |
"Symbol": "ANGO" | |
}, | |
{ | |
"Symbol": "ANIK" | |
}, | |
{ | |
"Symbol": "ANIP" | |
}, | |
{ | |
"Symbol": "ANSS" | |
}, | |
{ | |
"Symbol": "ANTH" | |
}, | |
{ | |
"Symbol": "ANY" | |
}, | |
{ | |
"Symbol": "AOSL" | |
}, | |
{ | |
"Symbol": "APDN" | |
}, | |
{ | |
"Symbol": "APEI" | |
}, | |
{ | |
"Symbol": "APOG" | |
}, | |
{ | |
"Symbol": "APTO" | |
}, | |
{ | |
"Symbol": "APWC" | |
}, | |
{ | |
"Symbol": "ARAY" | |
}, | |
{ | |
"Symbol": "ARCB" | |
}, | |
{ | |
"Symbol": "ARCC" | |
}, | |
{ | |
"Symbol": "ARCW" | |
}, | |
{ | |
"Symbol": "ARDX" | |
}, | |
{ | |
"Symbol": "ARKR" | |
}, | |
{ | |
"Symbol": "ARLP" | |
}, | |
{ | |
"Symbol": "ARNA" | |
}, | |
{ | |
"Symbol": "AROW" | |
}, | |
{ | |
"Symbol": "ARRY" | |
}, | |
{ | |
"Symbol": "ARTNA" | |
}, | |
{ | |
"Symbol": "ARTW" | |
}, | |
{ | |
"Symbol": "ARWR" | |
}, | |
{ | |
"Symbol": "ASMB" | |
}, | |
{ | |
"Symbol": "ASML" | |
}, | |
{ | |
"Symbol": "ASPS" | |
}, | |
{ | |
"Symbol": "ASRV" | |
}, | |
{ | |
"Symbol": "ASRVP" | |
}, | |
{ | |
"Symbol": "ASTC" | |
}, | |
{ | |
"Symbol": "ASTE" | |
}, | |
{ | |
"Symbol": "ASTI" | |
}, | |
{ | |
"Symbol": "ASUR" | |
}, | |
{ | |
"Symbol": "ASYS" | |
}, | |
{ | |
"Symbol": "ATAI" | |
}, | |
{ | |
"Symbol": "ATEC" | |
}, | |
{ | |
"Symbol": "ATHN" | |
}, | |
{ | |
"Symbol": "ATHX" | |
}, | |
{ | |
"Symbol": "ATLC" | |
}, | |
{ | |
"Symbol": "ATLO" | |
}, | |
{ | |
"Symbol": "ATNI" | |
}, | |
{ | |
"Symbol": "ATOS" | |
}, | |
{ | |
"Symbol": "ATRA" | |
}, | |
{ | |
"Symbol": "ATRC" | |
}, | |
{ | |
"Symbol": "ATRI" | |
}, | |
{ | |
"Symbol": "ATRO" | |
}, | |
{ | |
"Symbol": "ATRS" | |
}, | |
{ | |
"Symbol": "ATSG" | |
}, | |
{ | |
"Symbol": "ATVI" | |
}, | |
{ | |
"Symbol": "AUBN" | |
}, | |
{ | |
"Symbol": "AUDC" | |
}, | |
{ | |
"Symbol": "AUPH" | |
}, | |
{ | |
"Symbol": "AVAV" | |
}, | |
{ | |
"Symbol": "AVEO" | |
}, | |
{ | |
"Symbol": "AVGO" | |
}, | |
{ | |
"Symbol": "AVID" | |
}, | |
{ | |
"Symbol": "AVNW" | |
}, | |
{ | |
"Symbol": "AWAY" | |
}, | |
{ | |
"Symbol": "AWRE" | |
}, | |
{ | |
"Symbol": "AXAS" | |
}, | |
{ | |
"Symbol": "AXDX" | |
}, | |
{ | |
"Symbol": "AXGN" | |
}, | |
{ | |
"Symbol": "AXTI" | |
}, | |
{ | |
"Symbol": "AZPN" | |
}, | |
{ | |
"Symbol": "BANF" | |
}, | |
{ | |
"Symbol": "BANFP" | |
}, | |
{ | |
"Symbol": "BANR" | |
}, | |
{ | |
"Symbol": "BANX" | |
}, | |
{ | |
"Symbol": "BBBY" | |
}, | |
{ | |
"Symbol": "BBC" | |
}, | |
{ | |
"Symbol": "BBGI" | |
}, | |
{ | |
"Symbol": "BBP" | |
}, | |
{ | |
"Symbol": "BBSI" | |
}, | |
{ | |
"Symbol": "BCBP" | |
}, | |
{ | |
"Symbol": "BCLI" | |
}, | |
{ | |
"Symbol": "BCOR" | |
}, | |
{ | |
"Symbol": "BCOV" | |
}, | |
{ | |
"Symbol": "BCPC" | |
}, | |
{ | |
"Symbol": "BCRX" | |
}, | |
{ | |
"Symbol": "BDSI" | |
}, | |
{ | |
"Symbol": "BEBE" | |
}, | |
{ | |
"Symbol": "BECN" | |
}, | |
{ | |
"Symbol": "BELFA" | |
}, | |
{ | |
"Symbol": "BELFB" | |
}, | |
{ | |
"Symbol": "BFIN" | |
}, | |
{ | |
"Symbol": "BGCP" | |
}, | |
{ | |
"Symbol": "BGFV" | |
}, | |
{ | |
"Symbol": "BGMD" | |
}, | |
{ | |
"Symbol": "BIB" | |
}, | |
{ | |
"Symbol": "BICK" | |
}, | |
{ | |
"Symbol": "BIDU" | |
}, | |
{ | |
"Symbol": "BIIB" | |
}, | |
{ | |
"Symbol": "BIOC" | |
}, | |
{ | |
"Symbol": "BIOL" | |
}, | |
{ | |
"Symbol": "BIS" | |
}, | |
{ | |
"Symbol": "BJRI" | |
}, | |
{ | |
"Symbol": "BKCC" | |
}, | |
{ | |
"Symbol": "BKEP" | |
}, | |
{ | |
"Symbol": "BKEPP" | |
}, | |
{ | |
"Symbol": "BKSC" | |
}, | |
{ | |
"Symbol": "BLCM" | |
}, | |
{ | |
"Symbol": "BLDP" | |
}, | |
{ | |
"Symbol": "BLDR" | |
}, | |
{ | |
"Symbol": "BLFS" | |
}, | |
{ | |
"Symbol": "BLIN" | |
}, | |
{ | |
"Symbol": "BLKB" | |
}, | |
{ | |
"Symbol": "BLMN" | |
}, | |
{ | |
"Symbol": "BLRX" | |
}, | |
{ | |
"Symbol": "BLUE" | |
}, | |
{ | |
"Symbol": "BMRC" | |
}, | |
{ | |
"Symbol": "BMRN" | |
}, | |
{ | |
"Symbol": "BMTC" | |
}, | |
{ | |
"Symbol": "BNDX" | |
}, | |
{ | |
"Symbol": "BNFT" | |
}, | |
{ | |
"Symbol": "BNSO" | |
}, | |
{ | |
"Symbol": "BOCH" | |
}, | |
{ | |
"Symbol": "BOKF" | |
}, | |
{ | |
"Symbol": "BOOM" | |
}, | |
{ | |
"Symbol": "BOSC" | |
}, | |
{ | |
"Symbol": "BOTJ" | |
}, | |
{ | |
"Symbol": "BPOP" | |
}, | |
{ | |
"Symbol": "BPOPM" | |
}, | |
{ | |
"Symbol": "BPOPN" | |
}, | |
{ | |
"Symbol": "BPTH" | |
}, | |
{ | |
"Symbol": "BRID" | |
}, | |
{ | |
"Symbol": "BRKL" | |
}, | |
{ | |
"Symbol": "BRKR" | |
}, | |
{ | |
"Symbol": "BRKS" | |
}, | |
{ | |
"Symbol": "BRLI" | |
}, | |
{ | |
"Symbol": "BSET" | |
}, | |
{ | |
"Symbol": "BSPM" | |
}, | |
{ | |
"Symbol": "BSQR" | |
}, | |
{ | |
"Symbol": "BSRR" | |
}, | |
{ | |
"Symbol": "BUR" | |
}, | |
{ | |
"Symbol": "BUSE" | |
}, | |
{ | |
"Symbol": "BV" | |
}, | |
{ | |
"Symbol": "BWEN" | |
}, | |
{ | |
"Symbol": "BWFG" | |
}, | |
{ | |
"Symbol": "BYFC" | |
}, | |
{ | |
"Symbol": "CAC" | |
}, | |
{ | |
"Symbol": "CACC" | |
}, | |
{ | |
"Symbol": "CACH" | |
}, | |
{ | |
"Symbol": "CALA" | |
}, | |
{ | |
"Symbol": "CALI" | |
}, | |
{ | |
"Symbol": "CALM" | |
}, | |
{ | |
"Symbol": "CAMP" | |
}, | |
{ | |
"Symbol": "CAR" | |
}, | |
{ | |
"Symbol": "CARZ" | |
}, | |
{ | |
"Symbol": "CASI" | |
}, | |
{ | |
"Symbol": "CASS" | |
}, | |
{ | |
"Symbol": "CBAN" | |
}, | |
{ | |
"Symbol": "CBAY" | |
}, | |
{ | |
"Symbol": "CBLI" | |
}, | |
{ | |
"Symbol": "CBNK" | |
}, | |
{ | |
"Symbol": "CBOE" | |
}, | |
{ | |
"Symbol": "CBRL" | |
}, | |
{ | |
"Symbol": "CBSH" | |
}, | |
{ | |
"Symbol": "CCBG" | |
}, | |
{ | |
"Symbol": "CCLP" | |
}, | |
{ | |
"Symbol": "CCMP" | |
}, | |
{ | |
"Symbol": "CCNE" | |
}, | |
{ | |
"Symbol": "CCOI" | |
}, | |
{ | |
"Symbol": "CCRN" | |
}, | |
{ | |
"Symbol": "CCXI" | |
}, | |
{ | |
"Symbol": "CDC" | |
}, | |
{ | |
"Symbol": "CDK" | |
}, | |
{ | |
"Symbol": "CDNA" | |
}, | |
{ | |
"Symbol": "CDNS" | |
}, | |
{ | |
"Symbol": "CDTI" | |
}, | |
{ | |
"Symbol": "CDW" | |
}, | |
{ | |
"Symbol": "CDXS" | |
}, | |
{ | |
"Symbol": "CDZI" | |
}, | |
{ | |
"Symbol": "CEMI" | |
}, | |
{ | |
"Symbol": "CENT" | |
}, | |
{ | |
"Symbol": "CENX" | |
}, | |
{ | |
"Symbol": "CERE" | |
}, | |
{ | |
"Symbol": "CERN" | |
}, | |
{ | |
"Symbol": "CEVA" | |
}, | |
{ | |
"Symbol": "CFA" | |
}, | |
{ | |
"Symbol": "CFBK" | |
}, | |
{ | |
"Symbol": "CFFI" | |
}, | |
{ | |
"Symbol": "CFFN" | |
}, | |
{ | |
"Symbol": "CFNB" | |
}, | |
{ | |
"Symbol": "CFO" | |
}, | |
{ | |
"Symbol": "CFRX" | |
}, | |
{ | |
"Symbol": "CG" | |
}, | |
{ | |
"Symbol": "CGEN" | |
}, | |
{ | |
"Symbol": "CGNX" | |
}, | |
{ | |
"Symbol": "CGO" | |
}, | |
{ | |
"Symbol": "CHCI" | |
}, | |
{ | |
"Symbol": "CHCO" | |
}, | |
{ | |
"Symbol": "CHDN" | |
}, | |
{ | |
"Symbol": "CHEF" | |
}, | |
{ | |
"Symbol": "CHI" | |
}, | |
{ | |
"Symbol": "CHKP" | |
}, | |
{ | |
"Symbol": "CHMG" | |
}, | |
{ | |
"Symbol": "CHNR" | |
}, | |
{ | |
"Symbol": "CHRS" | |
}, | |
{ | |
"Symbol": "CHRW" | |
}, | |
{ | |
"Symbol": "CHSCM" | |
}, | |
{ | |
"Symbol": "CHSCN" | |
}, | |
{ | |
"Symbol": "CHSCO" | |
}, | |
{ | |
"Symbol": "CHSCP" | |
}, | |
{ | |
"Symbol": "CHTR" | |
}, | |
{ | |
"Symbol": "CHUY" | |
}, | |
{ | |
"Symbol": "CHW" | |
}, | |
{ | |
"Symbol": "CHY" | |
}, | |
{ | |
"Symbol": "CIDM" | |
}, | |
{ | |
"Symbol": "CINF" | |
}, | |
{ | |
"Symbol": "CIZ" | |
}, | |
{ | |
"Symbol": "CJJD" | |
}, | |
{ | |
"Symbol": "CLDX" | |
}, | |
{ | |
"Symbol": "CLFD" | |
}, | |
{ | |
"Symbol": "CLIR" | |
}, | |
{ | |
"Symbol": "CLMT" | |
}, | |
{ | |
"Symbol": "CLNE" | |
}, | |
{ | |
"Symbol": "CLRB" | |
}, | |
{ | |
"Symbol": "CLRO" | |
}, | |
{ | |
"Symbol": "CLSN" | |
}, | |
{ | |
"Symbol": "CLVS" | |
}, | |
{ | |
"Symbol": "CLWT" | |
}, | |
{ | |
"Symbol": "CMCO" | |
}, | |
{ | |
"Symbol": "CMCSA" | |
}, | |
{ | |
"Symbol": "CMCT" | |
}, | |
{ | |
"Symbol": "CME" | |
}, | |
{ | |
"Symbol": "CMLS" | |
}, | |
{ | |
"Symbol": "CMPR" | |
}, | |
{ | |
"Symbol": "CMRX" | |
}, | |
{ | |
"Symbol": "CMTL" | |
}, | |
{ | |
"Symbol": "CNBKA" | |
}, | |
{ | |
"Symbol": "CNCE" | |
}, | |
{ | |
"Symbol": "CNET" | |
}, | |
{ | |
"Symbol": "CNMD" | |
}, | |
{ | |
"Symbol": "CNOB" | |
}, | |
{ | |
"Symbol": "CNSL" | |
}, | |
{ | |
"Symbol": "CNTY" | |
}, | |
{ | |
"Symbol": "COHR" | |
}, | |
{ | |
"Symbol": "COHU" | |
}, | |
{ | |
"Symbol": "COKE" | |
}, | |
{ | |
"Symbol": "COLB" | |
}, | |
{ | |
"Symbol": "COLM" | |
}, | |
{ | |
"Symbol": "COMM" | |
}, | |
{ | |
"Symbol": "COMT" | |
}, | |
{ | |
"Symbol": "CONE" | |
}, | |
{ | |
"Symbol": "CONN" | |
}, | |
{ | |
"Symbol": "COOL" | |
}, | |
{ | |
"Symbol": "CORE" | |
}, | |
{ | |
"Symbol": "CORT" | |
}, | |
{ | |
"Symbol": "COST" | |
}, | |
{ | |
"Symbol": "COWN" | |
}, | |
{ | |
"Symbol": "COWNL" | |
}, | |
{ | |
"Symbol": "CPHC" | |
}, | |
{ | |
"Symbol": "CPIX" | |
}, | |
{ | |
"Symbol": "CPLP" | |
}, | |
{ | |
"Symbol": "CPRT" | |
}, | |
{ | |
"Symbol": "CPRX" | |
}, | |
{ | |
"Symbol": "CPSI" | |
}, | |
{ | |
"Symbol": "CPSS" | |
}, | |
{ | |
"Symbol": "CRAI" | |
}, | |
{ | |
"Symbol": "CREE" | |
}, | |
{ | |
"Symbol": "CREG" | |
}, | |
{ | |
"Symbol": "CRESW" | |
}, | |
{ | |
"Symbol": "CRESY" | |
}, | |
{ | |
"Symbol": "CRIS" | |
}, | |
{ | |
"Symbol": "CRMT" | |
}, | |
{ | |
"Symbol": "CRNT" | |
}, | |
{ | |
"Symbol": "CROX" | |
}, | |
{ | |
"Symbol": "CRTO" | |
}, | |
{ | |
"Symbol": "CRUS" | |
}, | |
{ | |
"Symbol": "CRVL" | |
}, | |
{ | |
"Symbol": "CRWS" | |
}, | |
{ | |
"Symbol": "CSCO" | |
}, | |
{ | |
"Symbol": "CSF" | |
}, | |
{ | |
"Symbol": "CSGP" | |
}, | |
{ | |
"Symbol": "CSGS" | |
}, | |
{ | |
"Symbol": "CSII" | |
}, | |
{ | |
"Symbol": "CSIQ" | |
}, | |
{ | |
"Symbol": "CSOD" | |
}, | |
{ | |
"Symbol": "CSPI" | |
}, | |
{ | |
"Symbol": "CSQ" | |
}, | |
{ | |
"Symbol": "CSTE" | |
}, | |
{ | |
"Symbol": "CSWC" | |
}, | |
{ | |
"Symbol": "CTAS" | |
}, | |
{ | |
"Symbol": "CTBI" | |
}, | |
{ | |
"Symbol": "CTG" | |
}, | |
{ | |
"Symbol": "CTHR" | |
}, | |
{ | |
"Symbol": "CTIB" | |
}, | |
{ | |
"Symbol": "CTIC" | |
}, | |
{ | |
"Symbol": "CTRE" | |
}, | |
{ | |
"Symbol": "CTRN" | |
}, | |
{ | |
"Symbol": "CTSH" | |
}, | |
{ | |
"Symbol": "CTSO" | |
}, | |
{ | |
"Symbol": "CTXS" | |
}, | |
{ | |
"Symbol": "CUBA" | |
}, | |
{ | |
"Symbol": "CVBF" | |
}, | |
{ | |
"Symbol": "CVCO" | |
}, | |
{ | |
"Symbol": "CVGI" | |
}, | |
{ | |
"Symbol": "CVGW" | |
}, | |
{ | |
"Symbol": "CVLT" | |
}, | |
{ | |
"Symbol": "CVLY" | |
}, | |
{ | |
"Symbol": "CVV" | |
}, | |
{ | |
"Symbol": "CWBC" | |
}, | |
{ | |
"Symbol": "CWCO" | |
}, | |
{ | |
"Symbol": "CWST" | |
}, | |
{ | |
"Symbol": "CXDC" | |
}, | |
{ | |
"Symbol": "CYAN" | |
}, | |
{ | |
"Symbol": "CYBR" | |
}, | |
{ | |
"Symbol": "CYCC" | |
}, | |
{ | |
"Symbol": "CYTK" | |
}, | |
{ | |
"Symbol": "CZNC" | |
}, | |
{ | |
"Symbol": "CZR" | |
}, | |
{ | |
"Symbol": "CZWI" | |
}, | |
{ | |
"Symbol": "DAIO" | |
}, | |
{ | |
"Symbol": "DAKT" | |
}, | |
{ | |
"Symbol": "DAX" | |
}, | |
{ | |
"Symbol": "DBVT" | |
}, | |
{ | |
"Symbol": "DCOM" | |
}, | |
{ | |
"Symbol": "DCTH" | |
}, | |
{ | |
"Symbol": "DENN" | |
}, | |
{ | |
"Symbol": "DGICA" | |
}, | |
{ | |
"Symbol": "DGICB" | |
}, | |
{ | |
"Symbol": "DGII" | |
}, | |
{ | |
"Symbol": "DGLY" | |
}, | |
{ | |
"Symbol": "DGRE" | |
}, | |
{ | |
"Symbol": "DGRS" | |
}, | |
{ | |
"Symbol": "DGRW" | |
}, | |
{ | |
"Symbol": "DHIL" | |
}, | |
{ | |
"Symbol": "DIOD" | |
}, | |
{ | |
"Symbol": "DISCB" | |
}, | |
{ | |
"Symbol": "DISCK" | |
}, | |
{ | |
"Symbol": "DISH" | |
}, | |
{ | |
"Symbol": "DJCO" | |
}, | |
{ | |
"Symbol": "DLHC" | |
}, | |
{ | |
"Symbol": "DLTR" | |
}, | |
{ | |
"Symbol": "DMLP" | |
}, | |
{ | |
"Symbol": "DMRC" | |
}, | |
{ | |
"Symbol": "DORM" | |
}, | |
{ | |
"Symbol": "DOX" | |
}, | |
{ | |
"Symbol": "DRIV" | |
}, | |
{ | |
"Symbol": "DRNA" | |
}, | |
{ | |
"Symbol": "DRRX" | |
}, | |
{ | |
"Symbol": "DSGX" | |
}, | |
{ | |
"Symbol": "DSPG" | |
}, | |
{ | |
"Symbol": "DSWL" | |
}, | |
{ | |
"Symbol": "DVAX" | |
}, | |
{ | |
"Symbol": "DVCR" | |
}, | |
{ | |
"Symbol": "DWAT" | |
}, | |
{ | |
"Symbol": "DWSN" | |
}, | |
{ | |
"Symbol": "DXCM" | |
}, | |
{ | |
"Symbol": "DXGE" | |
}, | |
{ | |
"Symbol": "DXJS" | |
}, | |
{ | |
"Symbol": "DXLG" | |
}, | |
{ | |
"Symbol": "DXPE" | |
}, | |
{ | |
"Symbol": "DXYN" | |
}, | |
{ | |
"Symbol": "DYNT" | |
}, | |
{ | |
"Symbol": "DYSL" | |
}, | |
{ | |
"Symbol": "EA" | |
}, | |
{ | |
"Symbol": "EAC" | |
}, | |
{ | |
"Symbol": "EBAY" | |
}, | |
{ | |
"Symbol": "EBIX" | |
}, | |
{ | |
"Symbol": "EBMT" | |
}, | |
{ | |
"Symbol": "EBSB" | |
}, | |
{ | |
"Symbol": "EBTC" | |
}, | |
{ | |
"Symbol": "ECHO" | |
}, | |
{ | |
"Symbol": "ECOL" | |
}, | |
{ | |
"Symbol": "ECPG" | |
}, | |
{ | |
"Symbol": "ECTE" | |
}, | |
{ | |
"Symbol": "EDAP" | |
}, | |
{ | |
"Symbol": "EDUC" | |
}, | |
{ | |
"Symbol": "EEFT" | |
}, | |
{ | |
"Symbol": "EEMA" | |
}, | |
{ | |
"Symbol": "EFOI" | |
}, | |
{ | |
"Symbol": "EGAN" | |
}, | |
{ | |
"Symbol": "EGBN" | |
}, | |
{ | |
"Symbol": "EGHT" | |
}, | |
{ | |
"Symbol": "EGLE" | |
}, | |
{ | |
"Symbol": "EGRX" | |
}, | |
{ | |
"Symbol": "EHTH" | |
}, | |
{ | |
"Symbol": "ELSE" | |
}, | |
{ | |
"Symbol": "ELTK" | |
}, | |
{ | |
"Symbol": "EMCB" | |
}, | |
{ | |
"Symbol": "EMCF" | |
}, | |
{ | |
"Symbol": "EMIF" | |
}, | |
{ | |
"Symbol": "EMITF" | |
}, | |
{ | |
"Symbol": "EMKR" | |
}, | |
{ | |
"Symbol": "EML" | |
}, | |
{ | |
"Symbol": "EMMS" | |
}, | |
{ | |
"Symbol": "ENDP" | |
}, | |
{ | |
"Symbol": "ENG" | |
}, | |
{ | |
"Symbol": "ENPH" | |
}, | |
{ | |
"Symbol": "ENSG" | |
}, | |
{ | |
"Symbol": "ENTA" | |
}, | |
{ | |
"Symbol": "ENTR" | |
}, | |
{ | |
"Symbol": "ENVI" | |
}, | |
{ | |
"Symbol": "EPAY" | |
}, | |
{ | |
"Symbol": "EPZM" | |
}, | |
{ | |
"Symbol": "EQIX" | |
}, | |
{ | |
"Symbol": "ERIC" | |
}, | |
{ | |
"Symbol": "ERII" | |
}, | |
{ | |
"Symbol": "ESBK" | |
}, | |
{ | |
"Symbol": "ESCR" | |
}, | |
{ | |
"Symbol": "ESEA" | |
}, | |
{ | |
"Symbol": "ESGR" | |
}, | |
{ | |
"Symbol": "ESLT" | |
}, | |
{ | |
"Symbol": "ESMC" | |
}, | |
{ | |
"Symbol": "ESPR" | |
}, | |
{ | |
"Symbol": "ESSA" | |
}, | |
{ | |
"Symbol": "ESXB" | |
}, | |
{ | |
"Symbol": "EUFN" | |
}, | |
{ | |
"Symbol": "EVK" | |
}, | |
{ | |
"Symbol": "EVLV" | |
}, | |
{ | |
"Symbol": "EVOK" | |
}, | |
{ | |
"Symbol": "EVOL" | |
}, | |
{ | |
"Symbol": "EWBC" | |
}, | |
{ | |
"Symbol": "EXEL" | |
}, | |
{ | |
"Symbol": "EXFO" | |
}, | |
{ | |
"Symbol": "EXLS" | |
}, | |
{ | |
"Symbol": "EXPD" | |
}, | |
{ | |
"Symbol": "EXPE" | |
}, | |
{ | |
"Symbol": "EXPO" | |
}, | |
{ | |
"Symbol": "EXTR" | |
}, | |
{ | |
"Symbol": "EYES" | |
}, | |
{ | |
"Symbol": "EZPW" | |
}, | |
{ | |
"Symbol": "FALC" | |
}, | |
{ | |
"Symbol": "FANG" | |
}, | |
{ | |
"Symbol": "FARM" | |
}, | |
{ | |
"Symbol": "FARO" | |
}, | |
{ | |
"Symbol": "FAST" | |
}, | |
{ | |
"Symbol": "FATE" | |
}, | |
{ | |
"Symbol": "FB" | |
}, | |
{ | |
"Symbol": "FBIZ" | |
}, | |
{ | |
"Symbol": "FBMS" | |
}, | |
{ | |
"Symbol": "FBNC" | |
}, | |
{ | |
"Symbol": "FCAP" | |
}, | |
{ | |
"Symbol": "FCBC" | |
}, | |
{ | |
"Symbol": "FCCO" | |
}, | |
{ | |
"Symbol": "FCEL" | |
}, | |
{ | |
"Symbol": "FCFS" | |
}, | |
{ | |
"Symbol": "FDIV" | |
}, | |
{ | |
"Symbol": "FDUS" | |
}, | |
{ | |
"Symbol": "FEIM" | |
}, | |
{ | |
"Symbol": "FELE" | |
}, | |
{ | |
"Symbol": "FEMB" | |
}, | |
{ | |
"Symbol": "FEUZ" | |
}, | |
{ | |
"Symbol": "FEYE" | |
}, | |
{ | |
"Symbol": "FFBC" | |
}, | |
{ | |
"Symbol": "FFHL" | |
}, | |
{ | |
"Symbol": "FFIC" | |
}, | |
{ | |
"Symbol": "FFIN" | |
}, | |
{ | |
"Symbol": "FFIV" | |
}, | |
{ | |
"Symbol": "FFNW" | |
}, | |
{ | |
"Symbol": "FGEN" | |
}, | |
{ | |
"Symbol": "FIBK" | |
}, | |
{ | |
"Symbol": "FISI" | |
}, | |
{ | |
"Symbol": "FISV" | |
}, | |
{ | |
"Symbol": "FITB" | |
}, | |
{ | |
"Symbol": "FITBI" | |
}, | |
{ | |
"Symbol": "FIVE" | |
}, | |
{ | |
"Symbol": "FIVN" | |
}, | |
{ | |
"Symbol": "FIZZ" | |
}, | |
{ | |
"Symbol": "FLDM" | |
}, | |
{ | |
"Symbol": "FLEX" | |
}, | |
{ | |
"Symbol": "FLIC" | |
}, | |
{ | |
"Symbol": "FLL" | |
}, | |
{ | |
"Symbol": "FLWS" | |
}, | |
{ | |
"Symbol": "FLXN" | |
}, | |
{ | |
"Symbol": "FLXS" | |
}, | |
{ | |
"Symbol": "FMB" | |
}, | |
{ | |
"Symbol": "FMBH" | |
}, | |
{ | |
"Symbol": "FMBI" | |
}, | |
{ | |
"Symbol": "FMNB" | |
}, | |
{ | |
"Symbol": "FNHC" | |
}, | |
{ | |
"Symbol": "FNLC" | |
}, | |
{ | |
"Symbol": "FNRG" | |
}, | |
{ | |
"Symbol": "FOLD" | |
}, | |
{ | |
"Symbol": "FONR" | |
}, | |
{ | |
"Symbol": "FORD" | |
}, | |
{ | |
"Symbol": "FORM" | |
}, | |
{ | |
"Symbol": "FORR" | |
}, | |
{ | |
"Symbol": "FORTY" | |
}, | |
{ | |
"Symbol": "FOSL" | |
}, | |
{ | |
"Symbol": "FOX" | |
}, | |
{ | |
"Symbol": "FOXA" | |
}, | |
{ | |
"Symbol": "FOXF" | |
}, | |
{ | |
"Symbol": "FPXI" | |
}, | |
{ | |
"Symbol": "FRBA" | |
}, | |
{ | |
"Symbol": "FRBK" | |
}, | |
{ | |
"Symbol": "FREE" | |
}, | |
{ | |
"Symbol": "FRGI" | |
}, | |
{ | |
"Symbol": "FRME" | |
}, | |
{ | |
"Symbol": "FRPH" | |
}, | |
{ | |
"Symbol": "FRPT" | |
}, | |
{ | |
"Symbol": "FSBW" | |
}, | |
{ | |
"Symbol": "FSFG" | |
}, | |
{ | |
"Symbol": "FSLR" | |
}, | |
{ | |
"Symbol": "FSTR" | |
}, | |
{ | |
"Symbol": "FTCS" | |
}, | |
{ | |
"Symbol": "FTEK" | |
}, | |
{ | |
"Symbol": "FTGC" | |
}, | |
{ | |
"Symbol": "FTHI" | |
}, | |
{ | |
"Symbol": "FTLB" | |
}, | |
{ | |
"Symbol": "FTNT" | |
}, | |
{ | |
"Symbol": "FTSL" | |
}, | |
{ | |
"Symbol": "FTSM" | |
}, | |
{ | |
"Symbol": "FULT" | |
}, | |
{ | |
"Symbol": "FUNC" | |
}, | |
{ | |
"Symbol": "FUND" | |
}, | |
{ | |
"Symbol": "FV" | |
}, | |
{ | |
"Symbol": "FWP" | |
}, | |
{ | |
"Symbol": "FWRD" | |
}, | |
{ | |
"Symbol": "GABC" | |
}, | |
{ | |
"Symbol": "GAIA" | |
}, | |
{ | |
"Symbol": "GALT" | |
}, | |
{ | |
"Symbol": "GAME" | |
}, | |
{ | |
"Symbol": "GASS" | |
}, | |
{ | |
"Symbol": "GBCI" | |
}, | |
{ | |
"Symbol": "GBDC" | |
}, | |
{ | |
"Symbol": "GBIM" | |
}, | |
{ | |
"Symbol": "GBLI" | |
}, | |
{ | |
"Symbol": "GCBC" | |
}, | |
{ | |
"Symbol": "GENC" | |
}, | |
{ | |
"Symbol": "GENE" | |
}, | |
{ | |
"Symbol": "GEOS" | |
}, | |
{ | |
"Symbol": "GERN" | |
}, | |
{ | |
"Symbol": "GEVO" | |
}, | |
{ | |
"Symbol": "GFED" | |
}, | |
{ | |
"Symbol": "GGAL" | |
}, | |
{ | |
"Symbol": "GIFI" | |
}, | |
{ | |
"Symbol": "GIGA" | |
}, | |
{ | |
"Symbol": "GIGM" | |
}, | |
{ | |
"Symbol": "GIII" | |
}, | |
{ | |
"Symbol": "GILD" | |
}, | |
{ | |
"Symbol": "GILT" | |
}, | |
{ | |
"Symbol": "GK" | |
}, | |
{ | |
"Symbol": "GLAD" | |
}, | |
{ | |
"Symbol": "GLBS" | |
}, | |
{ | |
"Symbol": "GLBZ" | |
}, | |
{ | |
"Symbol": "GLDD" | |
}, | |
{ | |
"Symbol": "GLDI" | |
}, | |
{ | |
"Symbol": "GLMD" | |
}, | |
{ | |
"Symbol": "GLNG" | |
}, | |
{ | |
"Symbol": "GLPI" | |
}, | |
{ | |
"Symbol": "GLRE" | |
}, | |
{ | |
"Symbol": "GLRI" | |
}, | |
{ | |
"Symbol": "GLYC" | |
}, | |
{ | |
"Symbol": "GNMA" | |
}, | |
{ | |
"Symbol": "GNTX" | |
}, | |
{ | |
"Symbol": "GOGO" | |
}, | |
{ | |
"Symbol": "GOLD" | |
}, | |
{ | |
"Symbol": "GOOD" | |
}, | |
{ | |
"Symbol": "GOODN" | |
}, | |
{ | |
"Symbol": "GOODO" | |
}, | |
{ | |
"Symbol": "GOOG" | |
}, | |
{ | |
"Symbol": "GOOGL" | |
}, | |
{ | |
"Symbol": "GPOR" | |
}, | |
{ | |
"Symbol": "GPRE" | |
}, | |
{ | |
"Symbol": "GPRO" | |
}, | |
{ | |
"Symbol": "GRBK" | |
}, | |
{ | |
"Symbol": "GRFS" | |
}, | |
{ | |
"Symbol": "GRID" | |
}, | |
{ | |
"Symbol": "GRMN" | |
}, | |
{ | |
"Symbol": "GROW" | |
}, | |
{ | |
"Symbol": "GRVY" | |
}, | |
{ | |
"Symbol": "GSBC" | |
}, | |
{ | |
"Symbol": "GSIG" | |
}, | |
{ | |
"Symbol": "GSIT" | |
}, | |
{ | |
"Symbol": "GSM" | |
}, | |
{ | |
"Symbol": "GT" | |
}, | |
{ | |
"Symbol": "GTIM" | |
}, | |
{ | |
"Symbol": "GTLS" | |
}, | |
{ | |
"Symbol": "GULTU" | |
}, | |
{ | |
"Symbol": "GURE" | |
}, | |
{ | |
"Symbol": "GWGH" | |
}, | |
{ | |
"Symbol": "GYRO" | |
}, | |
{ | |
"Symbol": "HA" | |
}, | |
{ | |
"Symbol": "HAFC" | |
}, | |
{ | |
"Symbol": "HAIN" | |
}, | |
{ | |
"Symbol": "HALL" | |
}, | |
{ | |
"Symbol": "HALO" | |
}, | |
{ | |
"Symbol": "HART" | |
}, | |
{ | |
"Symbol": "HAS" | |
}, | |
{ | |
"Symbol": "HAYN" | |
}, | |
{ | |
"Symbol": "HBAN" | |
}, | |
{ | |
"Symbol": "HBANP" | |
}, | |
{ | |
"Symbol": "HBCP" | |
}, | |
{ | |
"Symbol": "HBIO" | |
}, | |
{ | |
"Symbol": "HBMD" | |
}, | |
{ | |
"Symbol": "HBNC" | |
}, | |
{ | |
"Symbol": "HBP" | |
}, | |
{ | |
"Symbol": "HCCI" | |
}, | |
{ | |
"Symbol": "HCKT" | |
}, | |
{ | |
"Symbol": "HCSG" | |
}, | |
{ | |
"Symbol": "HEAR" | |
}, | |
{ | |
"Symbol": "HEES" | |
}, | |
{ | |
"Symbol": "HELE" | |
}, | |
{ | |
"Symbol": "HERO" | |
}, | |
{ | |
"Symbol": "HFBL" | |
}, | |
{ | |
"Symbol": "HFWA" | |
}, | |
{ | |
"Symbol": "HGSH" | |
}, | |
{ | |
"Symbol": "HIBB" | |
}, | |
{ | |
"Symbol": "HIFS" | |
}, | |
{ | |
"Symbol": "HIHO" | |
}, | |
{ | |
"Symbol": "HIMX" | |
}, | |
{ | |
"Symbol": "HLIT" | |
}, | |
{ | |
"Symbol": "HMHC" | |
}, | |
{ | |
"Symbol": "HMNF" | |
}, | |
{ | |
"Symbol": "HMNY" | |
}, | |
{ | |
"Symbol": "HMST" | |
}, | |
{ | |
"Symbol": "HMTV" | |
}, | |
{ | |
"Symbol": "HNNA" | |
}, | |
{ | |
"Symbol": "HNRG" | |
}, | |
{ | |
"Symbol": "HOFT" | |
}, | |
{ | |
"Symbol": "HOLI" | |
}, | |
{ | |
"Symbol": "HOLX" | |
}, | |
{ | |
"Symbol": "HOMB" | |
}, | |
{ | |
"Symbol": "HOVNP" | |
}, | |
{ | |
"Symbol": "HQY" | |
}, | |
{ | |
"Symbol": "HRTX" | |
}, | |
{ | |
"Symbol": "HSIC" | |
}, | |
{ | |
"Symbol": "HSII" | |
}, | |
{ | |
"Symbol": "HSKA" | |
}, | |
{ | |
"Symbol": "HSON" | |
}, | |
{ | |
"Symbol": "HSTM" | |
}, | |
{ | |
"Symbol": "HTBI" | |
}, | |
{ | |
"Symbol": "HTBK" | |
}, | |
{ | |
"Symbol": "HTBX" | |
}, | |
{ | |
"Symbol": "HTHT" | |
}, | |
{ | |
"Symbol": "HTLD" | |
}, | |
{ | |
"Symbol": "HUBG" | |
}, | |
{ | |
"Symbol": "HURC" | |
}, | |
{ | |
"Symbol": "HURN" | |
}, | |
{ | |
"Symbol": "HWBK" | |
}, | |
{ | |
"Symbol": "HWKN" | |
}, | |
{ | |
"Symbol": "HYLS" | |
}, | |
{ | |
"Symbol": "HYZD" | |
}, | |
{ | |
"Symbol": "IART" | |
}, | |
{ | |
"Symbol": "IBB" | |
}, | |
{ | |
"Symbol": "IBCP" | |
}, | |
{ | |
"Symbol": "IBKR" | |
}, | |
{ | |
"Symbol": "IBOC" | |
}, | |
{ | |
"Symbol": "IBTX" | |
}, | |
{ | |
"Symbol": "ICCC" | |
}, | |
{ | |
"Symbol": "ICFI" | |
}, | |
{ | |
"Symbol": "ICLD" | |
}, | |
{ | |
"Symbol": "ICLN" | |
}, | |
{ | |
"Symbol": "ICPT" | |
}, | |
{ | |
"Symbol": "IDCC" | |
}, | |
{ | |
"Symbol": "IDRA" | |
}, | |
{ | |
"Symbol": "IDXX" | |
}, | |
{ | |
"Symbol": "IEP" | |
}, | |
{ | |
"Symbol": "IESC" | |
}, | |
{ | |
"Symbol": "IEUS" | |
}, | |
{ | |
"Symbol": "IFGL" | |
}, | |
{ | |
"Symbol": "IFV" | |
}, | |
{ | |
"Symbol": "IGLD" | |
}, | |
{ | |
"Symbol": "IGOV" | |
}, | |
{ | |
"Symbol": "III" | |
}, | |
{ | |
"Symbol": "IIIN" | |
}, | |
{ | |
"Symbol": "IIN" | |
}, | |
{ | |
"Symbol": "IIVI" | |
}, | |
{ | |
"Symbol": "IKNX" | |
}, | |
{ | |
"Symbol": "ILMN" | |
}, | |
{ | |
"Symbol": "IMGN" | |
}, | |
{ | |
"Symbol": "IMKTA" | |
}, | |
{ | |
"Symbol": "IMMR" | |
}, | |
{ | |
"Symbol": "IMOS" | |
}, | |
{ | |
"Symbol": "INBK" | |
}, | |
{ | |
"Symbol": "INCY" | |
}, | |
{ | |
"Symbol": "INDB" | |
}, | |
{ | |
"Symbol": "INDY" | |
}, | |
{ | |
"Symbol": "INFI" | |
}, | |
{ | |
"Symbol": "INFN" | |
}, | |
{ | |
"Symbol": "INGN" | |
}, | |
{ | |
"Symbol": "INO" | |
}, | |
{ | |
"Symbol": "INOD" | |
}, | |
{ | |
"Symbol": "INSM" | |
}, | |
{ | |
"Symbol": "INTC" | |
}, | |
{ | |
"Symbol": "INTG" | |
}, | |
{ | |
"Symbol": "INTU" | |
}, | |
{ | |
"Symbol": "INVE" | |
}, | |
{ | |
"Symbol": "INVT" | |
}, | |
{ | |
"Symbol": "IOSP" | |
}, | |
{ | |
"Symbol": "IPAR" | |
}, | |
{ | |
"Symbol": "IPDN" | |
}, | |
{ | |
"Symbol": "IPGP" | |
}, | |
{ | |
"Symbol": "IPKW" | |
}, | |
{ | |
"Symbol": "IPWR" | |
}, | |
{ | |
"Symbol": "IRBT" | |
}, | |
{ | |
"Symbol": "IRDM" | |
}, | |
{ | |
"Symbol": "IRIX" | |
}, | |
{ | |
"Symbol": "IRMD" | |
}, | |
{ | |
"Symbol": "IROQ" | |
}, | |
{ | |
"Symbol": "IRWD" | |
}, | |
{ | |
"Symbol": "ISBC" | |
}, | |
{ | |
"Symbol": "ISHG" | |
}, | |
{ | |
"Symbol": "ISIG" | |
}, | |
{ | |
"Symbol": "ISLE" | |
}, | |
{ | |
"Symbol": "ISRG" | |
}, | |
{ | |
"Symbol": "ISSC" | |
}, | |
{ | |
"Symbol": "ISTR" | |
}, | |
{ | |
"Symbol": "ITCI" | |
}, | |
{ | |
"Symbol": "ITIC" | |
}, | |
{ | |
"Symbol": "ITRI" | |
}, | |
{ | |
"Symbol": "ITRN" | |
}, | |
{ | |
"Symbol": "IVAN" | |
}, | |
{ | |
"Symbol": "JACK" | |
}, | |
{ | |
"Symbol": "JAKK" | |
}, | |
{ | |
"Symbol": "JAZZ" | |
}, | |
{ | |
"Symbol": "JBHT" | |
}, | |
{ | |
"Symbol": "JBLU" | |
}, | |
{ | |
"Symbol": "JBSS" | |
}, | |
{ | |
"Symbol": "JCOM" | |
}, | |
{ | |
"Symbol": "JCS" | |
}, | |
{ | |
"Symbol": "JCTCF" | |
}, | |
{ | |
"Symbol": "JD" | |
}, | |
{ | |
"Symbol": "JJSF" | |
}, | |
{ | |
"Symbol": "JKHY" | |
}, | |
{ | |
"Symbol": "JOBS" | |
}, | |
{ | |
"Symbol": "JOUT" | |
}, | |
{ | |
"Symbol": "JRJC" | |
}, | |
{ | |
"Symbol": "JRVR" | |
}, | |
{ | |
"Symbol": "JSM" | |
}, | |
{ | |
"Symbol": "JVA" | |
}, | |
{ | |
"Symbol": "JYNT" | |
}, | |
{ | |
"Symbol": "KALU" | |
}, | |
{ | |
"Symbol": "KBAL" | |
}, | |
{ | |
"Symbol": "KBSF" | |
}, | |
{ | |
"Symbol": "KCLI" | |
}, | |
{ | |
"Symbol": "KE" | |
}, | |
{ | |
"Symbol": "KELYA" | |
}, | |
{ | |
"Symbol": "KELYB" | |
}, | |
{ | |
"Symbol": "KEQU" | |
}, | |
{ | |
"Symbol": "KFFB" | |
}, | |
{ | |
"Symbol": "KFRC" | |
}, | |
{ | |
"Symbol": "KGJI" | |
}, | |
{ | |
"Symbol": "KIN" | |
}, | |
{ | |
"Symbol": "KINS" | |
}, | |
{ | |
"Symbol": "KIRK" | |
}, | |
{ | |
"Symbol": "KLAC" | |
}, | |
{ | |
"Symbol": "KLIC" | |
}, | |
{ | |
"Symbol": "KMDA" | |
}, | |
{ | |
"Symbol": "KNDI" | |
}, | |
{ | |
"Symbol": "KONA" | |
}, | |
{ | |
"Symbol": "KOPN" | |
}, | |
{ | |
"Symbol": "KOSS" | |
}, | |
{ | |
"Symbol": "KPTI" | |
}, | |
{ | |
"Symbol": "KRNY" | |
}, | |
{ | |
"Symbol": "KTCC" | |
}, | |
{ | |
"Symbol": "KTEC" | |
}, | |
{ | |
"Symbol": "KTOS" | |
}, | |
{ | |
"Symbol": "KVHI" | |
}, | |
{ | |
"Symbol": "KWEB" | |
}, | |
{ | |
"Symbol": "LAKE" | |
}, | |
{ | |
"Symbol": "LAMR" | |
}, | |
{ | |
"Symbol": "LANC" | |
}, | |
{ | |
"Symbol": "LAND" | |
}, | |
{ | |
"Symbol": "LARK" | |
}, | |
{ | |
"Symbol": "LAWS" | |
}, | |
{ | |
"Symbol": "LBAI" | |
}, | |
{ | |
"Symbol": "LBRDA" | |
}, | |
{ | |
"Symbol": "LBRDK" | |
}, | |
{ | |
"Symbol": "LBTYA" | |
}, | |
{ | |
"Symbol": "LBTYB" | |
}, | |
{ | |
"Symbol": "LBTYK" | |
}, | |
{ | |
"Symbol": "LCNB" | |
}, | |
{ | |
"Symbol": "LE" | |
}, | |
{ | |
"Symbol": "LECO" | |
}, | |
{ | |
"Symbol": "LFUS" | |
}, | |
{ | |
"Symbol": "LFVN" | |
}, | |
{ | |
"Symbol": "LGIH" | |
}, | |
{ | |
"Symbol": "LGND" | |
}, | |
{ | |
"Symbol": "LHCG" | |
}, | |
{ | |
"Symbol": "LINC" | |
}, | |
{ | |
"Symbol": "LIVE" | |
}, | |
{ | |
"Symbol": "LJPC" | |
}, | |
{ | |
"Symbol": "LKFN" | |
}, | |
{ | |
"Symbol": "LKQ" | |
}, | |
{ | |
"Symbol": "LLNW" | |
}, | |
{ | |
"Symbol": "LMAT" | |
}, | |
{ | |
"Symbol": "LMBS" | |
}, | |
{ | |
"Symbol": "LMNR" | |
}, | |
{ | |
"Symbol": "LMRK" | |
}, | |
{ | |
"Symbol": "LNDC" | |
}, | |
{ | |
"Symbol": "LOAN" | |
}, | |
{ | |
"Symbol": "LOCO" | |
}, | |
{ | |
"Symbol": "LOGI" | |
}, | |
{ | |
"Symbol": "LOPE" | |
}, | |
{ | |
"Symbol": "LORL" | |
}, | |
{ | |
"Symbol": "LPCN" | |
}, | |
{ | |
"Symbol": "LPLA" | |
}, | |
{ | |
"Symbol": "LPSN" | |
}, | |
{ | |
"Symbol": "LPTH" | |
}, | |
{ | |
"Symbol": "LQDT" | |
}, | |
{ | |
"Symbol": "LRCX" | |
}, | |
{ | |
"Symbol": "LSBK" | |
}, | |
{ | |
"Symbol": "LSCC" | |
}, | |
{ | |
"Symbol": "LSTR" | |
}, | |
{ | |
"Symbol": "LTBR" | |
}, | |
{ | |
"Symbol": "LTRE" | |
}, | |
{ | |
"Symbol": "LTRPB" | |
}, | |
{ | |
"Symbol": "LTRX" | |
}, | |
{ | |
"Symbol": "LULU" | |
}, | |
{ | |
"Symbol": "LUNA" | |
}, | |
{ | |
"Symbol": "LWAY" | |
}, | |
{ | |
"Symbol": "LXRX" | |
}, | |
{ | |
"Symbol": "LYTS" | |
}, | |
{ | |
"Symbol": "MACK" | |
}, | |
{ | |
"Symbol": "MAG" | |
}, | |
{ | |
"Symbol": "MAGS" | |
}, | |
{ | |
"Symbol": "MANH" | |
}, | |
{ | |
"Symbol": "MANT" | |
}, | |
{ | |
"Symbol": "MAR" | |
}, | |
{ | |
"Symbol": "MARA" | |
}, | |
{ | |
"Symbol": "MARK" | |
}, | |
{ | |
"Symbol": "MASI" | |
}, | |
{ | |
"Symbol": "MAT" | |
}, | |
{ | |
"Symbol": "MATW" | |
}, | |
{ | |
"Symbol": "MAYS" | |
}, | |
{ | |
"Symbol": "MBCN" | |
}, | |
{ | |
"Symbol": "MBII" | |
}, | |
{ | |
"Symbol": "MBSD" | |
}, | |
{ | |
"Symbol": "MBUU" | |
}, | |
{ | |
"Symbol": "MBWM" | |
}, | |
{ | |
"Symbol": "MCBC" | |
}, | |
{ | |
"Symbol": "MCBK" | |
}, | |
{ | |
"Symbol": "MCHP" | |
}, | |
{ | |
"Symbol": "MCHX" | |
}, | |
{ | |
"Symbol": "MCRI" | |
}, | |
{ | |
"Symbol": "MDIV" | |
}, | |
{ | |
"Symbol": "MDLZ" | |
}, | |
{ | |
"Symbol": "MDRX" | |
}, | |
{ | |
"Symbol": "MDWD" | |
}, | |
{ | |
"Symbol": "MDXG" | |
}, | |
{ | |
"Symbol": "MEIL" | |
}, | |
{ | |
"Symbol": "MEIP" | |
}, | |
{ | |
"Symbol": "MELI" | |
}, | |
{ | |
"Symbol": "MEOH" | |
}, | |
{ | |
"Symbol": "MERC" | |
}, | |
{ | |
"Symbol": "MFNC" | |
}, | |
{ | |
"Symbol": "MGEE" | |
}, | |
{ | |
"Symbol": "MGI" | |
}, | |
{ | |
"Symbol": "MGIC" | |
}, | |
{ | |
"Symbol": "MGLN" | |
}, | |
{ | |
"Symbol": "MGNX" | |
}, | |
{ | |
"Symbol": "MGPI" | |
}, | |
{ | |
"Symbol": "MGRC" | |
}, | |
{ | |
"Symbol": "MGYR" | |
}, | |
{ | |
"Symbol": "MHLD" | |
}, | |
{ | |
"Symbol": "MICT" | |
}, | |
{ | |
"Symbol": "MIDD" | |
}, | |
{ | |
"Symbol": "MIND" | |
}, | |
{ | |
"Symbol": "MITK" | |
}, | |
{ | |
"Symbol": "MKSI" | |
}, | |
{ | |
"Symbol": "MKTX" | |
}, | |
{ | |
"Symbol": "MLAB" | |
}, | |
{ | |
"Symbol": "MLHR" | |
}, | |
{ | |
"Symbol": "MLNK" | |
}, | |
{ | |
"Symbol": "MLVF" | |
}, | |
{ | |
"Symbol": "MMLP" | |
}, | |
{ | |
"Symbol": "MMSI" | |
}, | |
{ | |
"Symbol": "MMYT" | |
}, | |
{ | |
"Symbol": "MNDO" | |
}, | |
{ | |
"Symbol": "MNKD" | |
}, | |
{ | |
"Symbol": "MNOV" | |
}, | |
{ | |
"Symbol": "MNRO" | |
}, | |
{ | |
"Symbol": "MNST" | |
}, | |
{ | |
"Symbol": "MNTX" | |
}, | |
{ | |
"Symbol": "MOFG" | |
}, | |
{ | |
"Symbol": "MOMO" | |
}, | |
{ | |
"Symbol": "MORN" | |
}, | |
{ | |
"Symbol": "MOSY" | |
}, | |
{ | |
"Symbol": "MPAA" | |
}, | |
{ | |
"Symbol": "MPB" | |
}, | |
{ | |
"Symbol": "MPWR" | |
}, | |
{ | |
"Symbol": "MRCC" | |
}, | |
{ | |
"Symbol": "MRLN" | |
}, | |
{ | |
"Symbol": "MRNS" | |
}, | |
{ | |
"Symbol": "MRTN" | |
}, | |
{ | |
"Symbol": "MRTX" | |
}, | |
{ | |
"Symbol": "MRVL" | |
}, | |
{ | |
"Symbol": "MSEX" | |
}, | |
{ | |
"Symbol": "MSFT" | |
}, | |
{ | |
"Symbol": "MSON" | |
}, | |
{ | |
"Symbol": "MSTR" | |
}, | |
{ | |
"Symbol": "MTBC" | |
}, | |
{ | |
"Symbol": "MTEX" | |
}, | |
{ | |
"Symbol": "MTLS" | |
}, | |
{ | |
"Symbol": "MTRX" | |
}, | |
{ | |
"Symbol": "MTSI" | |
}, | |
{ | |
"Symbol": "MU" | |
}, | |
{ | |
"Symbol": "MVIS" | |
}, | |
{ | |
"Symbol": "MXIM" | |
}, | |
{ | |
"Symbol": "MYGN" | |
}, | |
{ | |
"Symbol": "MYRG" | |
}, | |
{ | |
"Symbol": "NAII" | |
}, | |
{ | |
"Symbol": "NATH" | |
}, | |
{ | |
"Symbol": "NATI" | |
}, | |
{ | |
"Symbol": "NATR" | |
}, | |
{ | |
"Symbol": "NAUH" | |
}, | |
{ | |
"Symbol": "NAVI" | |
}, | |
{ | |
"Symbol": "NBIX" | |
}, | |
{ | |
"Symbol": "NBN" | |
}, | |
{ | |
"Symbol": "NBTB" | |
}, | |
{ | |
"Symbol": "NCLH" | |
}, | |
{ | |
"Symbol": "NCMI" | |
}, | |
{ | |
"Symbol": "NCTY" | |
}, | |
{ | |
"Symbol": "NDAQ" | |
}, | |
{ | |
"Symbol": "NDLS" | |
}, | |
{ | |
"Symbol": "NDSN" | |
}, | |
{ | |
"Symbol": "NECB" | |
}, | |
{ | |
"Symbol": "NEO" | |
}, | |
{ | |
"Symbol": "NEOG" | |
}, | |
{ | |
"Symbol": "NEON" | |
}, | |
{ | |
"Symbol": "NEPT" | |
}, | |
{ | |
"Symbol": "NERV" | |
}, | |
{ | |
"Symbol": "NETE" | |
}, | |
{ | |
"Symbol": "NEWP" | |
}, | |
{ | |
"Symbol": "NEWT" | |
}, | |
{ | |
"Symbol": "NFBK" | |
}, | |
{ | |
"Symbol": "NFLX" | |
}, | |
{ | |
"Symbol": "NICE" | |
}, | |
{ | |
"Symbol": "NICK" | |
}, | |
{ | |
"Symbol": "NKSH" | |
}, | |
{ | |
"Symbol": "NKTR" | |
}, | |
{ | |
"Symbol": "NLST" | |
}, | |
{ | |
"Symbol": "NMIH" | |
}, | |
{ | |
"Symbol": "NNBR" | |
}, | |
{ | |
"Symbol": "NRIM" | |
}, | |
{ | |
"Symbol": "NSEC" | |
}, | |
{ | |
"Symbol": "NSIT" | |
}, | |
{ | |
"Symbol": "NSSC" | |
}, | |
{ | |
"Symbol": "NSTG" | |
}, | |
{ | |
"Symbol": "NSYS" | |
}, | |
{ | |
"Symbol": "NTAP" | |
}, | |
{ | |
"Symbol": "NTCT" | |
}, | |
{ | |
"Symbol": "NTES" | |
}, | |
{ | |
"Symbol": "NTIC" | |
}, | |
{ | |
"Symbol": "NTRS" | |
}, | |
{ | |
"Symbol": "NTWK" | |
}, | |
{ | |
"Symbol": "NUAN" | |
}, | |
{ | |
"Symbol": "NURO" | |
}, | |
{ | |
"Symbol": "NUVA" | |
}, | |
{ | |
"Symbol": "NVCN" | |
}, | |
{ | |
"Symbol": "NVDA" | |
}, | |
{ | |
"Symbol": "NVEC" | |
}, | |
{ | |
"Symbol": "NVEE" | |
}, | |
{ | |
"Symbol": "NVFY" | |
}, | |
{ | |
"Symbol": "NVMI" | |
}, | |
{ | |
"Symbol": "NWBI" | |
}, | |
{ | |
"Symbol": "NWBO" | |
}, | |
{ | |
"Symbol": "NWFL" | |
}, | |
{ | |
"Symbol": "NWLI" | |
}, | |
{ | |
"Symbol": "NWPX" | |
}, | |
{ | |
"Symbol": "NWS" | |
}, | |
{ | |
"Symbol": "NWSA" | |
}, | |
{ | |
"Symbol": "NXPI" | |
}, | |
{ | |
"Symbol": "NXST" | |
}, | |
{ | |
"Symbol": "NXTD" | |
}, | |
{ | |
"Symbol": "NYMT" | |
}, | |
{ | |
"Symbol": "NYMTP" | |
}, | |
{ | |
"Symbol": "NYMX" | |
}, | |
{ | |
"Symbol": "OBAS" | |
}, | |
{ | |
"Symbol": "OBCI" | |
}, | |
{ | |
"Symbol": "OCC" | |
}, | |
{ | |
"Symbol": "OCFC" | |
}, | |
{ | |
"Symbol": "OCUL" | |
}, | |
{ | |
"Symbol": "ODFL" | |
}, | |
{ | |
"Symbol": "ODP" | |
}, | |
{ | |
"Symbol": "OFED" | |
}, | |
{ | |
"Symbol": "OFIX" | |
}, | |
{ | |
"Symbol": "OFLX" | |
}, | |
{ | |
"Symbol": "OFS" | |
}, | |
{ | |
"Symbol": "OIIM" | |
}, | |
{ | |
"Symbol": "OLED" | |
}, | |
{ | |
"Symbol": "OMAB" | |
}, | |
{ | |
"Symbol": "OMCL" | |
}, | |
{ | |
"Symbol": "OMER" | |
}, | |
{ | |
"Symbol": "OMEX" | |
}, | |
{ | |
"Symbol": "ONB" | |
}, | |
{ | |
"Symbol": "ONEQ" | |
}, | |
{ | |
"Symbol": "ONTX" | |
}, | |
{ | |
"Symbol": "OPHC" | |
}, | |
{ | |
"Symbol": "OPOF" | |
}, | |
{ | |
"Symbol": "OPTT" | |
}, | |
{ | |
"Symbol": "ORBC" | |
}, | |
{ | |
"Symbol": "ORLY" | |
}, | |
{ | |
"Symbol": "ORMP" | |
}, | |
{ | |
"Symbol": "ORRF" | |
}, | |
{ | |
"Symbol": "OSBC" | |
}, | |
{ | |
"Symbol": "OSIS" | |
}, | |
{ | |
"Symbol": "OSN" | |
}, | |
{ | |
"Symbol": "OSTK" | |
}, | |
{ | |
"Symbol": "OSUR" | |
}, | |
{ | |
"Symbol": "OTEX" | |
}, | |
{ | |
"Symbol": "OTIC" | |
}, | |
{ | |
"Symbol": "OTTR" | |
}, | |
{ | |
"Symbol": "OVBC" | |
}, | |
{ | |
"Symbol": "OXBR" | |
}, | |
{ | |
"Symbol": "OXBRW" | |
}, | |
{ | |
"Symbol": "OXLC" | |
}, | |
{ | |
"Symbol": "OXLCP" | |
}, | |
{ | |
"Symbol": "PAAS" | |
}, | |
{ | |
"Symbol": "PACB" | |
}, | |
{ | |
"Symbol": "PACW" | |
}, | |
{ | |
"Symbol": "PAHC" | |
}, | |
{ | |
"Symbol": "PANL" | |
}, | |
{ | |
"Symbol": "PATK" | |
}, | |
{ | |
"Symbol": "PAYX" | |
}, | |
{ | |
"Symbol": "PBCT" | |
}, | |
{ | |
"Symbol": "PBHC" | |
}, | |
{ | |
"Symbol": "PBIP" | |
}, | |
{ | |
"Symbol": "PBPB" | |
}, | |
{ | |
"Symbol": "PCAR" | |
}, | |
{ | |
"Symbol": "PCH" | |
}, | |
{ | |
"Symbol": "PCOM" | |
}, | |
{ | |
"Symbol": "PCRX" | |
}, | |
{ | |
"Symbol": "PCTI" | |
}, | |
{ | |
"Symbol": "PCTY" | |
}, | |
{ | |
"Symbol": "PCYG" | |
}, | |
{ | |
"Symbol": "PDBC" | |
}, | |
{ | |
"Symbol": "PDCE" | |
}, | |
{ | |
"Symbol": "PDCO" | |
}, | |
{ | |
"Symbol": "PDEX" | |
}, | |
{ | |
"Symbol": "PDFS" | |
}, | |
{ | |
"Symbol": "PEBK" | |
}, | |
{ | |
"Symbol": "PEBO" | |
}, | |
{ | |
"Symbol": "PEGA" | |
}, | |
{ | |
"Symbol": "PENN" | |
}, | |
{ | |
"Symbol": "PERI" | |
}, | |
{ | |
"Symbol": "PESI" | |
}, | |
{ | |
"Symbol": "PETS" | |
}, | |
{ | |
"Symbol": "PFBC" | |
}, | |
{ | |
"Symbol": "PFBI" | |
}, | |
{ | |
"Symbol": "PFBX" | |
}, | |
{ | |
"Symbol": "PFIE" | |
}, | |
{ | |
"Symbol": "PFIN" | |
}, | |
{ | |
"Symbol": "PFIS" | |
}, | |
{ | |
"Symbol": "PFLT" | |
}, | |
{ | |
"Symbol": "PFMT" | |
}, | |
{ | |
"Symbol": "PFPT" | |
}, | |
{ | |
"Symbol": "PFSW" | |
}, | |
{ | |
"Symbol": "PGC" | |
}, | |
{ | |
"Symbol": "PGTI" | |
}, | |
{ | |
"Symbol": "PINC" | |
}, | |
{ | |
"Symbol": "PKBK" | |
}, | |
{ | |
"Symbol": "PKOH" | |
}, | |
{ | |
"Symbol": "PLAB" | |
}, | |
{ | |
"Symbol": "PLAY" | |
}, | |
{ | |
"Symbol": "PLBC" | |
}, | |
{ | |
"Symbol": "PLCE" | |
}, | |
{ | |
"Symbol": "PLPC" | |
}, | |
{ | |
"Symbol": "PLTM" | |
}, | |
{ | |
"Symbol": "PLUG" | |
}, | |
{ | |
"Symbol": "PLUS" | |
}, | |
{ | |
"Symbol": "PLXS" | |
}, | |
{ | |
"Symbol": "PMBC" | |
}, | |
{ | |
"Symbol": "PMD" | |
}, | |
{ | |
"Symbol": "PME" | |
}, | |
{ | |
"Symbol": "PNBK" | |
}, | |
{ | |
"Symbol": "PNFP" | |
}, | |
{ | |
"Symbol": "PNNT" | |
}, | |
{ | |
"Symbol": "PNQI" | |
}, | |
{ | |
"Symbol": "PNRG" | |
}, | |
{ | |
"Symbol": "PODD" | |
}, | |
{ | |
"Symbol": "POOL" | |
}, | |
{ | |
"Symbol": "POWI" | |
}, | |
{ | |
"Symbol": "POWL" | |
}, | |
{ | |
"Symbol": "PPBI" | |
}, | |
{ | |
"Symbol": "PPC" | |
}, | |
{ | |
"Symbol": "PPSI" | |
}, | |
{ | |
"Symbol": "PRAA" | |
}, | |
{ | |
"Symbol": "PRFT" | |
}, | |
{ | |
"Symbol": "PRFZ" | |
}, | |
{ | |
"Symbol": "PRGS" | |
}, | |
{ | |
"Symbol": "PRIM" | |
}, | |
{ | |
"Symbol": "PRKR" | |
}, | |
{ | |
"Symbol": "PRMW" | |
}, | |
{ | |
"Symbol": "PROV" | |
}, | |
{ | |
"Symbol": "PRQR" | |
}, | |
{ | |
"Symbol": "PRTA" | |
}, | |
{ | |
"Symbol": "PRTS" | |
}, | |
{ | |
"Symbol": "PSCC" | |
}, | |
{ | |
"Symbol": "PSCD" | |
}, | |
{ | |
"Symbol": "PSCE" | |
}, | |
{ | |
"Symbol": "PSCF" | |
}, | |
{ | |
"Symbol": "PSCH" | |
}, | |
{ | |
"Symbol": "PSCI" | |
}, | |
{ | |
"Symbol": "PSCM" | |
}, | |
{ | |
"Symbol": "PSCT" | |
}, | |
{ | |
"Symbol": "PSEC" | |
}, | |
{ | |
"Symbol": "PSIX" | |
}, | |
{ | |
"Symbol": "PSTI" | |
}, | |
{ | |
"Symbol": "PTC" | |
}, | |
{ | |
"Symbol": "PTCT" | |
}, | |
{ | |
"Symbol": "PTEN" | |
}, | |
{ | |
"Symbol": "PTNR" | |
}, | |
{ | |
"Symbol": "PTSI" | |
}, | |
{ | |
"Symbol": "PWOD" | |
}, | |
{ | |
"Symbol": "PXLW" | |
}, | |
{ | |
"Symbol": "PZZA" | |
}, | |
{ | |
"Symbol": "QABA" | |
}, | |
{ | |
"Symbol": "QADA" | |
}, | |
{ | |
"Symbol": "QADB" | |
}, | |
{ | |
"Symbol": "QAT" | |
}, | |
{ | |
"Symbol": "QBAK" | |
}, | |
{ | |
"Symbol": "QCCO" | |
}, | |
{ | |
"Symbol": "QCLN" | |
}, | |
{ | |
"Symbol": "QCOM" | |
}, | |
{ | |
"Symbol": "QCRH" | |
}, | |
{ | |
"Symbol": "QDEL" | |
}, | |
{ | |
"Symbol": "QGEN" | |
}, | |
{ | |
"Symbol": "QIWI" | |
}, | |
{ | |
"Symbol": "QKLS" | |
}, | |
{ | |
"Symbol": "QLYS" | |
}, | |
{ | |
"Symbol": "QNST" | |
}, | |
{ | |
"Symbol": "QQEW" | |
}, | |
{ | |
"Symbol": "QQQ" | |
}, | |
{ | |
"Symbol": "QQQX" | |
}, | |
{ | |
"Symbol": "QQXT" | |
}, | |
{ | |
"Symbol": "QRHC" | |
}, | |
{ | |
"Symbol": "QRVO" | |
}, | |
{ | |
"Symbol": "QTEC" | |
}, | |
{ | |
"Symbol": "QTNT" | |
}, | |
{ | |
"Symbol": "QUIK" | |
}, | |
{ | |
"Symbol": "QUMU" | |
}, | |
{ | |
"Symbol": "QURE" | |
}, | |
{ | |
"Symbol": "QYLD" | |
}, | |
{ | |
"Symbol": "RADA" | |
}, | |
{ | |
"Symbol": "RAIL" | |
}, | |
{ | |
"Symbol": "RAND" | |
}, | |
{ | |
"Symbol": "RARE" | |
}, | |
{ | |
"Symbol": "RAVE" | |
}, | |
{ | |
"Symbol": "RAVN" | |
}, | |
{ | |
"Symbol": "RBCN" | |
}, | |
{ | |
"Symbol": "RCII" | |
}, | |
{ | |
"Symbol": "RCKY" | |
}, | |
{ | |
"Symbol": "RCMT" | |
}, | |
{ | |
"Symbol": "RCON" | |
}, | |
{ | |
"Symbol": "RDCM" | |
}, | |
{ | |
"Symbol": "RDHL" | |
}, | |
{ | |
"Symbol": "RDI" | |
}, | |
{ | |
"Symbol": "RDIB" | |
}, | |
{ | |
"Symbol": "RDNT" | |
}, | |
{ | |
"Symbol": "RDUS" | |
}, | |
{ | |
"Symbol": "RDVY" | |
}, | |
{ | |
"Symbol": "RDWR" | |
}, | |
{ | |
"Symbol": "REFR" | |
}, | |
{ | |
"Symbol": "REGI" | |
}, | |
{ | |
"Symbol": "REGN" | |
}, | |
{ | |
"Symbol": "RELL" | |
}, | |
{ | |
"Symbol": "RELV" | |
}, | |
{ | |
"Symbol": "REPH" | |
}, | |
{ | |
"Symbol": "RESN" | |
}, | |
{ | |
"Symbol": "RFIL" | |
}, | |
{ | |
"Symbol": "RGCO" | |
}, | |
{ | |
"Symbol": "RGEN" | |
}, | |
{ | |
"Symbol": "RGLD" | |
}, | |
{ | |
"Symbol": "RGLS" | |
}, | |
{ | |
"Symbol": "RIBT" | |
}, | |
{ | |
"Symbol": "RICK" | |
}, | |
{ | |
"Symbol": "RIGL" | |
}, | |
{ | |
"Symbol": "RITT" | |
}, | |
{ | |
"Symbol": "RMBS" | |
}, | |
{ | |
"Symbol": "RMCF" | |
}, | |
{ | |
"Symbol": "RMTI" | |
}, | |
{ | |
"Symbol": "RNA" | |
}, | |
{ | |
"Symbol": "RNST" | |
}, | |
{ | |
"Symbol": "RNWK" | |
}, | |
{ | |
"Symbol": "ROBO" | |
}, | |
{ | |
"Symbol": "ROCK" | |
}, | |
{ | |
"Symbol": "ROIC" | |
}, | |
{ | |
"Symbol": "ROLL" | |
}, | |
{ | |
"Symbol": "ROST" | |
}, | |
{ | |
"Symbol": "ROYL" | |
}, | |
{ | |
"Symbol": "RPRX" | |
}, | |
{ | |
"Symbol": "RRD" | |
}, | |
{ | |
"Symbol": "RRGB" | |
}, | |
{ | |
"Symbol": "RUSHA" | |
}, | |
{ | |
"Symbol": "RUSHB" | |
}, | |
{ | |
"Symbol": "RUTH" | |
}, | |
{ | |
"Symbol": "RVNC" | |
}, | |
{ | |
"Symbol": "RVSB" | |
}, | |
{ | |
"Symbol": "RWLK" | |
}, | |
{ | |
"Symbol": "RXDX" | |
}, | |
{ | |
"Symbol": "RYAAY" | |
}, | |
{ | |
"Symbol": "SABR" | |
}, | |
{ | |
"Symbol": "SAFM" | |
}, | |
{ | |
"Symbol": "SAFT" | |
}, | |
{ | |
"Symbol": "SAGE" | |
}, | |
{ | |
"Symbol": "SAIA" | |
}, | |
{ | |
"Symbol": "SAL" | |
}, | |
{ | |
"Symbol": "SALM" | |
}, | |
{ | |
"Symbol": "SAMG" | |
}, | |
{ | |
"Symbol": "SANM" | |
}, | |
{ | |
"Symbol": "SANW" | |
}, | |
{ | |
"Symbol": "SASR" | |
}, | |
{ | |
"Symbol": "SATS" | |
}, | |
{ | |
"Symbol": "SAVE" | |
}, | |
{ | |
"Symbol": "SBAC" | |
}, | |
{ | |
"Symbol": "SBCF" | |
}, | |
{ | |
"Symbol": "SBFG" | |
}, | |
{ | |
"Symbol": "SBGI" | |
}, | |
{ | |
"Symbol": "SBLK" | |
}, | |
{ | |
"Symbol": "SBNY" | |
}, | |
{ | |
"Symbol": "SBRA" | |
}, | |
{ | |
"Symbol": "SBSI" | |
}, | |
{ | |
"Symbol": "SBUX" | |
}, | |
{ | |
"Symbol": "SCHL" | |
}, | |
{ | |
"Symbol": "SCHN" | |
}, | |
{ | |
"Symbol": "SCON" | |
}, | |
{ | |
"Symbol": "SCOR" | |
}, | |
{ | |
"Symbol": "SCSC" | |
}, | |
{ | |
"Symbol": "SCTY" | |
}, | |
{ | |
"Symbol": "SCVL" | |
}, | |
{ | |
"Symbol": "SEAC" | |
}, | |
{ | |
"Symbol": "SEED" | |
}, | |
{ | |
"Symbol": "SEIC" | |
}, | |
{ | |
"Symbol": "SENEA" | |
}, | |
{ | |
"Symbol": "SENEB" | |
}, | |
{ | |
"Symbol": "SFBC" | |
}, | |
{ | |
"Symbol": "SFBS" | |
}, | |
{ | |
"Symbol": "SFM" | |
}, | |
{ | |
"Symbol": "SFNC" | |
}, | |
{ | |
"Symbol": "SFST" | |
}, | |
{ | |
"Symbol": "SGC" | |
}, | |
{ | |
"Symbol": "SGEN" | |
}, | |
{ | |
"Symbol": "SGMA" | |
}, | |
{ | |
"Symbol": "SGMO" | |
}, | |
{ | |
"Symbol": "SGMS" | |
}, | |
{ | |
"Symbol": "SGOC" | |
}, | |
{ | |
"Symbol": "SHBI" | |
}, | |
{ | |
"Symbol": "SHEN" | |
}, | |
{ | |
"Symbol": "SHIP" | |
}, | |
{ | |
"Symbol": "SHLD" | |
}, | |
{ | |
"Symbol": "SHOO" | |
}, | |
{ | |
"Symbol": "SIEB" | |
}, | |
{ | |
"Symbol": "SIEN" | |
}, | |
{ | |
"Symbol": "SIFY" | |
}, | |
{ | |
"Symbol": "SIGA" | |
}, | |
{ | |
"Symbol": "SIGI" | |
}, | |
{ | |
"Symbol": "SILC" | |
}, | |
{ | |
"Symbol": "SIMO" | |
}, | |
{ | |
"Symbol": "SINO" | |
}, | |
{ | |
"Symbol": "SIRI" | |
}, | |
{ | |
"Symbol": "SIVB" | |
}, | |
{ | |
"Symbol": "SIXD" | |
}, | |
{ | |
"Symbol": "SKOR" | |
}, | |
{ | |
"Symbol": "SKYW" | |
}, | |
{ | |
"Symbol": "SKYY" | |
}, | |
{ | |
"Symbol": "SLAB" | |
}, | |
{ | |
"Symbol": "SLCT" | |
}, | |
{ | |
"Symbol": "SLGN" | |
}, | |
{ | |
"Symbol": "SLM" | |
}, | |
{ | |
"Symbol": "SLMBP" | |
}, | |
{ | |
"Symbol": "SLP" | |
}, | |
{ | |
"Symbol": "SLRC" | |
}, | |
{ | |
"Symbol": "SLVO" | |
}, | |
{ | |
"Symbol": "SMBC" | |
}, | |
{ | |
"Symbol": "SMCI" | |
}, | |
{ | |
"Symbol": "SMED" | |
}, | |
{ | |
"Symbol": "SMIT" | |
}, | |
{ | |
"Symbol": "SMLR" | |
}, | |
{ | |
"Symbol": "SMMF" | |
}, | |
{ | |
"Symbol": "SMPL" | |
}, | |
{ | |
"Symbol": "SMSI" | |
}, | |
{ | |
"Symbol": "SMTC" | |
}, | |
{ | |
"Symbol": "SNCR" | |
}, | |
{ | |
"Symbol": "SNFCA" | |
}, | |
{ | |
"Symbol": "SNPS" | |
}, | |
{ | |
"Symbol": "SOCL" | |
}, | |
{ | |
"Symbol": "SOFO" | |
}, | |
{ | |
"Symbol": "SOHO" | |
}, | |
{ | |
"Symbol": "SOHU" | |
}, | |
{ | |
"Symbol": "SOXX" | |
}, | |
{ | |
"Symbol": "SP" | |
}, | |
{ | |
"Symbol": "SPCB" | |
}, | |
{ | |
"Symbol": "SPDC" | |
}, | |
{ | |
"Symbol": "SPHS" | |
}, | |
{ | |
"Symbol": "SPLK" | |
}, | |
{ | |
"Symbol": "SPNS" | |
}, | |
{ | |
"Symbol": "SPOK" | |
}, | |
{ | |
"Symbol": "SPPI" | |
}, | |
{ | |
"Symbol": "SPRO" | |
}, | |
{ | |
"Symbol": "SPRT" | |
}, | |
{ | |
"Symbol": "SPSC" | |
}, | |
{ | |
"Symbol": "SPTN" | |
}, | |
{ | |
"Symbol": "SPWH" | |
}, | |
{ | |
"Symbol": "SPWR" | |
}, | |
{ | |
"Symbol": "SQBG" | |
}, | |
{ | |
"Symbol": "SQQQ" | |
}, | |
{ | |
"Symbol": "SRCE" | |
}, | |
{ | |
"Symbol": "SRCL" | |
}, | |
{ | |
"Symbol": "SRDX" | |
}, | |
{ | |
"Symbol": "SREV" | |
}, | |
{ | |
"Symbol": "SRNE" | |
}, | |
{ | |
"Symbol": "SSB" | |
}, | |
{ | |
"Symbol": "SSBI" | |
}, | |
{ | |
"Symbol": "SSYS" | |
}, | |
{ | |
"Symbol": "STAA" | |
}, | |
{ | |
"Symbol": "STBA" | |
}, | |
{ | |
"Symbol": "STEM" | |
}, | |
{ | |
"Symbol": "STFC" | |
}, | |
{ | |
"Symbol": "STKL" | |
}, | |
{ | |
"Symbol": "STLD" | |
}, | |
{ | |
"Symbol": "STMP" | |
}, | |
{ | |
"Symbol": "STRA" | |
}, | |
{ | |
"Symbol": "STRL" | |
}, | |
{ | |
"Symbol": "STRM" | |
}, | |
{ | |
"Symbol": "STRS" | |
}, | |
{ | |
"Symbol": "STRT" | |
}, | |
{ | |
"Symbol": "STX" | |
}, | |
{ | |
"Symbol": "STXS" | |
}, | |
{ | |
"Symbol": "SUMR" | |
}, | |
{ | |
"Symbol": "SUNS" | |
}, | |
{ | |
"Symbol": "SUPN" | |
}, | |
{ | |
"Symbol": "SVA" | |
}, | |
{ | |
"Symbol": "SVBI" | |
}, | |
{ | |
"Symbol": "SVVC" | |
}, | |
{ | |
"Symbol": "SWIR" | |
}, | |
{ | |
"Symbol": "SWKS" | |
}, | |
{ | |
"Symbol": "SYBT" | |
}, | |
{ | |
"Symbol": "SYKE" | |
}, | |
{ | |
"Symbol": "SYNA" | |
}, | |
{ | |
"Symbol": "SYNL" | |
}, | |
{ | |
"Symbol": "SYPR" | |
}, | |
{ | |
"Symbol": "TACT" | |
}, | |
{ | |
"Symbol": "TAIT" | |
}, | |
{ | |
"Symbol": "TAST" | |
}, | |
{ | |
"Symbol": "TATT" | |
}, | |
{ | |
"Symbol": "TAYD" | |
}, | |
{ | |
"Symbol": "TBBK" | |
}, | |
{ | |
"Symbol": "TBIO" | |
}, | |
{ | |
"Symbol": "TBK" | |
}, | |
{ | |
"Symbol": "TBNK" | |
}, | |
{ | |
"Symbol": "TBPH" | |
}, | |
{ | |
"Symbol": "TCBI" | |
}, | |
{ | |
"Symbol": "TCBK" | |
}, | |
{ | |
"Symbol": "TCCO" | |
}, | |
{ | |
"Symbol": "TCFC" | |
}, | |
{ | |
"Symbol": "TCPC" | |
}, | |
{ | |
"Symbol": "TCX" | |
}, | |
{ | |
"Symbol": "TDIV" | |
}, | |
{ | |
"Symbol": "TECH" | |
}, | |
{ | |
"Symbol": "TEDU" | |
}, | |
{ | |
"Symbol": "TENX" | |
}, | |
{ | |
"Symbol": "TESS" | |
}, | |
{ | |
"Symbol": "TFSL" | |
}, | |
{ | |
"Symbol": "TGA" | |
}, | |
{ | |
"Symbol": "TGEN" | |
}, | |
{ | |
"Symbol": "TGLS" | |
}, | |
{ | |
"Symbol": "TGTX" | |
}, | |
{ | |
"Symbol": "THFF" | |
}, | |
{ | |
"Symbol": "THRM" | |
}, | |
{ | |
"Symbol": "THST" | |
}, | |
{ | |
"Symbol": "THTI" | |
}, | |
{ | |
"Symbol": "TIGR" | |
}, | |
{ | |
"Symbol": "TILE" | |
}, | |
{ | |
"Symbol": "TIPT" | |
}, | |
{ | |
"Symbol": "TITN" | |
}, | |
{ | |
"Symbol": "TLOG" | |
}, | |
{ | |
"Symbol": "TNDM" | |
}, | |
{ | |
"Symbol": "TNXP" | |
}, | |
{ | |
"Symbol": "TOPS" | |
}, | |
{ | |
"Symbol": "TORM" | |
}, | |
{ | |
"Symbol": "TOUR" | |
}, | |
{ | |
"Symbol": "TOWN" | |
}, | |
{ | |
"Symbol": "TQQQ" | |
}, | |
{ | |
"Symbol": "TREE" | |
}, | |
{ | |
"Symbol": "TRIB" | |
}, | |
{ | |
"Symbol": "TRIL" | |
}, | |
{ | |
"Symbol": "TRIP" | |
}, | |
{ | |
"Symbol": "TRMB" | |
}, | |
{ | |
"Symbol": "TRMK" | |
}, | |
{ | |
"Symbol": "TRNS" | |
}, | |
{ | |
"Symbol": "TRNX" | |
}, | |
{ | |
"Symbol": "TROW" | |
}, | |
{ | |
"Symbol": "TRS" | |
}, | |
{ | |
"Symbol": "TRST" | |
}, | |
{ | |
"Symbol": "TRUE" | |
}, | |
{ | |
"Symbol": "TRVN" | |
}, | |
{ | |
"Symbol": "TSBK" | |
}, | |
{ | |
"Symbol": "TSC" | |
}, | |
{ | |
"Symbol": "TSCO" | |
}, | |
{ | |
"Symbol": "TSEM" | |
}, | |
{ | |
"Symbol": "TSLA" | |
}, | |
{ | |
"Symbol": "TSRI" | |
}, | |
{ | |
"Symbol": "TTEC" | |
}, | |
{ | |
"Symbol": "TTEK" | |
}, | |
{ | |
"Symbol": "TTGT" | |
}, | |
{ | |
"Symbol": "TTMI" | |
}, | |
{ | |
"Symbol": "TTOO" | |
}, | |
{ | |
"Symbol": "TTWO" | |
}, | |
{ | |
"Symbol": "TUSA" | |
}, | |
{ | |
"Symbol": "TWER" | |
}, | |
{ | |
"Symbol": "TWOU" | |
}, | |
{ | |
"Symbol": "TXN" | |
}, | |
{ | |
"Symbol": "TXRH" | |
}, | |
{ | |
"Symbol": "TZOO" | |
}, | |
{ | |
"Symbol": "UAE" | |
}, | |
{ | |
"Symbol": "UBCP" | |
}, | |
{ | |
"Symbol": "UBFO" | |
}, | |
{ | |
"Symbol": "UBOH" | |
}, | |
{ | |
"Symbol": "UBSI" | |
}, | |
{ | |
"Symbol": "UCBI" | |
}, | |
{ | |
"Symbol": "UCTT" | |
}, | |
{ | |
"Symbol": "UEIC" | |
}, | |
{ | |
"Symbol": "UEPS" | |
}, | |
{ | |
"Symbol": "UFPI" | |
}, | |
{ | |
"Symbol": "UFPT" | |
}, | |
{ | |
"Symbol": "UG" | |
}, | |
{ | |
"Symbol": "UHAL" | |
}, | |
{ | |
"Symbol": "UIHC" | |
}, | |
{ | |
"Symbol": "ULBI" | |
}, | |
{ | |
"Symbol": "ULTA" | |
}, | |
{ | |
"Symbol": "ULTR" | |
}, | |
{ | |
"Symbol": "UMBF" | |
}, | |
{ | |
"Symbol": "UMPQ" | |
}, | |
{ | |
"Symbol": "UNAM" | |
}, | |
{ | |
"Symbol": "UNB" | |
}, | |
{ | |
"Symbol": "UNFI" | |
}, | |
{ | |
"Symbol": "UNTY" | |
}, | |
{ | |
"Symbol": "UPLD" | |
}, | |
{ | |
"Symbol": "URBN" | |
}, | |
{ | |
"Symbol": "USAK" | |
}, | |
{ | |
"Symbol": "USAP" | |
}, | |
{ | |
"Symbol": "USCR" | |
}, | |
{ | |
"Symbol": "USEG" | |
}, | |
{ | |
"Symbol": "USLM" | |
}, | |
{ | |
"Symbol": "UTHR" | |
}, | |
{ | |
"Symbol": "UTMD" | |
}, | |
{ | |
"Symbol": "UTSI" | |
}, | |
{ | |
"Symbol": "UVSP" | |
}, | |
{ | |
"Symbol": "VALU" | |
}, | |
{ | |
"Symbol": "VBFC" | |
}, | |
{ | |
"Symbol": "VBIV" | |
}, | |
{ | |
"Symbol": "VBLT" | |
}, | |
{ | |
"Symbol": "VBND" | |
}, | |
{ | |
"Symbol": "VBTX" | |
}, | |
{ | |
"Symbol": "VCEL" | |
}, | |
{ | |
"Symbol": "VCIT" | |
}, | |
{ | |
"Symbol": "VCLT" | |
}, | |
{ | |
"Symbol": "VCSH" | |
}, | |
{ | |
"Symbol": "VECO" | |
}, | |
{ | |
"Symbol": "VGIT" | |
}, | |
{ | |
"Symbol": "VGLT" | |
}, | |
{ | |
"Symbol": "VGSH" | |
}, | |
{ | |
"Symbol": "VIA" | |
}, | |
{ | |
"Symbol": "VICR" | |
}, | |
{ | |
"Symbol": "VIDE" | |
}, | |
{ | |
"Symbol": "VIDI" | |
}, | |
{ | |
"Symbol": "VIEW" | |
}, | |
{ | |
"Symbol": "VIRC" | |
}, | |
{ | |
"Symbol": "VISN" | |
}, | |
{ | |
"Symbol": "VIVO" | |
}, | |
{ | |
"Symbol": "VLGEA" | |
}, | |
{ | |
"Symbol": "VMBS" | |
}, | |
{ | |
"Symbol": "VNDA" | |
}, | |
{ | |
"Symbol": "VNET" | |
}, | |
{ | |
"Symbol": "VNOM" | |
}, | |
{ | |
"Symbol": "VNQI" | |
}, | |
{ | |
"Symbol": "VOD" | |
}, | |
{ | |
"Symbol": "VONE" | |
}, | |
{ | |
"Symbol": "VONG" | |
}, | |
{ | |
"Symbol": "VONV" | |
}, | |
{ | |
"Symbol": "VOXX" | |
}, | |
{ | |
"Symbol": "VRA" | |
}, | |
{ | |
"Symbol": "VRNS" | |
}, | |
{ | |
"Symbol": "VRNT" | |
}, | |
{ | |
"Symbol": "VRSK" | |
}, | |
{ | |
"Symbol": "VRSN" | |
}, | |
{ | |
"Symbol": "VRTA" | |
}, | |
{ | |
"Symbol": "VRTB" | |
}, | |
{ | |
"Symbol": "VRTS" | |
}, | |
{ | |
"Symbol": "VRTX" | |
}, | |
{ | |
"Symbol": "VSAT" | |
}, | |
{ | |
"Symbol": "VSEC" | |
}, | |
{ | |
"Symbol": "VSTM" | |
}, | |
{ | |
"Symbol": "VTHR" | |
}, | |
{ | |
"Symbol": "VTIP" | |
}, | |
{ | |
"Symbol": "VTNR" | |
}, | |
{ | |
"Symbol": "VTWG" | |
}, | |
{ | |
"Symbol": "VTWO" | |
}, | |
{ | |
"Symbol": "VTWV" | |
}, | |
{ | |
"Symbol": "VUSE" | |
}, | |
{ | |
"Symbol": "VWOB" | |
}, | |
{ | |
"Symbol": "VXUS" | |
}, | |
{ | |
"Symbol": "WABC" | |
}, | |
{ | |
"Symbol": "WAFD" | |
}, | |
{ | |
"Symbol": "WASH" | |
}, | |
{ | |
"Symbol": "WATT" | |
}, | |
{ | |
"Symbol": "WAYN" | |
}, | |
{ | |
"Symbol": "WB" | |
}, | |
{ | |
"Symbol": "WBA" | |
}, | |
{ | |
"Symbol": "WDC" | |
}, | |
{ | |
"Symbol": "WDFC" | |
}, | |
{ | |
"Symbol": "WEN" | |
}, | |
{ | |
"Symbol": "WERN" | |
}, | |
{ | |
"Symbol": "WETF" | |
}, | |
{ | |
"Symbol": "WEYS" | |
}, | |
{ | |
"Symbol": "WHF" | |
}, | |
{ | |
"Symbol": "WHLM" | |
}, | |
{ | |
"Symbol": "WHLR" | |
}, | |
{ | |
"Symbol": "WILC" | |
}, | |
{ | |
"Symbol": "WIRE" | |
}, | |
{ | |
"Symbol": "WIX" | |
}, | |
{ | |
"Symbol": "WLDN" | |
}, | |
{ | |
"Symbol": "WLFC" | |
}, | |
{ | |
"Symbol": "WOOD" | |
}, | |
{ | |
"Symbol": "WPRT" | |
}, | |
{ | |
"Symbol": "WRLD" | |
}, | |
{ | |
"Symbol": "WSBC" | |
}, | |
{ | |
"Symbol": "WSBF" | |
}, | |
{ | |
"Symbol": "WSFS" | |
}, | |
{ | |
"Symbol": "WSTG" | |
}, | |
{ | |
"Symbol": "WSTL" | |
}, | |
{ | |
"Symbol": "WTBA" | |
}, | |
{ | |
"Symbol": "WTFC" | |
}, | |
{ | |
"Symbol": "WVFC" | |
}, | |
{ | |
"Symbol": "WVVI" | |
}, | |
{ | |
"Symbol": "WWD" | |
}, | |
{ | |
"Symbol": "WYNN" | |
}, | |
{ | |
"Symbol": "XENE" | |
}, | |
{ | |
"Symbol": "XLNX" | |
}, | |
{ | |
"Symbol": "XLRN" | |
}, | |
{ | |
"Symbol": "XNCR" | |
}, | |
{ | |
"Symbol": "XNET" | |
}, | |
{ | |
"Symbol": "XOMA" | |
}, | |
{ | |
"Symbol": "XONE" | |
}, | |
{ | |
"Symbol": "XTLB" | |
}, | |
{ | |
"Symbol": "YNDX" | |
}, | |
{ | |
"Symbol": "YORW" | |
}, | |
{ | |
"Symbol": "YY" | |
}, | |
{ | |
"Symbol": "Z" | |
}, | |
{ | |
"Symbol": "ZAZA" | |
}, | |
{ | |
"Symbol": "ZBRA" | |
}, | |
{ | |
"Symbol": "ZEUS" | |
}, | |
{ | |
"Symbol": "ZGNX" | |
}, | |
{ | |
"Symbol": "ZION" | |
}, | |
{ | |
"Symbol": "ZIOP" | |
}, | |
{ | |
"Symbol": "ZIXI" | |
}, | |
{ | |
"Symbol": "ZUMZ" | |
} | |
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sys | |
sys.path.insert(1, "/home/jay/.local/lib/python3.7/site-packages") | |
import robin_stocks | |
from letters import * | |
from writing import * | |
import robin_stocks.robinhood as robinhood | |
# from writing import * | |
from copy import copy | |
import base64, pyotp | |
import json | |
# login to robinhood account | |
def login(): | |
keyDir = "/home/jay/Keys/robinhood-" | |
usr = open(keyDir + "username.txt").read().rstrip() | |
psswd = open(keyDir + "password.txt").read().rstrip() | |
mfa = open(keyDir + "qrcode.txt").read() | |
mfa = mfa.rstrip() | |
mfa = mfa.encode() | |
mfa_now = pyotp.TOTP(mfa).now() | |
robinhood.login(usr, psswd, mfa_code=mfa_now) | |
return True | |
# logout of robinhood account | |
def logout(): | |
robinhood.logout() | |
# holds stock symbol and price data | |
class Stock: | |
def __init__(self, _symbol, _name=None): | |
self.symbol = _symbol | |
self.name = ( | |
_name if _name is not None else robinhood.get_name_by_symbol(_symbol) | |
) | |
self.up = False | |
# data | |
self.current_price = 0 | |
self.last_close_price = 0 | |
self.day_delta_price = 0 | |
self.day_delta_pct = 0 | |
self.update() | |
# updates prices | |
def update(self): | |
self.current_price = float(robinhood.get_latest_price(self.symbol)[0]) | |
self.last_close_price = float( | |
robinhood.get_quotes(self.symbol)[0]["previous_close"] | |
) | |
self.day_delta_price = self.current_price - self.last_close_price | |
self.day_delta_pct = self.day_delta_price / self.last_close_price * 100 | |
self.up = self.day_delta_price >= 0 | |
# displays price data | |
def display(self): | |
print(self.get_display()) | |
# returns price data as string | |
def get_display(self): | |
return (str)( | |
"{0} {1} ${2:.2f} {3:.2f}%".format( | |
self.symbol, | |
"↑" if self.up else "↓", | |
abs(self.day_delta_price), | |
abs(self.day_delta_pct), | |
) | |
) | |
# converts data to printable message | |
def to_message(self): | |
msg = Message() | |
color = (0, 255, 0) if self.up else (255, 0, 0) | |
arrow = UP() if self.up else DOWN() | |
msg.addLetter(Letter(arrow, _color=color)) | |
name = str(self.name) | |
sym = str(self.symbol) | |
for l in name: | |
if l == " ": | |
msg.addSpace(3) | |
print("space after ", l, " in ", name) | |
else: | |
try: | |
msg.addLetter(Letter(get_letter(l)(), _color=color)) | |
except: | |
print("error printing ", l, " in ", name) | |
msg.addLetter(Letter(OPEN())) | |
for l in sym: | |
msg.addLetter(Letter(get_letter(l)(), _color=color)) | |
msg.addLetter(Letter(CLOSE())) | |
nums = dollar_message(self.day_delta_price) | |
msg.addMessage(nums) | |
msg.addLetter(Letter(EQUALS())) | |
pct = percent_message(self.day_delta_pct) | |
msg.addMessage(pct) | |
return msg | |
def delta_up(self): | |
return self.day_delta_price >= 0 | |
# builds a list of stocks held by account | |
def build_stocks(): | |
holdings = robinhood.build_holdings() | |
ret = [] | |
for stock in holdings.keys(): | |
ret.append(Stock(stock)) | |
return ret | |
# returns an array of stock ticker symbols | |
def get_stock_symbols(): | |
dat = json.loads(open("/home/jay/StockTicker/test-stock-symbols.json").read()) | |
ret = [] | |
for stock in dat: | |
# [item for item in positions_data if item['symbol'] == 'TSLA'] | |
ret.append(stock["Symbol"]) | |
return ret |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# handles LED strip function | |
from os_handler import windows | |
if not windows(): | |
from rpi_ws281x import PixelStrip, Color as BoardColor | |
else: | |
from writing import FullDisplay, Color as BoardColor | |
# LED strip configuration: | |
LED_COUNT = 256 # Number of LED pixels. | |
LED_PIN = 21 # GPIO pin connected to the pixels (18 uses PWM!). | |
# LED_PIN = 10 # GPIO pin connected to the pixels (10 uses SPI /dev/spidev0.0). | |
LED_FREQ_HZ = 800000 # LED signal frequency in hertz (usually 800khz) | |
LED_DMA = 10 # DMA channel to use for generating signal (try 10) | |
LED_BRIGHTNESS = 10 # Set to 0 for darkest and 255 for brightest | |
LED_INVERT = False # True to invert the signal (when using NPN transistor level shift) | |
LED_CHANNEL = 0 # set to '1' for GPIOs 13, 19, 41, 45 or 53 | |
def init_strip(): | |
"""initializes and returns strip""" | |
if windows(): | |
strip = FullDisplay() | |
else: | |
# Create NeoPixel object with appropriate configuration. | |
strip = PixelStrip( | |
LED_COUNT, | |
LED_PIN, | |
LED_FREQ_HZ, | |
LED_DMA, | |
LED_INVERT, | |
LED_BRIGHTNESS, | |
LED_CHANNEL, | |
) | |
# Intialize the library (must be called once before other functions). | |
strip.begin() | |
return strip | |
def set_display(strip, color, count=LED_COUNT): | |
"""set all pixels to one color""" | |
for i in range(count): | |
strip.setPixelColor(i, color) | |
strip.show() | |
def clear_display(strip, off=BoardColor(0, 0, 0)): | |
"""set all pixels in strip to 'off'""" | |
set_display(strip, off) | |
def convert_to_lib_color(r, g, b): | |
"""convert RGB values to rpi_ws281x.Color""" | |
return BoardColor(r, g, b) | |
# ToDo: func to test if correct wiring |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[ | |
{ | |
"Symbol": "AAL" | |
}, | |
{ | |
"Symbol": "AAME" | |
}, | |
{ | |
"Symbol": "AAOI" | |
}, | |
{ | |
"Symbol": "AAON" | |
}, | |
{ | |
"Symbol": "AAPL" | |
}, | |
{ | |
"Symbol": "AAWW" | |
}, | |
{ | |
"Symbol": "AAXJ" | |
}, | |
{ | |
"Symbol": "ABCB" | |
} | |
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# from rpi_ws281x import Color | |
from converter import convert | |
from groups import * | |
import pprint | |
class Letter: | |
def __init__(self, _lines, _max=256, _start=0, _h=8, _color=(0, 0, 255)): | |
self.column = _start # leftmost column, 0 = first | |
self.lines = _lines # the 2D array of data | |
self.max = _max # the maximum index before wrapping | |
self.h = _h # the height to convert around | |
self.color = _color | |
# the number of columns the letter occupies | |
def width(self): | |
return len(self.lines) | |
# move all the lines | |
def scroll(self, columns=1): | |
self.column += columns | |
colMax = self.max / self.h | |
if self.column >= colMax: | |
self.column = self.column - colMax | |
if self.column < 0: | |
self.column = self.column + colMax | |
for line in self.lines: | |
for i in range(len(line)): | |
idx = line[i] + self.h * columns | |
if idx >= self.max: # wrap over | |
idx = idx - self.max | |
if idx < 0: # wrap under | |
idx = idx + self.max | |
line[i] = idx | |
# set start to new_col and offset lines accordingly | |
def set_column(self, new_col): | |
off = (new_col - self.column) * self.h | |
self.column = new_col | |
for line in self.lines: | |
for i in range(len(line)): | |
num = line[i] + off | |
line[i] = num | |
# reset lines to 0 | |
def zero(self): | |
sub = self.column * self.h | |
self.column = 0 | |
for line in self.lines: | |
for i in range(len(line)): | |
num = line[i] - sub | |
line[i] = num | |
class Message: | |
def __init__(self, _h=8): | |
self.letters = [] # letter array | |
self.start = 0 # start index | |
self.width = 0 # width in columns | |
self.spacing = 1 # default space for letters | |
self.h = _h # height | |
# number of spaces the message occupies | |
def max(self): | |
return self.width * self.h | |
def scroll(self, columns=1): | |
for letter in self.letters: | |
letter.scroll(columns) # check if val or ref | |
def addLetter(self, letter, _spacing=1, _shrinkMax=False): | |
newMax = self.max() + letter.width() * self.h | |
if (newMax < letter.max and _shrinkMax) or newMax > letter.max: | |
letter.max = newMax | |
for myLetter in self.letters: | |
myLetter.max = newMax | |
letter.scroll(self.width) | |
self.letters.append(letter) | |
self.width = self.width + letter.width() + _spacing | |
def addChar(self, char): | |
if " " == char: | |
self.addSpace(4) | |
return | |
letter = get_char(char) | |
if -1 == letter: | |
print("bad char: ", char) | |
else: | |
self.addLetter(Letter(letter())) | |
def addString(self, s): | |
for c in s: | |
self.addChar(c) | |
def addMessage(self, msg): | |
# msg.scroll(self.width + self.spacing) | |
for letter in msg.letters: | |
letter.zero() | |
self.addLetter(letter) | |
def addSpace(self, columns=1): | |
self.width = self.width + columns | |
newMax = self.max() + columns * self.h | |
for letter in self.letters: | |
if newMax > letter.max: | |
letter.max = newMax | |
class Writer: | |
def __init__(self, _strip, _max=256): | |
self.strip = _strip | |
self.max = _max | |
def writeLetter(self, letter): | |
for line in letter.lines: | |
for pix in line: | |
if pix >= 0 and pix < self.max: | |
self.strip.setPixelColor(int(convert(pix)), letter.color) | |
def writeMessage(self, message): | |
for letter in message.letters: | |
self.writeLetter(letter) | |
# returns the data array function | |
# # associated with the given character | |
def get_char(s): | |
asc = ord(s) | |
if asc >= 65 and asc < 91: | |
idx = asc - 65 | |
return uppercase[idx] | |
elif asc >= 97 and asc < 123: | |
idx = asc - 97 | |
return lowercase[idx] | |
elif asc >= 48 and asc < 58: | |
idx = asc - 48 | |
return numbers[idx] | |
elif s in symbols: | |
return symbols.get(s) | |
else: | |
print("bad char: ", s, "asc: ", asc) | |
return -1 | |
def dollar_message(num): | |
num = "%0.2f" % (num) | |
msg = Message() | |
msg.addLetter(Letter(DOLLAR())) | |
for char in num: | |
if char.isdigit(): | |
char = int(char) | |
msg.addLetter(Letter(numbers[char]())) | |
elif char == ".": | |
msg.addLetter(Letter(PERIOD())) | |
else: | |
print("bad char: ", char) | |
return msg | |
def percent_message(num): | |
num = "%0.2f" % (num) | |
msg = Message() | |
for char in num: | |
if char.isdigit(): | |
char = int(char) | |
msg.addLetter(Letter(numbers[char]())) | |
elif char == ".": | |
msg.addLetter(Letter(PERIOD())) | |
else: | |
print("bad char: ", char) | |
msg.addLetter(Letter(PERCENT())) | |
return msg | |
class Color: | |
def __init__(self, _r, _g, _b): | |
self.r = _r | |
self.g = _g | |
self.b = _b | |
# converts a string message into a data array | |
def convert_string_to_data_array(msg): | |
data = [] | |
for character in msg: | |
try: | |
arr = get_char((str)(character))() | |
for line in arr: | |
data.append(line) | |
except: | |
print("error: |" + (str)(character) + "|") | |
data.append(SPACE(1)) | |
return data | |
# converts old character format to new format | |
# 1 represents color, 0 represents no color | |
def convert_old_character_to_lines(data, h=8): | |
ret = [] | |
# for each "column" in the data array | |
for line in data: | |
new_line = [] | |
new_line = [0 for i in range(h)] | |
for cell in line: | |
# index within line | |
if cell != []: | |
line_idx = cell % h | |
new_line[line_idx] = 1 | |
ret.append(new_line) | |
return ret | |
# converts an array of 1/0's to an array of colors | |
def convert_10_to_colors(data, color, default=Color(0, 0, 0), h=8): | |
ret = [] | |
# for each "column" in the data array | |
for line in data: | |
new_line = [default] * h | |
for i in range(h): | |
new_line[i] = color if line[i] == 1 else default | |
ret.append(new_line) | |
return ret | |
# data container for display array | |
class FullDisplay: | |
def __init__(self, _data=None, _wrap=False, _height=8): | |
self.height = _height | |
self.wrap = _wrap # message wraps when done | |
self.data = [] if _data is None else _data # color array | |
# returns a list of colors for the board | |
def get_data_slice(self, start_column, flip=False, width=32): | |
len_data = len(self.data) | |
if start_column >= len_data: | |
print("start index beyond end of data") | |
return None | |
data_slice = [] | |
for i in range(start_column, min(len_data, start_column + width)): | |
data_slice.append(self.data[i]) | |
if self.wrap: | |
for i in range(0, start_column + width - len_data): | |
data_slice.append(self.data[i]) | |
# convert 2D array into 1D array | |
color_idx_array = [] | |
i = 0 | |
for column_idx in range(len(data_slice)): | |
column = data_slice[column_idx] | |
if flip and column_idx % 2 == 1: # odd | |
# flip | |
for idx in reversed(range(self.height)): | |
color_idx_array.append(column[idx]) | |
i = i + 1 | |
else: | |
for color in column: | |
color_idx_array.append(color) | |
i = i + 1 | |
if len(color_idx_array) < width * self.height: | |
print("BAD DATA") | |
return color_idx_array | |
# takes in a data array and a color, sets self.data | |
# to be an array filled with the color | |
def set_array_10_color(self, arr, color, default=Color(0, 0, 0)): | |
self.data = [] | |
for line in arr: | |
new_line = [] | |
for cell in line: | |
new_color = color if cell == 1 else default | |
new_line.append(new_color) | |
self.data.append(new_line) | |
# adds blank padding to the front of the array | |
# (used to offset message to the left) | |
def add_front_padding(self, width=32, default=Color(0, 0, 0)): | |
blank_line = [] | |
for i in range(self.height): | |
blank_line.append(default) | |
for i in range(width): | |
self.data.insert(0, blank_line) | |
# gets the length of the data array | |
def data_length(self): | |
return len(self.data) | |
# cuts data from the front | |
def cut(self, amt): | |
assert self.data_length() > amt | |
self.data = self.data[amt:] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment