如何在Python单个for循环中遍历两个列表实现对应下单量挂单
解决交易所挂单循环中同时遍历价格和下单量的问题
核心解决方案
你需要同时遍历价格列表和下单量列表,利用Python的zip()函数就能实现两者的一一对应配对,直接替换固定的qty值。
优化下单量列表生成(可选但更简洁)
你当前手动计算每个下单量的方式过于繁琐,可以用循环或列表推导式自动生成:
# 方式1:循环生成 order_size_list = [] current_size = 0.01 for _ in range(8): order_size_list.append(current_size) current_size *= 1.25 # 方式2:列表推导式(更简洁) order_size_list = [0.01 * (1.25 ** i) for i in range(8)]
修改挂单循环逻辑
将原循环改为同时遍历两个列表,把遍历到的下单量传入qty参数:
# 同时遍历价格和对应的下单量 for bid_price, order_size in zip(bid_price_list, order_size_list): session_perp.place_active_order( symbol="ETHUSDT", side="Buy", order_type="Limit", qty=order_size, # 替换为遍历到的自定义下单量 price=bid_price, time_in_force="PostOnly", reduce_only=False, close_on_trigger=False )
处理列表长度不一致的情况
如果bid_price_list和order_size_list长度不同,zip()会以较短的列表为准停止遍历。若想遍历完较长的列表,可使用itertools.zip_longest为缺失的元素设置默认值:
from itertools import zip_longest # 当其中一个列表元素耗尽时,用fillvalue指定默认下单量 for bid_price, order_size in zip_longest(bid_price_list, order_size_list, fillvalue=0.01): session_perp.place_active_order( symbol="ETHUSDT", side="Buy", order_type="Limit", qty=order_size, price=bid_price, time_in_force="PostOnly", reduce_only=False, close_on_trigger=False )
内容的提问来源于stack exchange,提问作者Jack Mahon
相关产品推荐
相关产品推荐

