Forum
>>
Principianti
>>
Errore classe
Pagina: 1
La discussione è chiusa.
Pagina: 1
Scritto da garetjax1983 |
2022-08-24 13:14:02 - Errore classe
|
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! |
|
Scritto da Daniele aka Palmux |
2022-08-24 16:14:42 - Re: Errore classe
|
Chiudo per cross post.
|
Pagina: 1
La discussione è chiusa.