Hi. Following the source code:
#importo tutte le librerie di cui necessito
import csv
from datetime import datetime, timedelta
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import shutil
import yfinance as yf
import os
import os.path
import glob
import smtplib, ssl
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from pandas_datareader import data as web
listatitoli = ["A2A.MI", "ABT.MI", "ACE.MI", "AC5.MI", "AEF.MI", "ADB.MI", "ARN.MI", "ALW.MI", "ALK.MI", "AMP.MI", "ANIM.MI", "AV.MI", "ECNL.MI", "ARIS.MI", "ASC.MI", "AVIO.MI", "AZM.MI", "BEC.MI", "BFG.MI", "BGN.MI", "IF.MI", "BMED.MI", "BMPS.MI", "PRO.MI", "BST.MI", "BAMI.MI", "BAN.MI", "B.MI", "BDB.MI", "BWZ.MI", "BE.MI", "BES.MI", "BFF.MI", "BIA.MI", "BSS.MI", "BIE.MI", "BO.MI", "BPSO.MI", "BPE.MI", "BRE.MI", "BRI.MI", "BC.MI", "BZU.MI", "CAI.MI", "CLF.MI", "CALT.MI", "CPR.MI", "CRL.MI", "CELL.MI", "CMB.MI", "CEM.MI", "CLI.MI", "CIR.MI", "CLE.MI", "COM.MI", "CNF.MI", "CE.MI", "CSP.MI", "CY4.MI", "DIS.MI", "DAN.MI", "DAL.MI", "DLG.MI", "DIA.MI", "DGV.MI", "DIB.MI", "DOV.MI", "EDNR.MI", "ELN.MI", "ELC.MI", "EM.MI", "ENAV.MI", "ENEL.MI", "ENV.MI", "ENI.MI", "EQUI.MI", "ERG.MI", "PRT.MI", "EUK.MI", "ECMPM.MI", "EGLA.MI", "ETH.MI", "XPR.MI", "RACE.MI", "YACHT.MI", "FDA.MI", "FM.MI", "FILA.MI", "FCT.MI", "FF.MI", "FBK.MI", "FNM.MI", "GAB.MI", "GHC.MI", "GSP.MI", "GE.MI", "GF.MI", "G.MI", "GEO.MI", "GG.MI", "GPI.MI", "GVS.MI", "HER.MI", "IGV.MI", "IGD.MI", "ILTY.MI", "IMS.MI", "DNR.MI", "INDB.MI", "ICOS.MI", "IP.MI", "ISP.MI", "INW.MI", "IRC.MI", "IRE.MI", "IEG.MI", "ITW.MI", "IG.MI", "IDB.MI", "ITM.MI", "IVG.MI", "KME.MI", "LNDR.MI", "LDO.MI", "LTMC.MI", "LUVE.MI", "LVEN.MI", "MAIRE.MI", "MAPS.MI", "MARR.MI", "MB.MI", "MFEA.MI", "MIT.MI", "MONC.MI", "MN.MI", "MTV.MI", "MOL.MI", "NDT.MI", "NWL.MI", "NEXI.MI", "NR.MI", "OLI.MI", "OJM.MI", "ORS.MI", "OVS.MI", "PHN.MI", "PHIL.MI", "PIA.MI", "PINF.MI", "PVN.MI", "PQ.MI", "PIRC.MI", "PLC.MI", "PST.MI", "PRY.MI", "RWAY.MI", "RAT.MI", "RCS.MI", "REC.MI", "REY.MI", "REVO.MI", "SAB.MI", "SG.MI", "SFL.MI", "SPM.MI", "SFER.MI", "SL.MI", "IOT.MI", "SERI.MI", "SRI.MI", "SES.MI", "SIT.MI", "SRG.MI", "SFT.MI", "SGF.MI", "SOL.MI", "SOM.MI", "STLAM.MI", "STMMI.MI", "TIP.MI", "TGYM.MI", "TPRO.MI", "TIT.MI", "TEN.MI", "TRN.MI", "TES.MI", "TSL.MI", "TISG.MI", "TNXT.MI", "TYA.MI", "TB.MI", "TXT.MI", "UCG.MI", "UD.MI", "UNIR.MI", "UNI.MI", "VLS.MI", "VIA.MI", "ZUC.MI", "WBD.MI", "WIIT.MI", "ZV.MI"]
#Elimino tutti i file presenti nella cartella upovermax10gg
files = glob.glob('/Users/fabry/upovermax12gg/*')
for f in files:
os.remove(f)
#Per ogni titolo della lista titoli scarico i dati di ieri e creo un file .csv per ogni titolo
for stock in listatitoli:
stock_data = yf.download(stock, period='12d')
df = pd.DataFrame(stock_data)
df.to_csv(stock + ".csv", index=False)
#Sposto i file .csv nella cartella CSV titoli
src = r"/Users/fabry/"
dest = r"/Users/fabry/upovermax12gg"
os.chdir(src)
for files in glob.glob("*.csv"):
shutil.move(files, dest)
#Inizio analisi titoli
max_values_11_days = []
# Faccio l'append dei primi 11 max dalla colonna High
for row in range(len(df) - 1):
max_values_11_days.append(df.iat[row, 1])
maxdi11gg = max(max_values_11_days)
maxdodicesimogg = df.iat[11, 1]
#overmax12gg_path = Path('/Users/fabry/upovermax12gg/overmax12gg.csv')
#Stabilisco per ogni titolo se il max di oggi supera quello degli ultimi 11gg
if maxdodicesimogg > maxdi11gg:
# Use the 'a' for append. Using 'w' will overwrite the current contents
with open('/Users/fabry/upovermax12gg/overmax12gg.csv', 'a', encoding='UTF-8') as OM:
OM.close()
No error messages but Python doesn’t create the csv file overmax12gg.csv.
If I use the code lines suggested by Paul:
overmax12gg_path = Path('/Users/fabry/upovermax12gg/overmax12gg.csv')
if maxdodicesimogg > maxdi11gg:
with open(overmax12gg_path, 'a', encoding='UTF-8') as OM:
I receive the following error:
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-110-7adcc2c3238b> in <module>
52 maxdodicesimogg = df.iat[11, 1]
53
---> 54 overmax12gg_path = Path('/Users/fabry/upovermax12gg/overmax12gg.csv')
55
56 #Stabilisco per ogni titolo se il max di oggi supera quello degli ultimi 11gg
NameError: name 'Path' is not defined
I think that I must write something like this:
if maxdodicesimogg > maxdi11gg:
OM = open('/Users/fabry/upovermax12gg/overmax12gg.csv', "a")
OM.write("stock codes (e.g. ENI.MI, A2A.MI.... \n") #HERE'S THE PROBLEM!!
OM.close()
I don’t know how to say to Python to write in the csv all the stock codes that satisfy the condition.
Thank you!