无法使用Binance Python API设置止损限制顺序

无法使用Binance Python API设置止损限制顺序,python,python-asyncio,binance,ccxt,Python,Python Asyncio,Binance,Ccxt,我正在尝试使用Python asyncio,ccxt-API(为二进制加密交换调用Binance-API)创建一个LONG-TRADE,其中将包含一个BUY-ORDER和一个STOP-LOSS 首先,我创建购买订单。之后,我将等待订单完成。 在它被填满后,我试图创建一个止损单,以配合所创建的多头(原因:如果交易对我不利,我不想损失很多钱) 根据日志,正在创建采购订单。 我在限价单上得到“资金不足” 我不明白为什么我会在止损单上获得“资金不足”的情况,而买入单却很好地通过了(它甚至具有“已填充”的

我正在尝试使用
Python asyncio
ccxt-API
(为二进制加密交换调用
Binance-API
)创建一个
LONG-TRADE
,其中将包含一个
BUY-ORDER
和一个
STOP-LOSS

首先,我创建购买订单。之后,我将等待订单完成。 在它被填满后,我试图创建一个止损单,以配合所创建的多头(原因:如果交易对我不利,我不想损失很多钱)

根据日志,正在创建采购订单。 我在限价单上得到“资金不足”

我不明白为什么我会在止损单上获得“资金不足”的情况,而买入单却很好地通过了(它甚至具有“已填充”的状态)

如果我以9000美元的价格购买.0015 BTC(并且订单已经完成),我应该能够以8875美元的价格止损.0015 BTC(同样,为了在交易对我不利的情况下保留资金)

为什么这不起作用?为什么我不能为我的交易创造止损

ETA:在另一个线程中看到了这一点: 获取利润与停止亏损相反。一人在法庭上执行死刑 向下,另一个在向上执行

问题:我如何构建API,以便可以为订单设置获利止损

[…剪断…]

        logging.info(f'Opened long trade: {amount} of {symbol}. Target buy {stop_loss}, sell price {sell_price}')

        await self._wait_order_complete(order["data"][0]["id"], symbol)

        # set up a stop loss order
        order = self.exchange.ccxt_create_sell_order(symbol, amount, sell_price, stop_loss )

        logging.info(f'Completed long trade: {amount} of {symbol}. Bought at {buy_price} and sold at {sell_price}')

    except ExchangeError as e:
        raise

    except Exception as e:
        print (" unexpected exception ")
        exit()
        return (results)

    except ccxt.InsufficientFunds as e:
        print ("insufficient funds)
        return

    except Exception as e:
        print (" unexpected error ")
        exit()
[…剪断…]

        logging.info(f'Opened long trade: {amount} of {symbol}. Target buy {stop_loss}, sell price {sell_price}')

        await self._wait_order_complete(order["data"][0]["id"], symbol)

        # set up a stop loss order
        order = self.exchange.ccxt_create_sell_order(symbol, amount, sell_price, stop_loss )

        logging.info(f'Completed long trade: {amount} of {symbol}. Bought at {buy_price} and sold at {sell_price}')

    except ExchangeError as e:
        raise

    except Exception as e:
        print (" unexpected exception ")
        exit()
        return (results)

    except ccxt.InsufficientFunds as e:
        print ("insufficient funds)
        return

    except Exception as e:
        print (" unexpected error ")
        exit()
调用BINANCE(对于BUY部件-工作正常): 调用BINANCE(对于销售部分-获取“资金不足”错误): 购买部分的日志 销售部分的日志: def ccxt_创建_销售_订单(self,符号:str,金额:浮动,价格:浮动,停止_价格:浮动): 尝试: 结果={}

        if ( stop_price > 0 ):
            params = { 'stopPrice': stop_price + 10 }
            output  = self.ccxt_binance.createOrder(symbol, 'STOP_LOSS_LIMIT', amount=amount, \
                    side="sell", price = stop_price, params=params)
            print(output)
        else:
            output  = self.ccxt_binance.create_order(symbol=symbol, \
                type="limit", side="sell",amount=amount )
[…剪断…]

        logging.info(f'Opened long trade: {amount} of {symbol}. Target buy {stop_loss}, sell price {sell_price}')

        await self._wait_order_complete(order["data"][0]["id"], symbol)

        # set up a stop loss order
        order = self.exchange.ccxt_create_sell_order(symbol, amount, sell_price, stop_loss )

        logging.info(f'Completed long trade: {amount} of {symbol}. Bought at {buy_price} and sold at {sell_price}')

    except ExchangeError as e:
        raise

    except Exception as e:
        print (" unexpected exception ")
        exit()
        return (results)

    except ccxt.InsufficientFunds as e:
        print ("insufficient funds)
        return

    except Exception as e:
        print (" unexpected error ")
        exit()

您的限价单api post中没有价格,代码太多了,但从最后几行来看,您的问题似乎不是技术性的,因为服务器返回状态为400的正确响应,表明您发送的请求是错误的。通常这意味着它的格式不正确,或者引用了一些不存在的值。由于余额不足,它可能会向您发送400,但您是否尝试在止损请求之前请求您的余额?这表明你有足够的平衡吗?是不是太快了?服务器是事务性的吗?您是否需要在提交止损之前提交购买?感谢您的回复。>>这是很多代码>可能是因为不平衡,它给你发了400。试着解释一下你答案的不同部分,不清楚不同的代码部分是做什么的。
        return (results)

    except ccxt.InsufficientFunds as e:
        print ("insufficient funds)
        return

    except Exception as e:
        print (" unexpected error ")
        exit()