Advertisement
Guest User

Untitled

a guest
Nov 13th, 2018
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 11.26 KB | None | 0 0
  1. from urllib.request import urlopen as uReq
  2. from bs4 import BeautifulSoup as soup
  3. from decimal import Decimal
  4. import ssl
  5. ssl._create_default_https_context = ssl._create_unverified_context
  6.  
  7. # --ALLA TICKERS TILL AFFARSVARDEN.SE--
  8. #
  9. # Ericsson:     772
  10. # Electrolux:   2193
  11. # AstraZeneca:  1295
  12. # Volvo:        1146
  13.  
  14. # --ALL TICKERS FÖR YAHOO FINANCE--
  15. #
  16. # Ericsson:     ERIC
  17. # Electrolux:   ELUX-B.ST
  18. # AstraZeneca:  AZN
  19. # Volvo:        VOLV-B.ST
  20.  
  21. # --ALL TICKERS FÖR NORDENET--
  22. #
  23. # Ericsson:     100
  24. # Electrolux:   81
  25. # AstraZeneca:  3524
  26. # Volvo:        365
  27.  
  28. #Globala variabler för att identifiera företagen på hemsidan
  29. ericsson = "772"
  30. electrolux = "2193"
  31. astraZeneca = "1295"
  32. volvo = "1146"
  33.  
  34. #Menyn till programmet
  35. print("------------------------------Meny------------------------------")
  36. print("1. Fundamental analys (Vid lånsiktigt aktieinnehav)")
  37. print("2. Teknisk analys (Vid kort aktieinnehav)")
  38. print("3. Rangordning av aktier med avseende på dess betavärde")
  39. print("4. Avsluta")
  40.  
  41. #Klass med variabler och metoder
  42. class Aktie:
  43.     def __init__(self, namn, avkastning, beta):
  44.         self.namn = namn
  45.         self.avkastning = avkastning
  46.         self.beta = beta
  47.  
  48. def program():
  49.  
  50.     val = ""
  51.     while val != "4":
  52.         val = input("\nVilket alternativ vill du välja?: ")
  53.  
  54. #Skapar objekt samt beräknar deras avkastning och beta samt adderar detta som egenskaper
  55.         #Öppnar kurser för att kunna beräkna avkastningen
  56.  
  57.         tickersYahoo = ["ERIC", "ELUX-B.ST", "AZN", "VOLV-B.ST"]
  58.         tickersAffarsVarden = [ericsson, electrolux, astraZeneca, volvo]
  59.  
  60.         stock_name_list = []
  61.         for i in range(len(tickersAffarsVarden)):
  62.             stock_name_list.append(get_stock_name(tickersAffarsVarden[i]))
  63.  
  64.         beta_list = []
  65.         for i in range(len(tickersYahoo)):
  66.             beta_list.append(get_stock_beta(tickersYahoo[i]))
  67.  
  68.  
  69.         #Beräkning av aktiernas betavärde
  70.        
  71.         #Skapar objekt med namn och avkastning som egenskaper
  72.         ericsson_stock = Aktie(stock_name_list[0], 12.2, beta_list[0])
  73.         electrolux_stock = Aktie(stock_name_list[1], 1.2, beta_list[1])
  74.         astra_stock = Aktie(stock_name_list[2], 32.1, beta_list[2])
  75.         volvo_stock = Aktie(stock_name_list[3], 16.2, beta_list[3])
  76.        
  77.         #Skapar en lista och adderar objekten till listan        
  78.         aktieLista = []
  79.         aktieLista.extend((ericsson_stock, electrolux_stock, astra_stock, volvo_stock))
  80.  
  81.        
  82. #Vid val av 1 - Fundamental Analys
  83.         if val == "1":
  84.             print("\nEn fundamental analys kan utföras på följande aktier: ")
  85.             for i in range(len(stock_name_list)):
  86.                 print(i+1, stock_name_list[i])
  87.  
  88.             inmatning = input("\nVilken aktie vill du göra fundamental analys på?: ")
  89.  
  90.  
  91.             if inmatning == "1":
  92.                 print("\n-------------Fundamental analys för Ericsson------------------")
  93.                 print("\nföretagets soliditet är " + get_stock_solidity(electrolux))
  94.                 print("företagets p/e-tal är " + get_stock_PE(ericsson))
  95.                 print("företagets p/s-tal är " + get_stock_PS(ericsson))
  96.  
  97.             elif inmatning == "2":
  98.                 print("\n-------------Fundamental analys för Electrolux----------------")
  99.                 print("\nföretagets soliditet är " + get_stock_solidity(electrolux))
  100.                 print("företagets p/e-tal är " + get_stock_PE(electrolux))
  101.                 print("företagets p/s-tal är " + get_stock_PS(electrolux))
  102.                
  103.             elif inmatning == "3":
  104.                 print("\n-------------Fundamental analys för AstraZeneca---------------")
  105.                 print("\nföretagets soliditet är " + get_stock_solidity(astraZeneca))
  106.                 print("företagets p/e-tal är " + get_stock_PE(astraZeneca))
  107.                 print("företagets p/s-tal är " + get_stock_PS(astraZeneca))
  108.  
  109.             elif inmatning == "4":
  110.                 print("\n-----------------Fundamental analys för Volvo------------------")
  111.                 print("\nföretagets soliditet är " + get_stock_solidity(volvo))
  112.                 print("företagets p/e-tal är " + get_stock_PE(volvo))
  113.                 print("företagets p/s-tal är " + get_stock_PS(volvo))
  114.                
  115.             else:
  116.                 print("Felaktigt val. Tillåtna val existerar endast inom intervallet 1-4. Var god försök igen.")
  117.  
  118. #Vid val av 2 - Teknisk Analys
  119.         elif val == "2":
  120.             print("\nEn teknisk analys kan utföras på följande aktier: ")
  121.             for i in range(len(stock_name_list)):
  122.                 print(i+1, stock_name_list[i])
  123.  
  124.             inmatning = input("\nVilken aktie vill du göra en teknisk analys på?: ")
  125.  
  126.  
  127.             if inmatning == "1":
  128.                 print("\n----------------Teknisk analys för Ericsson----------------------")
  129.                 print("\nföretagets kursutveckling " + get_stock_develop("100"))
  130.                 print("betavärde " + str(beta_list[0]))
  131.                 print("lägsta kurs (30 senaste dagarna) " + get_stock_low("100"))
  132.                 print("högsta kurs (30 senaste dagarna) " + get_stock_high("100"))
  133.  
  134.             elif inmatning == "2":
  135.                 print("\n----------------Teknisk analys för Electrolux----------------------")
  136.                 print("\nföretagets kursutveckling " + get_stock_develop("81"))
  137.                 print("betavärde " + str(beta_list[1]))
  138.                 print("lägsta kurs (30 senaste dagarna) " + get_stock_low("81"))
  139.                 print("högsta kurs (30 senaste dagarna) " + get_stock_high("81"))
  140.  
  141.             elif inmatning == "3":
  142.                 print("\n----------------Teknisk analys för AstraZeneca----------------------")
  143.                 print("\nföretagets kursutveckling " + get_stock_develop("3524"))
  144.                 print("betavärde " + str(beta_list[2]))
  145.                 print("lägsta kurs (30 senaste dagarna) " + get_stock_low("3524"))
  146.                 print("högsta kurs (30 senaste dagarna) " + get_stock_high("3524"))
  147.  
  148.             elif inmatning == "4":
  149.                 print("\n-------------------Teknisk analys för Volvo-------------------------")
  150.                 print("\nföretagets kursutveckling " + get_stock_develop("365"))
  151.                 print("betavärde " + str(beta_list[3]))
  152.                 print("lägsta kurs (30 senaste dagarna) " + get_stock_low("365"))
  153.                 print("högsta kurs (30 senaste dagarna) " + get_stock_high("365"))
  154.  
  155.             else:
  156.                 print("Felaktigt val. Tillåtna val existerar endast inom intervallet 1-4. Var god försök igen.")
  157.  
  158. #Vid val av 3 - Rangordning med avseende på betavärde
  159.         elif val == "3":
  160.             print("\n-------Rangordning av aktier med avseende på dess betavärde------\n")
  161.            
  162.  
  163.             #Sorterar listan med aktierna med avseende på betavärde
  164.             aktieLista.sort(key=lambda x: x.beta, reverse = True)
  165.  
  166.             #Printar rangordningen utifrån sorteringen ovan
  167.            
  168.             counter = 0
  169.  
  170.             for aktie in aktieLista:
  171.                 counter += 1
  172.                 print(int(counter), aktie.namn, str(aktie.beta)) #hur får man bort mellanslaget?
  173.            
  174. #Vid val av 4 - Avsluta program
  175.         elif val == "4":
  176.             quit()
  177.  
  178.         else:
  179.             print("Felaktigt val. Tillåtna val existerar endast inom intervallet 1-4. Var god försök igen.")
  180.  
  181. #Funktionen som hämtar alla aktiekurser
  182.  
  183. # --ALL TICKERS--
  184. #
  185. # Ericsson:     772
  186. # Electrolux:   2193
  187. # AstraZeneca:  1295
  188. # Volvo:        https://www.affarsvarlden.se/bors/stock-details/1146/
  189.  
  190. def get_stock_solidity(ticker):
  191.  
  192.     my_url = "https://www.affarsvarlden.se/bors/stock-details/%s"%(ticker)
  193.     #Hämtar hemsidan
  194.     uClient = uReq(my_url)
  195.     page_html = uClient.read()
  196.     uClient.close()
  197.  
  198.     page_soup = soup(page_html, "html.parser")
  199.  
  200.     finder = page_soup.find_all("span",{"class":"pull-right"})
  201.  
  202.     item_list = []
  203.     for find in finder:
  204.         item_list.append(find.text)
  205.         #print(find.text)
  206.  
  207.     return item_list[3]
  208.  
  209. #kursutveckling för en månad
  210. def get_stock_develop(ticker):
  211.  
  212.     my_url = "https://www.nordnet.se/mux/web/marknaden/aktiehemsidan/historik.html?identifier=%s&marketplace=11&inhibitTrade=1"%(ticker)
  213.     #Hämtar hemsidan
  214.     uClient = uReq(my_url)
  215.     page_html = uClient.read()
  216.     uClient.close()
  217.  
  218.     page_soup = soup(page_html, "html.parser")
  219.  
  220.     finder = page_soup.find_all("td")
  221.    
  222.     item_list = []
  223.     for find in finder:
  224.         item_list.append(find.text)
  225.  
  226.     return str(item_list[24])
  227.  
  228. def get_stock_high(ticker):
  229.  
  230.     my_url = "https://www.nordnet.se/mux/web/marknaden/aktiehemsidan/historik.html?identifier=%s&marketplace=11&inhibitTrade=1"%(ticker)
  231.     #Hämtar hemsidan
  232.     uClient = uReq(my_url)
  233.     page_html = uClient.read()
  234.     uClient.close()
  235.  
  236.     page_soup = soup(page_html, "html.parser")
  237.  
  238.     finder = page_soup.find_all("td")
  239.    
  240.     item_list = []
  241.     for find in finder:
  242.         item_list.append(find.text)
  243.  
  244.     return str(item_list[25])
  245.  
  246. def get_stock_low(ticker):
  247.  
  248.     my_url = "https://www.nordnet.se/mux/web/marknaden/aktiehemsidan/historik.html?identifier=%s&marketplace=11&inhibitTrade=1"%(ticker)
  249.     #Hämtar hemsidan
  250.     uClient = uReq(my_url)
  251.     page_html = uClient.read()
  252.     uClient.close()
  253.  
  254.     page_soup = soup(page_html, "html.parser")
  255.  
  256.     finder = page_soup.find_all("td")
  257.    
  258.     item_list = []
  259.     for find in finder:
  260.         item_list.append(find.text)
  261.  
  262.     return str(item_list[26])
  263.  
  264. def get_stock_PE(ticker):
  265.  
  266.     my_url = "https://www.affarsvarlden.se/bors/stock-details/%s"%(ticker)
  267.     #Hämtar hemsidan
  268.     uClient = uReq(my_url)
  269.     page_html = uClient.read()
  270.     uClient.close()
  271.  
  272.     page_soup = soup(page_html, "html.parser")
  273.  
  274.     finder = page_soup.find_all("span",{"class":"pull-right"})
  275.  
  276.     item_list = []
  277.     for find in finder:
  278.         item_list.append(find.text)
  279.         #print(find.text)
  280.  
  281.     return item_list[9]
  282.  
  283.  
  284. def get_stock_PS(ticker):
  285.  
  286.     my_url = "https://www.affarsvarlden.se/bors/stock-details/%s"%(ticker)
  287.     #Hämtar hemsidan
  288.     uClient = uReq(my_url)
  289.     page_html = uClient.read()
  290.     uClient.close()
  291.  
  292.     page_soup = soup(page_html, "html.parser")
  293.  
  294.     finder = page_soup.find_all("span",{"class":"pull-right"})
  295.  
  296.     item_list = []
  297.     for find in finder:
  298.         item_list.append(find.text)
  299.         #print(find.text)
  300.  
  301.     return item_list[8]
  302.  
  303. def get_stock_name(ticker):
  304.     my_url = "https://www.affarsvarlden.se/bors/stock-details/%s"%(ticker)
  305.     #Hämtar hemsidan
  306.     uClient = uReq(my_url)
  307.     page_html = uClient.read()
  308.     uClient.close()
  309.  
  310.     page_soup = soup(page_html, "html.parser")
  311.     return page_soup.h2.text
  312.  
  313. def get_stock_beta(ticker):
  314.     my_url = "http://finance.yahoo.com/quote/%s?p=%s"%(ticker,ticker)
  315.    
  316.     uClient = uReq(my_url)
  317.     page_html = uClient.read()
  318.     uClient.close()
  319.  
  320.     page_soup = soup(page_html, "html.parser")
  321.    
  322.     spans = page_soup.find_all("td",{"data-test":"BETA_3Y-value"})
  323.     for span in spans:
  324.         beta_value = span.text
  325.     return float(beta_value)
  326.  
  327. #Kör programmet
  328. program()
  329. #print(get_stock_develop("100"))
  330. #print(get_stock_develop(ericsson))
  331. #get_stock_beta("ERIC")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement