Пауза в команде

7.15.4

Введение

Запись паузы. Следующая запись приостановит выполнение команды на 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 миллисекунд перед выполнением второй команды.

Практическое минимальное время паузы можно подобрать экспериментально. Рекомендуемое время - не менее 500 миллисекунд

Команда с выставленной паузой будет выглядеть следующим образом

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