from datetime import datetime, timedelta import ast import os from Processing import * import importlib import sys import re module_name = "Global" if len(sys.argv) != 2: print("Usage: python Entrainement.py ") sys.exit(1) try: parametre = int(sys.argv[1]) module_name = "Global_" + str(parametre) except ValueError: print("Le paramètre doit être un entier.") sys.exit(1) try: imported_module = importlib.import_module(module_name) except ImportError: print(f"Aucun fichier {module_name}") sys.exit(1) nom_dossier = "res_" + str(parametre) def parse_float_array(string): parts = string.split(':') nom = parts[0].strip() float_array = ast.literal_eval(parts[1].strip()) return float_array def verif(dateIN): valeurs_ponderees =[] valeurs_date = [] with open(dateIN, "r") as file: dates = file.readlines() for date in dates: date = date.strip() ponde,da = lirefichier(date) valeurs_ponderees.append(ponde) valeurs_date.append(da) Atest = os.listdir(nom_dossier)[-5:] r=[] for entest in Atest: Portfeuille = imported_module.PortefeuilleInit pourc = 0 Action = [0] * 40 with open(nom_dossier+"/"+ entest, "r") as file: file.readline() file.readline() file.readline() file.readline() file.readline() file.readline() file.readline() weight1 = parse_float_array(file.readline()) weight2 = parse_float_array(file.readline()) weight3 = parse_float_array(file.readline()) weight4 = parse_float_array(file.readline()) couche1 = parse_float_array(file.readline()) couche2 = parse_float_array(file.readline()) couche3 = parse_float_array(file.readline()) couche4 = parse_float_array(file.readline()) for date in range(len(dates)): res = processing(valeurs_ponderees[date],weight1,weight2,weight3,weight4,couche1,couche2,couche3,couche4,imported_module.nbCouche1,imported_module.nbCouche2,imported_module.nbCouche3,imported_module.nbCouche4) for i in range(0,40): Action[i],Portfeuille=evaluation(res[i], valeurs_date[date][i], Action[i], Portfeuille,imported_module.resAchat1,imported_module.resAchat2,imported_module.resAchat3,imported_module.resVente,imported_module.Achat1,imported_module.Achat2,imported_module.Achat3,imported_module.Frais) pourc = verification(valeurs_date[date],Action,Portfeuille,imported_module.PortefeuilleInit) r.append(pourc) return r def resPourcen(): return len(os.listdir(nom_dossier))/1000 def moyen(): fichiers = os.listdir(nom_dossier) i=0 for fichier in fichiers: i+=float(fichier) return i / len(fichiers) def fc_ma(): fichiers = os.listdir(nom_dossier) i = float(fichiers[0]) for fichier in fichiers: if float(fichier) > i : i =float(fichier) return i def operation_sur_resultat(liste1, liste2, liste3, liste4, liste5): # Vérifier si toutes les listes ont la même longueur if not all(len(liste) == len(liste1) for liste in [liste2, liste3, liste4, liste5]): raise ValueError("Toutes les listes doivent avoir la même longueur") # Utiliser une compréhension de liste pour additionner les éléments correspondants somme_elements = [a + b + c + d + e for a, b, c, d, e in zip(liste1, liste2, liste3, liste4, liste5)] # Soustraire 5, diviser par 130 et multiplier par 20 resultat_final = [(x - 5) / 130 * 20 for x in somme_elements] return resultat_final pourcent=resPourcen() moyen = moyen() ma=fc_ma() V1 = verif("dateV1.txt") V2 = verif("dateV2.txt") V3 = verif("dateV3.txt") V4 = verif("dateV4.txt") V5 = verif("dateV5.txt") jour20 = operation_sur_resultat(V1,V2,V3,V4,V5) print(f"pourcentage : {pourcent}, moyen : {moyen}, max : {ma}") print(jour20)