繁体   English   中英

Python 币安 Api 保证金空单

[英]Python Binance Api Margin Short Order

祝大家有美好的一天。 在创建保证金多头订单和偿还贷款时,我没有遇到任何问题。 但是当我尝试创建一个空头订单时,我收到了一个错误。 首先,从系统中借用 function 有效,但是在创建保证金订单时,我收到APIError(code=-1013): Filter failure: LOT_SIZE 我尝试乘以 0.99,但没有用。 我以前在许多不同的页面上搜索过,看看是否有关于它的文章。 请不要重定向到其他页面。

class ShortOrderEntry(Order):
    def __init__(self):
        self.acc = Account.getInstance()

    def Execute(self):
        try:
            self.GetBtcLoan()
            order = self.acc.client.create_margin_order(symbol="BTCUSDT", side=SIDE_SELL, isIsolated='TRUE',
                                                    type=ORDER_TYPE_MARKET,
                                                    quantity=self.acc.FloorPrecisionFix(
                                                        self.MaxBTCAmount() / 100 * 99, 6))
             print(order)
        except Exception as e:
             print("Something Went Wrong While Entering Short Enter Position", e)

    def GetBtcLoan(self):
        try:
            self.acc.client.create_margin_loan(asset="BTC", amount=self.MaxBTCAmount(), symbol="BTCUSDT",
                                           isIsolated='TRUE')
        except Exception as e:
            print("Something Went Wrong While taking short entry loan", e)

    def MaxBTCAmount(self):
        return self.acc.FloorPrecisionFix(self.acc.GetMaxMarginAmount("BTC") / 100 * 99, 6)

我正在写这个答案,以防将来有人会遇到与我类似的问题。 它们对每个符号都有单独的精度。 对于 BTCUSDT,这个精度是 5。而且你不需要从系统中借代码。 系统本身会处理这个问题。 所以 GetBtcLoan() function 在这里是不必要的 function 。

class ShortOrderEntry(Order):
    def __init__(self):
        self.acc = Account.getInstance()
        self.database = Database.getInstance()
    def Execute(self):
        try:
        # self.GetBtcLoan()
            order = self.acc.client.create_margin_order(symbol="BTCUSDT", side=SIDE_SELL, type="MARKET",quantity=self.MaxBTCAmount(), sideEffectType="MARGIN_BUY",isIsolated=True)
            order['price'] = self.acc.CalculateWeightedAvg(order)
            order['side'] = "SHORTENTRY"
            order['commission'] = self.acc.SumOfCommission(order)
            self.database.CreateNewMarginLog(order)
            ClientData.marginLastPosition = order['price']
            print(order)
        except Exception as e:
            print("Something Went Wrong While Entering Short Enter Position", e)

    def MaxBTCAmount(self):
         return self.acc.FloorPrecisionFix(self.acc.GetMaxMarginAmount("BTC") / 100 * 99, 5)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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