繁体   English   中英

如何以不同的价格向 FTX 或 binace 发送多个订单

[英]How to send multiple orders to FTX or binace in different prices

我有来自 excel 文件的df 因此,我想通过在id open列上的每i行上循环,在 python 中发送多个订单。 如果id open == 0则选择价格为50.239030.3245

如何发送多个订单交换为50.239030.3245 (FTX 或 binance, y是价格列表)并且还将来自服务器交换的id响应替换为在0id 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM