股票需要多单下单

问题描述 投票:0回答:2

我需要用 python 编写代码来下订单。每个订单不能超过一定数量,比如 600。如果所需数量是 1900,我需要下三个订单,每个 600 中的 3 个和剩余的 1 个。我尝试了一个 for 循环:

max_qty=600
req_qty=1900
for qty in range(max_qty, req_qty, max_qty):
   print(qty) 

这似乎不是正确的方法。请帮助。

python slice
2个回答
0
投票

尝试以下方法,我在其中放置了一个函数

place_order
来表示下实际订单的代码是什么。

  1. 在我们还有剩余数量的库存要订购时循环
  2. 获取下一个子订单的数量,它是请求数量的smaller或最大限制
  3. 一次下最大数量的订单。
  4. 通过减去订购金额来更新未完成的请求金额
def place_order(qty):
    # Do the actual ordering
    ...
    

max_qty=600
req_qty=1900

while req_qty:
    order_qty = min(req_qty, max_qty)
    place_order(order_qty)   # Place the order
    req_qty -= order_qty

有些事情我没有包括在内,因为它们超出了原始问题的范围:

  1. 您可以让 place_order 返回 True 或 False 来判断它是否真的成功,并且只在成功时更新 req_qty
  2. 在实际应用程序中,您可能会在订购功能上使用类似 async/await 的东西,这样您就可以下多个订单,而无需等待前一个订单完成。

0
投票

这是一段使用

divmod
的代码:

max_qty=600
req_qty=1900
full_orders, remainder = divmod(req_qty, max_qty)
for i in range(full_orders):
    place_order(max_qty)
if remainder:
    place_order(remainder)
© www.soinside.com 2019 - 2024. All rights reserved.