等级: 专业版
- 注册:
- 2021-5-20
- 曾用名:
|
def init(context):
clearextdata()
context.heyue = ['SQCU00','SQAL00','SQRB00','SQRU00']
for i in context.heyue:
setextdata(i + 'buy_holdprice', 0)
setextdata(i + 'sell_holdprice', 0)
setextdata(i + 'buy_holding', 0)
setextdata(i + 'sell_holding', 0)
setextdata(i + 'buyopen_today', 0)
setextdata(i + 'sellopen_today', 0)
setextdata(i + 'buyclose_today', 0)
setextdata(i + 'sellclose_today', 0)
在getextdata()的时候,死活不正常,昨晚调到3点钟,今天一大早又爬起来,终于把原因找出来了。
一、setextdata(i + 'buy_holdprice', 10)
那么print(getextdata(i + 'buyprice') )= ?
答案是0.也就是说,如果str并未经setextdata(str,)命名和赋值,getextdata(str)金字塔都不会报错,而是直接输出为0 。
不报错的话,输出为NONE也好啊。如果手误写错了变量名,很难查原因。
二、果然幽灵出现了,对于下面的语句
setextdata(i + 'sellclose_today', 10) #无论我写入什么值,
print(getextdata(i + 'sellclose_today')) #恒等于0,到底是set出了问题,还是get出了问题?
联想到上一条(金字塔get 任意未经命名的全局变量,都输出0,而不报错),因此怀疑是setextdata()出了问题,但死活查不到
原因,无奈只好换个全局变量名写入试试,比如
setextdata(i + 'sellclosetoday', 10) #把下划线去掉了
print(getextdata(i + 'sellclosetoday') ) # 输出为10,它终于正常了
结论:setextdata(i + 'sellclose_today', 10),这个 setextdata操作始终是失败的,(不用去管I,所有品种本句的写入操作都是失败的)
直到把'sellclose_today'改为任意其它字符串,它就可以正常写入。请老师们复现了场景试试。
|
|