天勤每天盘后会关闭api。程序重启后,如何保持变量值的一致性呢?
这里摸索一个保存为csv文件的方法供参考,详细拆解为七步:
第一步:定义函数
def save_variables_to_csv(variables, filename='D:\\....\\....\\saved_variables.csv'): df = pd.DataFrame(variables).transpose() df.to_csv(filename, index_label='symbol') def load_variables_from_csv(filename='D:\\....\\....\\saved_variables.csv'): if os.path.exists(filename): df = pd.read_csv(filename, index_col='symbol') return df.transpose().to_dict() return {}
第二步:读取文件
saved_variables = load_variables_from_csv() # 读取本地保存的csv文件,供后续程序中对相应变量赋初始值
第三步:初始化变量(字典套字典)
var_one_dict = saved_variables.get('var_one', {}) var_two_dict = saved_variables.get('var_two', {}) var_three_dict = saved_variables.get('var_three', {})
第四步:针对各品种合约赋值(即本地保存的变量值)
假设交易品种有一个列表如下:
symbols = { "KQ.m@DCE.i": "铁矿石", "KQ.m@CZCE.CF": "棉花", .... }
for symbol, name in symbols.items(): var_one = var_one_dict.get(symbol, default_value) var_two = var_two_dict.get(symbol, default_value) var_three = var_three_dict.get(symbol, default_value)
第五步:使用变量(包括可能的变量值更新)
if 条件1满足: var_one = 100; if 条件2满足: var_two = 20;
第六步:根据程序运行结果,逐个品种合约重新对变量赋值
var_one_dict[symbol] = var_one var_two_dict[symbol] = var_two var_three_dict[symbol] = var_three
第七步:关闭api前,保存赋值后的变量。
variables_to_save = { 'var_one': var_one_dict, 'var_two': var_two_dict, 'var_three': var_three_dict, } save_variables_to_csv(variables_to_save) api.close() # 最后关闭api
注意:第五步和第六步,在for symbol, name in symbols.items()的循环中运行,逐个合约使用、并更新其变量。第七步,在循环外运行。
剔刀_隐风 已回答的问题 2024年6月28日