![](/img/trans.png)
[英]How to send multiple orders to binance at incrementally decreasing prices in python using FOR loop
[英]How to send multiple orders to FTX or binace in different prices
我有来自 excel 文件的df
。 因此,我想通过在id open
列上的每i
行上循环,在 python 中发送多个订单。 如果id open == 0
则选择价格为50.2390
和30.3245
。
如何发送多个订单交换为50.2390
和30.3245
。 (FTX 或 binance, y
是价格列表)并且还将来自服务器交换的id
响应替换为在0
处id open
。
谢谢
df
price id open
70.0000 23457
50.2390 0
40.3125 23458
30.3245 0
代码
def goal():
for i in range(len(df)):
x = df.iloc[i, 1]
y = df.iloc[i, 0]
if x == 0:
response= ftx.create_order('ONE/USD','limit','buy',0.1,y)
print(response)
while True:
goal()
time.sleep(1.0)
我不确定是什么问题 - 也许你应该做df.iloc[i, 1] = response
但我宁愿使用.apply()
(而不是for
-loop)在df
的每一行上执行一些 function 并返回新行(有更改)并分配回df
def goal(row):
if row['id open'] == 0:
price = row['price']
response = ftx.create_order('ONE/USD', 'limit', 'buy', 0.1, price)
#print(response)
row['id open'] = response
return row
# --- main ---
df = df.apply(goal, axis=1) # `axis=1` for `rows` instead of `columns`
它还可以在apply()
之前过滤id open == 0
的行,然后它不需要在 function 内部进行
def goal(row):
price = row['price']
response = ftx.create_order('ONE/USD', 'limit', 'buy', 0.1, price)
#print(response)
row['id open'] = response
return row
# --- main ---
df[ df['id open'] == 0 ] = df[ df['id open'] == 0 ].apply(goal, axis=1)
并且更具可读性
selected = (df['id open'] == 0) #
df[ selected ] = df[ selected ].apply(goal, axis=1)
它可以减少。 Function 可以返回response
并分配给df.loc[ selected, 'id open']
。 它需要.loc
。
def goal(row):
price = row['price']
response = ftx.create_order('ONE/USD', 'limit', 'buy', 0.1, price)
#print(response)
return response
# --- main ---
selected = (df['id open'] == 0)
df.loc[ selected, 'id open'] = df[ selected ].apply(goal, axis=1)
而这可以简化为lambda
goal = lambda row: ftx.create_order('ONE/USD', 'limit', 'buy', 0.1, row['price'])
# --- main ---
selected = (df['id open'] == 0)
df.loc[ selected, 'id open'] = df[ selected ].apply(goal, axis=1)
但是在lambda
中,您不能使用try/except
来捕获连接问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.