Я пытаюсь создать ДЛИННУЮ СДЕЛКУ, которая будет содержать ОРДЕР НА ПОКУПКУ и СТОП-ЛОСС, используя Python asyncio, ccxt API (который вызывает Binance API для Binance Crypto Exchange).
Сначала я создаю ОРДЕР НА ПОКУПКУ. После этого жду, пока заказ будет выполнен.
ПОСЛЕ того, как он заполнен, я пытаюсь создать ордер СТОП-ЛОСС для созданной ДЛИННОЙ позиции (Причина: я не хочу потерять много денег, если сделка движется против меня).
Согласно логу, ордер на покупку создается нормально.
Я получаю «недостаточно средств» по ордеру СТОП-ЛИМИТ .
Я не понимаю, почему я получаю «недостаточно средств» по ордеру СТОП-ЛОСС, когда ордер ПОКУПКА прошел нормально (он даже имеет статус ИСПОЛНЕН).
Если я КУПЛЮ 0,0015 BTC за 9000 долларов США (и ордер ИСПОЛНЕН) ), я должен иметь возможность установить СТОП-ЛОСС 0,0015 BTC за 8875 долларов США (опять же, чтобы сохранить средства на случай, если сделка пойдет против меня)
Почему это не работает? Почему я не могу установить СТОП-ЛОСС для своей сделки?
ETA: Видел это в другой теме:
< blockquote>
TAKE_PROFIT является противоположностью STOP_LOSS. Один выполняется
вниз, другой — вверх.
ВОПРОС: Как мне структурировать API так, чтобы Для ордера можно установить TAKE_PROFIT и STOP_LOSS?
async def execute_long_trade(self, trade: LongTrade):
try:
buy_price = trade.start_price
sell_price = trade.exit_price
symbol = trade.exchange_symbol
amount = trade.amount
stop_loss = trade.stop_loss
order = self.exchange.ccxt_create_buy_order(symbol, amount, buy_price, 0 )
[ ... фрагмент ...]
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()
[ ... фрагмент ...]
ВЫЗОВ BINANCE (для части ПОКУПКИ — это работает нормально) ) :
def ccxt_create_buy_order( self, symbol: str, amount: float, price: float, stop_price: float ):
try:
results = {}
if ( stop_price > 0 ):
params = { 'stopPrice': stop_price - 10 }
output = self.ccxt_binance.createOrder(symbol, 'STOP_LOSS_LIMIT', amount=amount, side="buy",
price = stop_price, params=params)
else:
output = self.ccxt_binance.create_order(symbol=symbol, type="limit", side="buy",\
amount=amount, price=price )
[ ... snip ...]
return (results)
except ccxt.InsufficientFunds as e:
print ("insufficient funds)
return
except Exception as e:
print (" unexpected error ")
exit()
ЗВОНОК BINANCE (для ЧАСТИ ПРОДАЖИ – ошибка «недостаточно средств»):
def ccxt_create_sell_order( self, symbol: str, amount: float, price: float, stop_price: float ):
try:
results = {}
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 )
[ ... snip ...]
return (results)
except ccxt.InsufficientFunds as e:
print ("insufficient funds)
return
except Exception as e:
print (" unexpected error ")
exit()
ЖУРНАЛ ДЛЯ ПОКУПКИ
2020-06-10 01:01:08 - DEBUG - 16537 - ccxt.base.exchange - DEBUG
MESSAGE : POST https://api.binance.com/api/v3/order, Request: {'X-MBX-APIKEY': 'JXXXXXXXX-XXXXXX', 'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'python-requests/2.21.0', 'Accept-Encoding': 'gzip, deflate'} timestamp=1591750868935&recvWindow=5000&symbol=BTCUSDT&type=LIMIT&side=BUY&quantity=0.0015&newOrderRespType=RESULT&price=9777.99&timeInForce=GTC&signature=XXXXXXXXXXXX-XXXXXXXXXXXXXX
2020-06-10 01:01:09 - DEBUG - 16537 - urllib3.connectionpool - DEBUG
MESSAGE : https://api.binance.com:443 "POST /api/v3/order HTTP/1.1" 200 None
2020-06-10 01:01:09 - DEBUG - 16537 - ccxt.base.exchange - DEBUG
MESSAGE : POST https://api.binance.com/api/v3/order, Response: 200 {'Content-Type': 'application/json;charset=utf-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Date': 'Wed, 10 Jun 2020 01:01:09 GMT', 'Server': 'nginx', 'X-MBX-UUID': 'XXXXXXXXX-XXXXx', 'X-MBX-USED-WEIGHT': '5', 'X-MBX-USED-WEIGHT-1M': '5', 'X-MBX-ORDER-COUNT-10S': '1', 'X-MBX-ORDER-COUNT-1D': '10', 'Content-Encoding': 'gzip', 'Strict-Transport-Security': 'max-age=31536000; includeSubdomains', 'X-Frame-Options': 'SAMEORIGIN', 'X-Xss-Protection': '1; mode=block', 'X-Content-Type-Options': 'nosniff', 'Content-Security-Policy': "default-src 'self'", 'X-Content-Security-Policy': "default-src 'self'", 'X-WebKit-CSP': "default-src 'self'", 'Cache-Control': 'no-cache, no-store, must-revalidate', 'Pragma': 'no-cache', 'Expires': '0', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'GET, HEAD, OPTIONS', 'X-Cache': 'Miss from cloudfront', 'Via': '1.1 e9ccfc64a258a54713XXXXb7b.cloudfront.net (CloudFront)', 'X-Amz-Cf-Pop': 'ATL56-C3', 'X-Amz-Cf-Id': 'gXXXXXXXXXXX-XXX9TzUqeLltao4UiQ=='} {"symbol":"BTCUSDT","orderId":2434736796,"orderListId":-1,"clientOrderId":"93XXXXXXXECejmtfb","transactTime":1591750869025,"price":"9777.99000000","origQty":"0.00150000","executedQty":"0.00150000","cummulativeQuoteQty":"14.66698500","status":"FILLED","timeInForce":"GTC","type":"LIMIT","side":"BUY"}
ЖУРНАЛ ДЛЯ ПРОДАЖИ:
2020-06-10 01:01:24 - DEBUG - 16537 - ccxt.base.exchange - DEBUG
MESSAGE : POST https://api.binance.com/api/v3/order, Request: {'X-MBX-APIKEY': 'XXXXXXXXX-XXX', 'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'python-requests/2.21.0', 'Accept-Encoding': 'gzip, deflate'} timestamp=1591750884617&recvWindow=5000&symbol=BTCUSDT&type=STOP_LOSS_LIMIT&side=SELL&quantity=0.0015&newOrderRespType=RESULT&price=9670.21&timeInForce=GTC&stopPrice=9680.21&signature=XXXXXXX-XXXXXXX-XXXXXXXXXXX-XXXXXXXXXXXXX
2020-06-10 01:01:24 - DEBUG - 16537 - urllib3.connectionpool - DEBUG
MESSAGE : https://api.binance.com:443 "POST /api/v3/order HTTP/1.1" 400 None
2020-06-10 01:01:24 - DEBUG - 16537 - ccxt.base.exchange - DEBUG
MESSAGE : POST https://api.binance.com/api/v3/order, Response: 400 {'Content-Type': 'application/json;charset=utf-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Date': 'Wed, 10 Jun 2020 01:01:24 GMT', 'Server': 'nginx', 'X-MBX-UUID': 'XXXXXX-023741e9e18b', 'X-MBX-USED-WEIGHT': '7', 'X-MBX-USED-WEIGHT-1M': '7', 'X-MBX-ORDER-COUNT-10S': '1', 'X-MBX-ORDER-COUNT-1D': '11', 'Strict-Transport-Security': 'max-age=31536000; includeSubdomains', 'X-Frame-Options': 'SAMEORIGIN', 'X-Xss-Protection': '1; mode=block', 'X-Content-Type-Options': 'nosniff', 'Content-Security-Policy': "default-src 'self'", 'X-Content-Security-Policy': "default-src 'self'", 'X-WebKit-CSP': "default-src 'self'", 'Cache-Control': 'no-cache, no-store, must-revalidate', 'Pragma': 'no-cache', 'Expires': '0', 'X-Cache': 'Error from cloudfront', 'Via': '1.1 e9XXXXXXXX-09e5b7b.cloudfront.net (CloudFront)', 'X-Amz-Cf-Pop': 'ATL56-C3', 'X-Amz-Cf-Id': 'XXXXXXX'} {"code":-2010,"msg":"Account has insufficient balance for requested action."}
Подробнее здесь: https://stackoverflow.com/questions/622 ... python-api
Невозможно установить лимитный ордер STOP-LOSS с помощью Binance Python API. ⇐ Python
Программы на Python
1731589345
Anonymous
Я пытаюсь создать ДЛИННУЮ СДЕЛКУ, которая будет содержать ОРДЕР НА ПОКУПКУ и СТОП-ЛОСС, используя Python asyncio, ccxt API (который вызывает Binance API для Binance Crypto Exchange).
Сначала я создаю ОРДЕР НА ПОКУПКУ. После этого жду, пока заказ будет выполнен.
ПОСЛЕ того, как он заполнен, я пытаюсь создать ордер СТОП-ЛОСС для созданной ДЛИННОЙ позиции ([b]Причина[/b]: я не хочу потерять много денег, если сделка движется против меня).
Согласно логу, ордер на покупку создается нормально.
Я получаю «недостаточно средств» по ордеру СТОП-ЛИМИТ .
Я не понимаю, почему я получаю «недостаточно средств» по ордеру СТОП-ЛОСС, когда [b]ордер ПОКУПКА[/b] [b]прошел нормально[/b] (он даже имеет статус [b]ИСПОЛНЕН[/b]).
Если я КУПЛЮ 0,0015 BTC за 9000 долларов США (и ордер [b]ИСПОЛНЕН) [/b]), я должен иметь возможность установить СТОП-ЛОСС 0,0015 BTC за 8875 долларов США (опять же, чтобы сохранить средства на случай, если сделка пойдет против меня)
Почему это не работает? Почему я не могу установить СТОП-ЛОСС для своей сделки?
ETA: Видел это в другой теме:
< blockquote>
[b]TAKE_PROFIT[/b] является противоположностью [b]STOP_LOSS[/b]. Один выполняется
вниз, другой — вверх.
[b]ВОПРОС[/b]: Как мне структурировать API так, чтобы Для ордера можно установить [b]TAKE_PROFIT[/b] и [b]STOP_LOSS[/b]?
async def execute_long_trade(self, trade: LongTrade):
try:
buy_price = trade.start_price
sell_price = trade.exit_price
symbol = trade.exchange_symbol
amount = trade.amount
stop_loss = trade.stop_loss
order = self.exchange.ccxt_create_buy_order(symbol, amount, buy_price, 0 )
[ ... фрагмент ...]
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()
[ ... фрагмент ...]
ВЫЗОВ BINANCE (для части ПОКУПКИ — это работает нормально) ) :
def ccxt_create_buy_order( self, symbol: str, amount: float, price: float, stop_price: float ):
try:
results = {}
if ( stop_price > 0 ):
params = { 'stopPrice': stop_price - 10 }
output = self.ccxt_binance.createOrder(symbol, 'STOP_LOSS_LIMIT', amount=amount, side="buy",
price = stop_price, params=params)
else:
output = self.ccxt_binance.create_order(symbol=symbol, type="limit", side="buy",\
amount=amount, price=price )
[ ... snip ...]
return (results)
except ccxt.InsufficientFunds as e:
print ("insufficient funds)
return
except Exception as e:
print (" unexpected error ")
exit()
ЗВОНОК BINANCE (для ЧАСТИ ПРОДАЖИ – ошибка «недостаточно средств»):
def ccxt_create_sell_order( self, symbol: str, amount: float, price: float, stop_price: float ):
try:
results = {}
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 )
[ ... snip ...]
return (results)
except ccxt.InsufficientFunds as e:
print ("insufficient funds)
return
except Exception as e:
print (" unexpected error ")
exit()
ЖУРНАЛ ДЛЯ ПОКУПКИ
2020-06-10 01:01:08 - DEBUG - 16537 - ccxt.base.exchange - DEBUG
MESSAGE : POST https://api.binance.com/api/v3/order, Request: {'X-MBX-APIKEY': 'JXXXXXXXX-XXXXXX', 'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'python-requests/2.21.0', 'Accept-Encoding': 'gzip, deflate'} timestamp=1591750868935&recvWindow=5000&symbol=BTCUSDT&type=LIMIT&side=BUY&quantity=0.0015&newOrderRespType=RESULT&price=9777.99&timeInForce=GTC&signature=XXXXXXXXXXXX-XXXXXXXXXXXXXX
2020-06-10 01:01:09 - DEBUG - 16537 - urllib3.connectionpool - DEBUG
MESSAGE : https://api.binance.com:443 "POST /api/v3/order HTTP/1.1" 200 None
2020-06-10 01:01:09 - DEBUG - 16537 - ccxt.base.exchange - DEBUG
MESSAGE : POST https://api.binance.com/api/v3/order, Response: 200 {'Content-Type': 'application/json;charset=utf-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Date': 'Wed, 10 Jun 2020 01:01:09 GMT', 'Server': 'nginx', 'X-MBX-UUID': 'XXXXXXXXX-XXXXx', 'X-MBX-USED-WEIGHT': '5', 'X-MBX-USED-WEIGHT-1M': '5', 'X-MBX-ORDER-COUNT-10S': '1', 'X-MBX-ORDER-COUNT-1D': '10', 'Content-Encoding': 'gzip', 'Strict-Transport-Security': 'max-age=31536000; includeSubdomains', 'X-Frame-Options': 'SAMEORIGIN', 'X-Xss-Protection': '1; mode=block', 'X-Content-Type-Options': 'nosniff', 'Content-Security-Policy': "default-src 'self'", 'X-Content-Security-Policy': "default-src 'self'", 'X-WebKit-CSP': "default-src 'self'", 'Cache-Control': 'no-cache, no-store, must-revalidate', 'Pragma': 'no-cache', 'Expires': '0', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'GET, HEAD, OPTIONS', 'X-Cache': 'Miss from cloudfront', 'Via': '1.1 e9ccfc64a258a54713XXXXb7b.cloudfront.net (CloudFront)', 'X-Amz-Cf-Pop': 'ATL56-C3', 'X-Amz-Cf-Id': 'gXXXXXXXXXXX-XXX9TzUqeLltao4UiQ=='} {"symbol":"BTCUSDT","orderId":2434736796,"orderListId":-1,"clientOrderId":"93XXXXXXXECejmtfb","transactTime":1591750869025,"price":"9777.99000000","origQty":"0.00150000","executedQty":"0.00150000","cummulativeQuoteQty":"14.66698500","status":"FILLED","timeInForce":"GTC","type":"LIMIT","side":"BUY"}
ЖУРНАЛ ДЛЯ ПРОДАЖИ:
2020-06-10 01:01:24 - DEBUG - 16537 - ccxt.base.exchange - DEBUG
MESSAGE : POST https://api.binance.com/api/v3/order, Request: {'X-MBX-APIKEY': 'XXXXXXXXX-XXX', 'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'python-requests/2.21.0', 'Accept-Encoding': 'gzip, deflate'} timestamp=1591750884617&recvWindow=5000&symbol=BTCUSDT&type=STOP_LOSS_LIMIT&side=SELL&quantity=0.0015&newOrderRespType=RESULT&price=9670.21&timeInForce=GTC&stopPrice=9680.21&signature=XXXXXXX-XXXXXXX-XXXXXXXXXXX-XXXXXXXXXXXXX
2020-06-10 01:01:24 - DEBUG - 16537 - urllib3.connectionpool - DEBUG
MESSAGE : https://api.binance.com:443 "POST /api/v3/order HTTP/1.1" 400 None
2020-06-10 01:01:24 - DEBUG - 16537 - ccxt.base.exchange - DEBUG
MESSAGE : POST https://api.binance.com/api/v3/order, Response: 400 {'Content-Type': 'application/json;charset=utf-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Date': 'Wed, 10 Jun 2020 01:01:24 GMT', 'Server': 'nginx', 'X-MBX-UUID': 'XXXXXX-023741e9e18b', 'X-MBX-USED-WEIGHT': '7', 'X-MBX-USED-WEIGHT-1M': '7', 'X-MBX-ORDER-COUNT-10S': '1', 'X-MBX-ORDER-COUNT-1D': '11', 'Strict-Transport-Security': 'max-age=31536000; includeSubdomains', 'X-Frame-Options': 'SAMEORIGIN', 'X-Xss-Protection': '1; mode=block', 'X-Content-Type-Options': 'nosniff', 'Content-Security-Policy': "default-src 'self'", 'X-Content-Security-Policy': "default-src 'self'", 'X-WebKit-CSP': "default-src 'self'", 'Cache-Control': 'no-cache, no-store, must-revalidate', 'Pragma': 'no-cache', 'Expires': '0', 'X-Cache': 'Error from cloudfront', 'Via': '1.1 e9XXXXXXXX-09e5b7b.cloudfront.net (CloudFront)', 'X-Amz-Cf-Pop': 'ATL56-C3', 'X-Amz-Cf-Id': 'XXXXXXX'} {"code":-2010,"msg":"Account has insufficient balance for requested action."}
Подробнее здесь: [url]https://stackoverflow.com/questions/62294875/unable-to-set-the-stop-loss-limit-order-using-binance-python-api[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия