binance futures api php

Place orders on Binance’s futures with PHP #6315

Comments

Skowiz commented Dec 25, 2019 •

I would like to place orders on Binance’s futures with PHP but it doesnt work :

The text was updated successfully, but these errors were encountered:

We are unable to convert the task to an issue at this time. Please try again.

The issue was successfully created but we are unable to update the comment at this time.

kroitor commented Dec 25, 2019

kroitor commented Dec 25, 2019

@Skowiz also, for some reason, you’re sending uppercase order type (LIMIT) and side (BUY) – those should be lowercase, as shown in the Manual:

And you have to specify the price of the limit order, for some reason you’re missing the price argument in the createOrder call:

kroitor commented Dec 25, 2019

@Skowiz so, your code should look like:

Let us know if that does not help.

Skowiz commented Dec 25, 2019

The answer I have is

Request: Array ( [0] => POST [1] => https://fapi.binance.com/fapi/v1/order [2] => Array ( [0] => X-MBX-APIKEY: apikey [1] => Content-Type: application/x-www-form-urlencoded ) [3] => timestamp=1577305511040&recvWindow=5000&symbol=BTCUSDT&quantity=0.002&type=LIMIT&side=BUY&price=5000&timeInForce=GTC&signature=xxx ) Response: Array ( [0] => POST [1] => https://fapi.binance.com/fapi/v1/order [2] => 401 [3] => [4] => Array ( [content-type] => Array ( [0] => application/json ) [content-length] => Array ( [0] => 70 ) [date] => Array ( [0] => Wed, 25 Dec 2019 20:25:11 GMT ) [server] => Array ( [0] => Tengine ) [x-mbx-used-weight-1m] => Array ( [0] => 1 ) [x-response-time] => Array ( [0] => 0ms ) [access-control-allow-origin] => Array ( [0] => * ) [access-control-allow-methods] => Array ( [0] => GET, POST, PUT, DELETE, OPTIONS ) [x-cache] => Array ( [0] => Error from cloudfront ) [via] => Array ( [0] => 1.1 5e95d2e6aebe43cabd9dcdad89ad0a42.cloudfront.net (CloudFront) ) [x-amz-cf-pop] => Array ( [0] => AMS54-C1 ) [x-amz-cf-id] => Array ( [0] => xxx== ) ) [5] => <"code":-2015,"msg":"Invalid API-key, IP, or permissions for action.">)

kroitor commented Dec 26, 2019

@Skowiz it says: <"code":-2015,"msg":"Invalid API-key, IP, or permissions for action.">. Which steps from this troubleshooting sequence from the Manual have you tried?

Have you tried a fresh new keypair? Have you checked the API credentials themselves? Any other troubleshooting steps?

Skowiz commented Dec 26, 2019 •

This code place an order, I think it is really a problem with future market

kroitor commented Dec 26, 2019

@Skowiz have you enabled the futures account with Binance? Tried placing any future orders on their website?

I think it is really a problem with future market

It’s hard to tell without getting your answers to all of the above questions here: #6315 (comment)

kroitor commented Dec 26, 2019 •

@Skowiz can you plz post the runtime version of CCXT, as shown below?

This also looks similar to an issue that has been resolved: #6196

kroitor commented Dec 26, 2019

@Skowiz check if the futures account had been activated for you in the futures section of Binance’s website. It won’t work for API keys created before activating the futures account, so the API keys have to be recreated after creating the futures account with Binance’s website. Let us know here if the above does not help.

Skowiz commented Dec 26, 2019 •

My version is : CCXT version: 1.21.15
Yes I have already placed orders with Binance Future website. And I created new keypair 1 hour ago, then I dont know what is the problem.

kroitor commented Dec 26, 2019 •

@Skowiz have you tried reaching out to Binance tech support on this issue? Also, it’s worth checking if your IP is whitelisted with that keypair, just in case. If you send them your verbose output they should be able to help you out quickly, or at least will provide some directions. Without your actual keys it’s hard to test this specific error:

↑ That usually means what it says, literally. The signing works the same way with both spot and futures, so if the key works for regular spot trades, but doesn’t work for futures trades – that’s most likely an issue with the key (wrong credentials in the script itself – you can see and verify those in verbose mode on your side to rule this out) or wrong permissions on that key or something else related to the key. This may also be a temporary block due to a rate-limit violation of some sort.

Skowiz commented Dec 27, 2019

Skowiz commented Dec 28, 2019

kroitor commented Dec 28, 2019

@Skowiz send them your complete verbose request+response pair that you can see in verbose mode, which you can enable as shown above: #6315 (comment)

Skowiz commented Dec 29, 2019

The answer they gave me is :

Then I do not know what is wrong because with verbose mode I have this message

Request: Array ( [0] => POST [1] => https://fapi.binance.com/fapi/v1/order [2] => Array ( [0] => X-MBX-APIKEY: KEY [1] => Content-Type: application/x-www-form-urlencoded ) [3] => timestamp=1577621294544&recvWindow=5000&symbol=BTCUSDT&quantity=0.002&type=LIMIT&side=BUY&price=5000&timeInForce=GTC&signature=033105bdb2a5629a62afd5b214557e4fdea674fb91b546437c693ab71b3d13dd ) Response: Array ( [0] => POST [1] => https://fapi.binance.com/fapi/v1/order [2] => 401 [3] => [4] => Array ( [content-type] => Array ( [0] => application/json ) [content-length] => Array ( [0] => 70 ) [date] => Array ( [0] => Sun, 29 Dec 2019 12:08:15 GMT ) [server] => Array ( [0] => Tengine ) [x-mbx-used-weight-1m] => Array ( [0] => 2 ) [x-response-time] => Array ( [0] => 0ms ) [access-control-allow-origin] => Array ( [0] => * ) [access-control-allow-methods] => Array ( [0] => GET, POST, PUT, DELETE, OPTIONS ) [x-cache] => Array ( [0] => Error from cloudfront ) [via] => Array ( [0] => 1.1 6642832e0f3e501fb9fdc5f35d4351d8.cloudfront.net (CloudFront) ) [x-amz-cf-pop] => Array ( [0] => AMS54-C1 ) [x-amz-cf-id] => Array ( [0] => 55Hl8ONQtU_Q-MMffy0ojAyhJVTHF3j1f5vIRV2PhY4XSbic_NFtug== ) ) [5] => <"code":-2015,"msg":"Invalid API-key, IP, or permissions for action.">)

Читайте также:  Что такое шкентель на судне

kroitor commented Dec 29, 2019 •

You see, the values you use are price=5000 and side=buy, which are beyond limits for BTC/USDT:

See the filters field above and also check out the following:

↑ Your value for the price (5000) does not satisfy the requirements. If the PERCENT_PRICE multiplierDown is 0.85 and the market price is

7200, then the minimal price you can submit is roughly 7200 * 0.85

= 6120 > 5000. And all other filters on that market should be satisfied as well.

Let me know if that does not help.

Skowiz commented Dec 29, 2019

kroitor commented Dec 29, 2019 •

Skowiz commented Dec 29, 2019 •

Thank you very much, everything is working now

Источник

Как создать торгового бота для Binance Futures USDS M

1. Преимущества и недостатки торговли фьючерсами

Платформа Binance Futures позволяет торговать с плечом бессрочными фьючерсными контрактами на криптовалюту.

Преимущества торговли фьючерсами:

Недостатки и риски торговли фьючерсами:

2. Открытие аккаунта на Binance Futures USDT-margin

3. Пополнение фьючерсного счета USDT-margin

4. Создание API ключа на Binance для торговли фьючерсами

5. Добавление API ключа на RevenueBot

6. Создание бота для USDT-margin Binance Futures с использованием меню «Быстрый старт»

Выберите вариант «Создать бота», если:
— вы пока не разбираетесь в тонких настройках и хотите сначала увидеть как бот торгует с популярными и подходящими под большинство случаев настройками;
— пока не хотите, чтобы бот был запущен, а хотите ознакомится с дополнительной информацией по работе сервиса.

Бот будет создан, а пользователь сможет ознакомиться (до запуска бота) со всей информацией о том, как дальше работать с ботом: где посмотреть созданных ботов и осуществить более тонкие настройки, ссылки на статьи «как управлять ботом» и «видеть статистику его работы».

Выберите вариант «Создать и редактировать бота», если вы разбираетесь в тонких настройках бота и хотите их отрегулировать.

Бот будет создан, а пользователю будут доступны тонкие настройки (рекомендуется для опытных пользователей, которые знают, что делают и как работает бот)

Выберите вариант «Создать и запустить бота», если вы хотите быстрее создать и запустить бота в работу с настройками, которые подходят в большинстве случаев. Бот будет создан и запущен. Вы также сможете ознакомиться с информацией как дальше работать с ботом: где посмотреть созданных ботов и осуществить более тонкие настройки, ссылки на статьи «как управлять ботом» и «видеть статистику его работы».

7. Тонкие настройки бота

Вы можете задать тонкие настройки
— при создании бота для Binance Futures в классическом меню «Боты»;
— при нажатии кнопки «Создать и редактировать» в меню Быстрый старт, после того как заданы основные настройки бота.

Основные:

Дополнительные:

Отдельно рассмотрим настройку установки режима позиции.

8. Режим позиции

В настройках фьючерсных ботов есть возможность задать режим позиции.
На данный момент существует 2 режима позиции на Binance Futures. Это «Односторонний режим» и «Режим хеджирования»

Односторонний режим позиции

По умолчанию на бирже задан «Односторонний режим позиции» (One-way mode). Используйте при настройке бота этот режим, если не знаете какой выбрать.
В одностороннем режиме для одной торговой пары в один момент времени может быть открыта позиция только в одном направлении (это либо SHORT, либо LONG позиция).

Для одностороннего режима позиции добавлено 2 настройки. Мы рекомендуем их включить. Для большинства случаев эти настройки дополнительно обезопасят торговлю фьючерсами.

1) Не стартовать бота, если есть открытая позиция или активные ордеры по текущей паре.

Данная настройка не позволит боту вмешаться в уже начатую торговлю, повлияв на открытую позицию (вручную или другим ботом). Боты с автоматическим переключением торговой пары не смогут зайти в одну пару.

2) Размещать тейк-профит ордер с параметром «сокращение позиции».

Данная настройка не позволит боту выйти за рамки открытой позиции или открыть позицию в противоположенном направлении.

В режиме хеджирования для одной торговой пары можно открывать одновременно независимые разнонаправленные позиции (одновременно держать открытыми LONG и SHORT позиции по одной торговой паре).

Данный режим позиции позволяет запускать одновременно двух ботов в одной паре с разными алгоритмами. Будет открыто две разнонаправленные позиции, каждый бот будет контролировать только свою позицию.

Важно! Режим позиции задается один для всех торговых пар, поэтому нельзя запускать ботов с разным режимом позиции.

Режим позиции можно задавать (менять) только если нет открытых позиций. Поэтому, если вы решили сменить режим позиции, то нужно убедиться, что все боты остановлены и их позиции закрыты, кроме этого необходимо закрыть все открытые вручную позиции и только после этого менять режим позиции. Для работы бота не нужно вручную менять режим позиции на бирже. Бот при запуске проверяет режим позиции и меняет его на заданный в настройках бота.

Посмотреть какой режим позиции задан на Binance можно тут:

Источник

Binance futures api php

Larislackers-BinanceApi is a Binance.com API wrapper for PHP. Moreover, the API wrapper supports all available functionality given from Binance along with sockets.

All requests are following the HTTP/1.1 protocol and all responses are returned as a PSR-7 ResponseInterface.

Tests are available after providing your key and secret in the corresponding class.

Information on how to obtain your API key and secret from Binance can be found here.

First things first, in order to use the API wrapper you should initialize it with the aforementioned key and secret like this:

Then, use the initiated object/var like this:

You may find the rest of the supported commands inside the BinanceApiContainer.

Читайте также:  мальчик 11 лет не открывается головка что делать

All parameters required for each function must be in array format. More information can be found in the comments (phpdoc) and the links to the corresponding functions documented at Binance.

Avoid to use hardcoded values; enums are available (for intervals, types, sides, etc) for consistency and compliance with the Binance API.

You should use your own logger (like Sentry) and catch BinanceApiException for exceptions returned from Binance API and LarislackersException for exceptions returned from Websockets.

Don’t reinvent the wheel by trying to cache results in a request lifecycle with static classes. Use a framework that supports caching (like Laravel), an extension (like Memcached) or using files. Additional information can be found here.

More information on how to use the library can be found here.

See the official API documentation for more information about the endpoints and responses.

Larislackers-BinanceApi is open-sourced software licensed under the MIT license

If you find this library to your liking and enjoy using it, please consider a donation to one of the following addresses:

About

A PHP wrapper for the Binance API endpoints.

Источник

Бессрочные фьючерсы Binance Futures COIN-margin

Мы уже описывали преимущества и недостатки торговли с плечом фьючерсными контрактами на криптовалюту, а также процесс создания бота для торговли бессрочными фьючерсами USDT-Margin на бирже Binance, которые появились еще в сентябре 2019 года.
Летом 2020 года на бирже Binance появился новый вид торговли фьючерсами, а именно COIN-margin фьючерсы, которые представлены квартальными и бессрочными фьючерсами.
В данной статье мы рассмотрим бессрочные фьючерсы COIN-Margin. Торговать ими можно с плечом до х125.

1. В чем разница между COIN-Margin и USDT-Margin на Binance Futures?

Основное отличие USDT-Margin фьючерсов и COIN-Margin фьючерсов на бирже Binance заключается в том, что принимается за базовую монету.

Для USDT-Margin фьючерсов базовой монетой является стейблкоин USDT. В USDT нужен исходный депозит для торговли в любой из представленных пар. Профит от торговли получается также только в USDT.
На растущем рынке это может уменьшить профит, так как стоимость криптовалюты растет, а профит получается не в ней, а в стейблкоине USDT.
Кроме того, не все доверяют стейблкоину USDT и не хотят хранить средства в этой монете.
Основным преимуществом USDT-Margin перед COIN-Margin является большее разнообразие торговых пар.

Для COIN-Ⓜ фьючерсов базовой монетой является BTC и ряд других криптовалют (ETH, ADA, LINK, BNB, TRX, DOT, EOS, LTC, BCH, XRP, ETC). Для каждой торговой пары своя базовая монета.

На данный момент на бирже Binance Futures COIN-Ⓜ доступно 12 торговых пар:
BTC-USD
ETH-USD
ADA-USD
LINK-USD
BNB-USD
TRX-USD
DOT-USD
EOS-USD
LTC-USD
BCH-USD
XRP-USD
ETC-USD
Для COIN-Margin USD является контр монетой, к которой ведутся торги.
Цена 1 фьючерсного контракта = 100USD для пары BTC-USD.
Цена 1 фьючерсного контракта = 10USD для пар ETH-USD, ADA-USD, LINK-USD, BNB-USD, TRX-USD, DOT-USD, EOS-USD, LTC-USD, BCH-USD, XRP-USD, ETC-USD.
Криптовалюта при работе с этими контрактами, используется для финансирования начальной маржи (исходный депо для бота нужен в базовой монете) и расчета прибыли и убытков (профит получается также в базовой монете).

Основным преимуществом COIN-Ⓜ перед USDT-Ⓜ является то, что вы получаете профит в криптовалюте, а не USDT и не несете убытки при росте цены криптовалюты, торгуя в USDT.

2. Как создать бота для Binance Futures COIN-Ⓜ

2. Пополнение COIN-Ⓜ фьючерсного счета

3. Создать API ключ для торговли на Futures COIN-Ⓜ

5. Добавление API ключа на RevenueBot

6. Создание бота для Binance Futures COIN-Ⓜ

На примере ботов в разных торговых парах:
— Если у бота задана торговая пара TRX-USD, то депозит у бота должен быть в TRX и для LONG и для SHORT алгоритмов. Профит также будет в TRX. На COIN-Ⓜ счете должны быть монеты TRX для торговли такого бота.
— Если у бота задана торговая пара DOT-USD, то депозит у бота должен быть в DOT и для LONG и для SHORT алгоритмов. Профит также будет в DOT. На COIN-Ⓜ счете должны быть монеты DOT для торговли такого бота.
Таким образом получаем, что для каждой торговой пары на COIN-Ⓜ счету должна быть заведена своя криптовалюта, которая будет использована биржей для финансирования начальной маржи.

При торговле фьючерсами COIN-Ⓜ на биржу при отправке ордера помимо цены, передается количество контрактов, которое мы хотим купить или продать.
Цена 1 фьючерсного контракта = 100USD для пары BTC-USD.
Цена 1 фьючерсного контракта = 10USD для пар ETH-USD, ADA-USD, LINK-USD, BNB-USD, TRX-USD, DOT-USD, EOS-USD, LTC-USD, BCH-USD, XRP-USD, ETC-USD.

Для создания сетки ордеров бот рассчитывает на сколько контрактов хватит ему выделенного пользователем депозита и сколько контрактов будет в каждом из ордеров сетки. По правилам биржи количество контрактов в ордере — это целое число. Данное правило биржи влияет на настройку мартингейла в весах ордеров сетки. Чтобы мартингейл в весах ордеров работал корректно, нужно задавать его побольше, чем для обычной торговли, где разрешены знаки после точки в амаунтах ордеров. Это особенно важно при торговле с маленьким депозитом и маленьким кредитным плечом когда количество контрактов в ордерах мало.

Задайте плечо, это по сути умножение вашего депо (заемные средства у биржи). Благодаря этим заемным средствам, вы получаете возможность увеличить объем своих торговых операций и прибыль.
Не жадничайте и не используйте максимальные плечи, это очень рискованно. Обязательно держите на фьючерсном счете страховочные средства, которые не вовлечены в торговлю до нужного момента. Это даст возможность вытянуть открытую позицию в плюс.

Помните о рисках:
— Если вы используете большой размер кредитного плеча, то в случае экстремального изменения цены, существует вероятность, что весь маржинальный баланс во фьючерсном кошельке может быть ликвидирован. Поэтому нужно полностью разобраться и понимать, как работает данный инструмент торговли и уметь оценивать риски.
— Кроме того, важно выработать и строго соблюдать money management, чтобы избежать ликвидации всех средств.
— Обязательно иметь на фьючерсном счете страховочные средства, которые не вовлекать в торговлю до нужного момента. Это даст возможность вытянуть открытую позицию в плюс.

Читайте также:  Что такое хронический недосып и как проявляется

По умолчанию на бирже задан «Односторонний режим позиции» (One-way mode). Используйте при настройке бота этот режим, если не знаете какой выбрать.
В одностороннем режиме для одной торговой пары в один момент времени может быть открыта позиция только в одном направлении (это либо SHORT, либо LONG позиция).
Подробнее о режимах позиции читайте в п.8 статьи https://blog.revenuebot.io/ru/2020/04/23/binance-futures/#rezim_pozicii:

Выберите вариант «Создать бота», если:
— вы пока не разбираетесь в тонких настройках и хотите сначала увидеть как бот торгует с популярными и подходящими под большинство случаев настройками;
— пока не хотите, чтобы бот был запущен, а хотите ознакомиться с дополнительной информацией по работе сервиса.

Бот будет создан, а пользователь сможет ознакомиться (до запуска бота) со всей информацией о том, как дальше работать с ботом: где посмотреть созданных ботов и осуществить более тонкие настройки, ссылки на статьи «как управлять ботом» и «видеть статистику его работы».

Выберите вариант «Создать и редактировать бота», если вы разбираетесь в тонких настройках бота и хотите их отрегулировать.

Бот будет создан, а пользователю будут доступны тонкие настройки (рекомендуется для опытных пользователей, которые знают, что делают и как работает бот)

Выберите вариант «Создать и запустить бота», если вы хотите быстрее создать и запустить бота в работу с настройками, которые подходят в большинстве случаев. Бот будет создан и запущен. Вы также сможете ознакомиться с информацией как дальше работать с ботом: где посмотреть созданных ботов и осуществить более тонкие настройки, ссылки на статьи «как управлять ботом» и «видеть статистику его работы».

Источник

Как создать криптовалютный дашборд с помощью Plotly и API Binance

Упрощаем отслеживание активов

Как установить API Binance

Binance предоставляет два типа доступа к API: реальный и тестовый.

Настраиваем реальный API Binance

Реальный API обеспечивает прямой доступ к аккаунту. В нем будут отражены любые сделки, совершенные через этот API. Поэтому использовать его следует с осторожностью.

Для начала нужно зарегистрироваться на Binance.

После регистрации вам будет предложено установить двухфакторную аутентификацию (2FA). Вы также можете подключить ее самостоятельно в настройках безопасности.

Затем переходим во вкладку API Management в настройках. Вам будет предложено установить метки для ключей API. Эта функция пригодится тем, у кого есть несколько ключей, связанных с одним аккаунтом.

Указываем метки и нажимаем Create API. После этого нужно пройти аутентификацию еще раз. Затем отобразятся API Key и Secret Key. Скопируйте их в безопасное место. По умолчанию получить доступ к ключам можно следующим способом, который можно изменить:

Мы будем использовать ключи как реального, так и тестового API, чтобы понять, как с ними работать. С целью не засорять реальный аккаунт установим доступ только для чтения для ключей реального API:

Настраиваем тестовый API Binance

Тестовый API Binance полностью имитирует взаимодействие с реальным API. Рекомендуем для начала повзаимодействовать с ним, чтобы убедиться в корректности работы приложения.

Для начала необходимо войти в систему: https://testnet.binance.vision/ (на данный момент вход поддерживается только с GitHub).

Затем нажмите на Generate HMAC_SHA256 Key (Сгенерировать ключ HMAC_SHA256) и снова укажите метки для ключей. Отобразившиеся после создания ключи также скопируйте в безопасное место. Все подробности о тестовом API можно прочитать на главной странице.

Как получить данные с помощью API Binance

Устанавливаем библиотеку python-binance

Устанавливаем python-binance с помощью следующей команды:

Получаем информацию об аккаунте

В этом разделе мы воспользуемся тестовым аккаунтом. По умолчанию в нем будет отображаться баланс различных криптовалют. У python-binance нет доступа к тестовому API, поэтому мы поменяем URL-адрес конечной точки.

Код ниже предоставляет информацию о тестовом аккаунте:

Мы получаем такие важные данные, как тип аккаунта ( accountType ), баланс, разрешение и прочие.

Теперь получим баланс ETH:

Библиотека python-binance предоставляет много возможностей. Подробную информацию о ней можно найти в документации.

Получаем архивные данные

Тестовый API выдает фиктивные архивные данные. Поэтому мы воспользуемся реальным API и его ключами.

Ниже показано, как получить стоимость ETH на Binance с самой ранней даты до текущего дня:

Вывод выше представляет следующие параметры, упомянутые в документации Binance API:

Преобразовываем полученные данные в датафрейм и сохраняем его как файл CSV:

Получаем данные в реальном времени

Чтобы передавать данные в реальном времени, можно воспользоваться WebSocket Binance. Вот как это сделать:

Ниже показано, как остановить потоковую передачу данных и закрыть WebSocket:

Итак, мы научились получать данные несколькими способами. Теперь можно переходить к созданию дашборда Plotly.

Как создать дашборд с помощью Plotly

В этом разделе мы создадим дашборд с помощью Plotly, который будет отслеживать криптовалютный портфель тестового аккаунта в реальном времени и изменять его общую стоимость в зависимости от получаемых данных.

Вот как будет выглядеть финальная версия дашборда. Детали внешнего вида можно изменить позднее:

В дашборд включены следующие функции:

Теперь рассмотрим код.

2. Прочитываем все ключи, устанавливаем соединение и получаем информацию об аккаунте:

3. Определяем функции, которые будут обрабатывать потоковые данные и рассчитывать показатели на их основе:

4. Начинаем передавать данные в реальном времени:

5. Определяем макет, графики и хостинг:

Вот и все! Этот код позволяет отслеживать криптовалютный портфель тестового аккаунта. Его можно с легкостью настроить и для реального аккаунта без изменения URL-адреса конечной точки.

Весь код можно найти в репозитории на GitHub.

Источник

Образовательный портал