garetjax1983
Profilo di
Nome | garetjax1983 |
---|---|
Indirizzo email | n/a |
Messaggi | 4 |
-
- 2022-08-26 13:37:41
- Re: Errore classe
- Forum >> Principianti
- Ciao e grazie mille!
Effettivamente non avevo importato la classe (essendo un principiante e ottimista credevo, non so per quale motivo, che essendo tutto nello stesso folder la recuperasse da solo...mi sbagliavo!)
Però ora sono andato oltre e mi sono trovato davanti a un ulteriore errore:
ImportError: cannot import name 'warnings' from 'matplotlib.dates' (C:\Users\Anaconda3\envs\spyder-cf\lib\site-packages\matplotlib\dates.py)
Che non so come risolvere! Dove ho sbagliato questa volta?
Cmq tornando alle considerazioni precedenti, effettivamente ci sta che sia un linguaggio di programmazione un pochino datato perchè mutuato da un manuale del 2017, quindi non proprio nuovissimo. Per quanto riguarda invece il rispetto delle PEP, oltre ad aver ricavato dal manuale, mi sono arrangiato come potevo quindi chiedo clemenza...sperando di migliorare in un futuro non troppo lontano
Grazie
-
- 2022-08-26 13:37:39
- Re: Errore classe
- Forum >> Principianti
- Ciao e grazie mille!
Effettivamente non avevo importato la classe (essendo un principiante e ottimista credevo, non so per quale motivo, che essendo tutto nello stesso folder la recuperasse da solo...mi sbagliavo!)
Però ora sono andato oltre e mi sono trovato davanti a un ulteriore errore:
ImportError: cannot import name 'warnings' from 'matplotlib.dates' (C:\Users\Anaconda3\envs\spyder-cf\lib\site-packages\matplotlib\dates.py)
Che non so come risolvere! Dove ho sbagliato questa volta?
Cmq tornando alle considerazioni precedenti, effettivamente ci sta che sia un linguaggio di programmazione un pochino datato perchè mutuato da un manuale del 2017, quindi non proprio nuovissimo. Per quanto riguarda invece il rispetto delle PEP, oltre ad aver ricavato dal manuale, mi sono arrangiato come potevo quindi chiedo clemenza...sperando di migliorare in un futuro non troppo lontano
Grazie
-
- 2022-08-24 13:14:04
- Errore classe
- Forum >> Principianti
- 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!
-
- 2022-08-24 13:14:02
- Errore classe
- Forum >> Principianti
- 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!