Forum >> Principianti >> Errore classe

Pagina: 1

Ciao a tutti,
sto approcciando python perchè mi sembra il linguaggio più adatto e flessibile per l'analisi finanziaria.

Ho creato così alcuni script che dovrebbero, tramite una strategia definita, importare i dati storici di un'azione (in questo caso Enel) scaricata sul mio desktop, processarli e dare un feedback preciso delle operazioni e della resa della strategia scelta. Per gli script mi sono basato su backtrader, che sembra essere completo e molto funzionale ai miei obiettivi.

Ma...non tutto è andato liscio!




NameError: name 'Cross Medie' is not defined




Ho definito la strategia mediante una classe che, una volta richiamata sul main, non viene riconosciuta.




Questo il main:





from __future__ import (absolute_import, division, print_function, unicode_literals)




import backtrader as bt

import backtrader.indicators as btind

import backtrader.analyzers as btanalyzers

import datetime

import os.path

import sys




if __name__ == '__main__':




cerebro = bt.Cerebro()



cerebro.addstrategy(Cross Medie)



modpath = os.path.basename(os.path.abspath(sys.argv0))

datapath = os.path.join(modpath, 'C:/Users/marco.fava/Desktop/ENEL.csv')



data = bt.feeds.YahooFinanceCSVData(

dataname=datapath,

fromdate=datetime.datetime(2021, 7, 1),

todate=datetime.datetime(2022, 8, 1),

reverse=False)



cerebro.adddata(data)



cerebro.broker.setcash(100000.0)



cerebro.addsizer(bt.sizers.FixedSize, stake=1000)



cerebro.broker.setcommission(commission=0.0002)



print('Valore iniziale Portafoglio: %.2f' % cerebro.broker.getvalue())



cerebro.run()



print('Valore finale Portafoglio: %.2f' % cerebro.broker.getvalue())



cerebro.plot()




e della strategia:





import backtrader as bt

import backtrader.indicators as btind

import backtrader.analyzers as btanalyzers

import datetime

import os.path

import sys




class Cross Medie(bt.Strategy) :

params = (('Med_vel', 50), ('Med_len', 100))



def __init__(self):




self.sma_vel = btind.SMA(period=self.p.Med_vel)

self.sma_len = btind.SMA(period=self.p.Med_len)



self.buysig = btind.CrossOver(self.sma_vel, self.sma_len)



self.dataclose = self.datas0.close




Sicuramente c'è un errore, altrimenti python non protesterebbe...

Mi potete aiutare nel trovarlo?

Grazie mille!


Chiudo per cross post.


Pagina: 1



La discussione è chiusa.