如何解决可以用 dict 或 sth 替换函数中的关键字吗?
我有一个带有大量预定义参数的函数(runstrat 函数中的 test.addstrategy)。
我想将关键字selcperc=p1、mperiod=int(p2) 更改为rperiod 和zperiod。这些也是 St 函数中的参数。
例如像 globalparams dict 这样的 dict 是否可能?
globalparams = dict(fromdate=datetime.datetime(2005,11,3),todate=datetime.datetime(2020,6,18),strategy="St",#Heatmap section
heatmap=True,heatmapparams= {'selcperc': "p1"},heatmapparams2= {'mperiod': "int(p2)",'printlog': "False"},)
if globalparams["heatmap"]:
results_list = []
for i in np.arange(0.02,0.12,0.02):
for j in np.arange(60,250,10):
PnL = runstrat(p1=i,p2=j)
results_list.append([i,j,i,PnL])
my_heatmap1(results_list)
return
def runstrat(p1,p2):
test= bt.Cerebro()
test.addstrategy(eval(globalparams["strategy"],selcperc=p1,mperiod=int(p2),printlog=False)
for fname in glob.glob(os.path.join(globalparams["path"],'*')):
df = pd.read_csv(fname,index_col=0,parse_dates=True)
if len(df)>200:
test.adddata(bt.feeds.PandasData(dataname=df,name=os.path.basename(fname).replace(".csv",""),fromdate=fromdate,todate=todate,plot=False))
test.run(maxcpus=0)
return test.broker.getvalue()
def my_heatmap1(data):
data = np.array(data)
xs = np.unique(data[:,1].astype(int))
ys = np.unique(data[:,0].astype(float))
vals = data[:,3].reshape(len(ys),len(xs))
min_val_ndx = np.unravel_index(np.argmin(vals,axis=None),vals.shape)
max_val_ndx = np.unravel_index(np.argmax(vals,vals.shape)
cmap = LinearSegmentedColormap.from_list('',['red','orange','yellow','chartreuse','limegreen'])
ax = sns.heatmap(vals,xticklabels=xs,yticklabels=ys,cmap='viridis',annot=True,fmt='.2f')
ax.add_patch(Rectangle(min_val_ndx[::-1],1,fill=False,edgecolor='blue',lw=3,clip_on=False))
ax.add_patch(Rectangle(max_val_ndx[::-1],clip_on=False))
print(data)
plt.tight_layout()
plt.show()
St 是另一个非常冗长的课程。
编辑:
我现在通过 incl 做了一个糟糕的解决方法。我可能想要更改的所有参数。在全局参数中,我设置了一个包含所有案例的字典,它将用相关案例替换参数...
解决方法
关键字由被调用的函数定义,调用者无法更改它们。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。