Пауза в команде
7.18.0
Введение
Запись паузы. Следующая запись приостановит выполнение команды на 1000 миллисекунд
pause=1000
Основная цель пауз - совершать действия с измененным балансом. Зачастую паузы применяются в сцепках команд. Рассмотрим следующий код:
mktype=spot;get=balance::mktype=spot;get=symprice;symbol=ethusdt
Заявленная сцепка покажет актуальный баланс спот-кошелька и вернет цену ETH к USDT. Выполнение займет достаточно короткое время - примерно 5-15 миллисекунд. Выставление паузы в данной сцепке не имеет смысла, так как последующая команда никак не зависит от предыдущей.\
Рассмотрим традиционную задачу торговли - переворот позиции. Дано - длинная позиция (BUY) которую необходимо закрыть и открыть такую же короткую позицию (SELL) Команда закрытия длинной позиции
mktype=futures;symbol=ethusdt;side=buy;type=market;closepro=100;reduceonly!
Команда открытия короткой позиции
mktype=futures;symbol=ethusdt;side=sell;type=market;openpro=100;lev=2
Объединяем их при помощи символа сцепки - ::
mktype=futures;symbol=ethusdt;side=buy;type=market;closepro=100;reduceonly!::mktype=futures;symbol=ethusdt;side=sell;type=market;openpro=100;lev=2
Пытаемся выполнить. И получаем ошибку - недостаточно баланса для открытия позиции. При этом длинная позиция успешно закрыта, короткой позиции нет, а баланса достаточно для открытия. Это связано с тем что Antares должен отдать команду на биржу. Биржа обрабатывает команду, освобождает занятый маржой баланс и высылает уведомление клиенту. На это требуется время. Это время складывается из географического положения сервера относительно биржевых, а так же пинга до биржи. Можно с уверенностью говорить что время реакции составляет не менее 150 миллисекунд. Таким образом - для того что бы переворот состоялся - необходимо подождать не менее 150 миллисекунд перед выполнением второй команды.
Команда с выставленной паузой будет выглядеть следующим образом
mktype=futures;symbol=ethusdt;side=buy;type=market;closepro=100;reduceonly!::pause=500;mktype=futures;symbol=ethusdt;side=sell;type=market;openpro=100;lev=2
Параметры
Пауза может применяться как отдельная команда между сцепками
mktype=spot;get=balance::pause=1000::mktype=spot;get=symprice;symbol=ethusdt
Так и внутри команды
mktype=futures;get=balance::pause=1000;mktype=futures;get=symprice;symbol=ethusdt
Когда пауза применяется внутри команды, она может быть выставлена в любом месте и остановит выполнение текущей команды на обозначенное время
Last updated