我在Python上的ccxt有个小问题。我正在(试图)编码一个交易机器人,它接受我的自定义tradingview信号。因此,我一直在修改一些测试代码,它在testnet.binance上打开了一个交易,在BTC/USDT和一定的杠杆作用下,我的所有余额都在雪崩。
然而,我对杠杆有一个问题。实际上,代码提到了10的杠杆,当我在本地运行代码时,UI提到了一个杠杆“孤立的x10”,但是没有在位置大小中考虑到它(见图)。我的余额大约为2600美元,贸易价值为2600美元。
通过UI手动完成它,并且使用我的余额的100%,我确实得到了‘孤立的x10’中的值为26000 USDT,这是预期的。
你知不知道为什么它会考虑杠杆,但不适用于该头寸?
以下是代码:
import ccxt
import config
binaance = ccxt.binance({
'enableRateLimit': True,
'options': {
'defaultType': 'future',
},
'apiKey': config.API_KEY,
'secret': config.API_SECRET,
'passphrase': config.PASSPHRASE,
})
binaance.set_sandbox_mode(True)
markets = binaance.load_markets()
symbol = 'BTC/USDT'
market = binaance.market(symbol)
binaance.fapiPrivate_post_leverage({
'symbol': 'BTCUSDT',
'leverage': 10,
})
def trade_crypto(request):
free_balance = float(binaance.fetch_balance().get('USDT').get('free'))
last_price = float(binaance.fetchTicker('BTC/USDT').get('last'))
amount = free_balance / last_price
order = binaance.create_market_buy_order('BTC/USDT', amount)
return order
谢谢你在这里所做的一切!这很有帮助。
在@Sam应答后编辑1
嘿,@Sam,首先,非常感谢您的回答。我没有检查右边的空白处,所以谢谢你!我确信我的计算是正确的,所以我没有去看那里。如果我正确理解的话,订单已经动用了我资本的10% (260美元),以获得10倍的杠杆,交易价值为2600美元。所以我在计算上做了一个改变,就是:
leverage = 10
amount = (free_balance / last_price) * leverage
Result = (2600 / 38900) * 10 = approximately 0.6 btc
但后来我得到了“资金不足”,这是预期的,因为它试图用26,000美元,从我的可用余额,但帐户只有2600。
那么,如何考虑贸易价值必须是我的余额价值的10倍(=26000 USDT),而只使用2600 USDT (通过用户界面是可能的)这一事实?
在这张图片通过用户界面购买,我们可以看到,通过10倍的杠杆,我可以把我的2600美元可用余额,贸易价值约为26000美元。我无法复制这种行为准则。希望你或其他人能启发我啊。
Ps :我可能没有提过,但它涉及到永久期货合约的交易。
在找到答案后编辑2
我终于发现了错误。我必须将我的“金额”设置乘以杠杆,才能在BTC中获得杠杆的价格,并且只投入99%的杠杆,因为很明显,它不能把我余额的100% (或者可能可以,但我没有找到怎么做)。因为用我的方法,最后的价格可能会变化,因此改变不能用我的总余额买卖的数量)。
我仍然需要找到一种方法,把我的余额的100% (也许是一个参数,不会考虑到最后的价格)。
代码修改:
amount = ((free_balance / last_price) * 10 ) * 0.99
https://stackoverflow.com/questions/71910014
复制相似问题