The list includes non-empty balances, estimates in USD and BTC, and changes from the last request.
The bot analyzes buys and sells on the mm pair, but the changes calculation may be incorrect, as it is based on a balances report, but not a trade history, and does not take in account deposits and withdrawals.
Format
/balances
Example
Premium bot version may include the additional option for the /balances
command, which specify account type. Each exchange names types in its way, e.g., exchange
, margin
, funding
.
To get balances on all account types, set full
.
The command helps when you want to /transfer
funds from one account type to another.
Format
/balances [type]
Examples
/balances funding
/balances full
The bot shows the total number of open orders on an exchange for a trading pair and orders number by type.
For a reference only. Total orders in the bot storage may differ from real orders number on exchange. E.g., when you’ve placed orders aside from the bot; or in case of some open/close API requests failed. The bot shows the difference as unknown (unk) orders.
Next /orders
requests will also show changes relative to previous data.
Order types:
Format
/orders [trading pair] [type] {full}
A bot will show orders on the mm pair if you omit a trading pair.
You can request the list of orders of a particular type
, with or without full
information.
Examples
Information includes general trading and market-making stats for a day, a month, and all the time.
Note: If the bot has a work history of several days, it may process a request for several minutes.
Format
/stats [trading pair]
Example
Information includes name, precision, minimum trading amount, status.
Format
/pair [pair]
Example
Information includes trading fees and monthly trading volume.
Format
/account
Example
Information includes withdrawal fees, precision, status.
Format
/info [coin]
A bot will show info on the mm coin if you omit a parameter.
Example
The bot receives coin rates from two sources: Currencyinfo and an exchange. Rate information from an exchange includes bid, ask and spread.
Currencyinfo is an ADAMANT currency rates provider, and it’s set in the config file (default to info.adamant.im). You can run your Currencyinfo to include data for your token. Other commands, such as /balances
, use Currencyinfo to estimate fund value.
Format
/rates [coin or pair]
Example
The bot receives coin rates from two sources: Currencyinfo and an exchange.
Currencyinfo is an ADAMANT currency rates provider, and it’s set in the config file (default to info.adamant.im). You can run your Currencyinfo to include data for your token. Other commands, such as /balances
, use Currencyinfo to estimate fund value.
Format
/calc [amount] [coin1] to [coin2]
Example
The software places orders with random amounts in a range you set. It refers to most of the functions but primarily to mm volume orders.
You set the min–max range for a single mm-order in the mm token.
To enlarge daily volume, increase this parameter.
Format
/amount [min-max]
Example
The bot will place each mm order with an amount between 50 and 12,000 ADM and the same USDT equivalent.
Tell the bot how often to trade to make a trading volume with this command.
Don’t set a lower bound of the interval below 3 sec — the API will probably not handle it. Don’t trade too often — an exchange’s API has limits, and this affects other requests, like dynamic order book building. 3–60 sec is good, while 3–5 sec is bad.
Format
/amount [min-max] [unit]
Example
Increasing this value will increase the number of token purchases and decrease the number of sales in the trading history.
Format
/buyPercent [value]
Example
Before you start market-making, use the correspondent commands to set the trading interval and amount and enable features.
You can adjust parameters and enable or disable features while the bot works — don’t stop the bot while changing the values. E.g., to increase daily volume, make the /amount
bigger and the /interval
lower.
The main market-making module places orders and matches them to create a trading volume. You can choose a strategy:
Spread — trade in spread only. The bot places orders at prices between bid and ask and fits them by itself. If a spread is below minimal, it notifies you and stops market-making until the spread appears again. Using this strategy means a lower risk of asset loss, but there might be “no-trade” intervals when there is no spread, which spoil the trading picture.
Orderbook — trade from the order book only. The bot buys and sells from the order book. Trading looks realistic, but the risk of asset loss is higher, as the bot can buy and sell from other users.
Optimal — the default strategy. If liquidity is set, the bot will trade both in spread and from the order book. If liquidity is disabled, the bot uses the spread
strategy.
Format
/start mm [strategy]
Example
The command will actually pause the market-making but not cancel open orders. Use the /clear all
command to cancel orders. Note that it will cancel all orders, including those placed via the exchange's website.
Format
/stop mm
Example
This feature brings the order book to life by constantly placing and removing orders. In the web interface, it looks as if many traders on the trading pair are actively placing positions.
Format
/enable ob [max-ob-orders] [percent]
Value max-ob-orders
tells the bot what the maximum number of “dynamic order book building” (ob) orders at a time.
The percent
sets the maximum ob-order amount relative to the high bound of mm-order amount, which is set with the /amount
command. This parameter helps to lock only a few balances in the order book.
Example
The bot will place several buy and sell liquidity (liq) orders in the order books close to the spread. The spread will be about the spread-percent
value you set as an option. Additionally, you set the trend
, describing where to place liquidity orders relative to the current bid–ask.
Note: If some user matches the bots’ liq-orders, the bot will place new ones to maintain the spread and liquidity. This means if users, for example, sell a lot of TOKEN, the bot will buy all of them with USDT at the current price and can run out of USDT balance. To change this behavior, refer to the Safe Liquidity premium feature.
Format
/enable liq [spread-percent] [amount] TOKEN [amount] QUOTE [trend]
The basic bot version only allows setting the high bound of spread-percent
. The lower bound is always 0.
Example
With the premium Safe Liquidity feature, you can set the lower bound of spread-percent
and specify additional ss
option.
Setting the lower bound of spread-percent
allows to place liquidity a little further away from the spread. For example, at a distance of 1–2%. Thus, liquidity will not be available at the current price, but integrators like Coinmarketcap will still show ±2% liquidity.
The ss
option will enable spread support to a minimal value (e.g., 0.1%) with several low-volume orders.
Format
/enable liq [spread-percent] [amount] TOKEN [amount] QUOTE [trend] {ss}
Example
With the help of the Price Watcher module, you can set a bot to follow a static price range or a price on another exchange. The bot will avoid buying high and selling low, verifying that the bot modules place orders at a suitable price.
Additionally, if a price moves out of the safe range, a bot can set it back by buying or selling tokens with the fill
option enabled.
The prevent
option works in another way: it disallows the bot modules, such as liquidity, to place orders out of the Price Watcher range, prohibiting buying high and selling low. In the prevent
mode, the bot isn’t forced to set a price back to the range but instead offers a safe price range to other modules.
Format (static price range)
/enable pw [low-high] COIN [action]
/enable pw [price] COIN [deviation] [action]
If you choose a static range, the feature controls a token’s price in the low–high range. You can set a price range in any currency; the bot will convert it into the trading pair's currency.
Example (static price range)
/enable pw 0.028-0.032 USDT prevent
/enable pw 0.03 USDT 6.7% prevent
The command set the bot to place buy-orders at prices below 0.032 USDT and sell-orders at prices above 0.028 USDT; the 0.028–0.032 range is safe both for bids and asks.
Format (following another exchange)
/enable pw [pair@exchange] [deviation] [deviation-policy] [action]
You can also command the bot to follow the price on another exchange. There might be different reasons for such behavior; the most common are following a price on an exchange with the most liquidity, and preventing arbitrage when you run bots on several exchanges.
The deviation
option is an allowed price deviation, and deviation-policy
is a price control policy. When the bot receives a price range from another trading pair, it will use plain bid and ask with the strict
policy, or estimate liquidity-supported prices with the smart
policy.
For example, with such an order book, strict
gives the 0.0122–0.0128 range, and smart
gives the 0.0121–0.0132 range:
Example (following another exchange)
It’s a good practice to set the leading trading pair with the most liquidity (for example, ADM/USDT@DigiFinex) in a numerical range and target the rest of the bots to the leading trading pair:
/enable pw ADM/USDT@DigiFinex 2% strict prevent
With this command, when ADM/USDT@DigiFinex price changes, the bot on the current exchange will also follow the price update.
You can set a price that the bot will support with all its might, even if it must cancel all orders.
The function can work in addition to the Price Watcher.
For example, you set the Price Watcher in the range of 1.0–1.1 USDT in the prevent
mode and a support price of 0.5 USDT. If the token price drops to 0.7 USDT, the bot will not actively restore the price, but if it drops to 0.45 USDT, the bot will use all resources to restore it to 0.5 USDT.
Format
/enable sp [price] QUOTE
Example
To make order books look rich, the bot will analyze them and add orders between existing ones.
For example, in the visible part of the order book there are bids at prices of 1, 0.9, 0.4, 0.3, and 0.1 USDT. The bot will place orders at prices of ~0.8, 0.7, 0.5, and 0.2 USDT.
Format
/enable ag [percent]
The percent
sets the maximum ag-order amount relative to the high bound of mm-order amount, which is set with the /amount
command. This parameter helps to lock only a few balances in the order book.
Example
If there is little liquidity or the spread is large enough, traders can manipulate the price and drain the bot's balances. The Cleaner identifies and removes price manipulation orders by matching them.
For more information, refer to the Anti-cheat feature description.
Format
/enable cl [policy]
You set the policy
, describing how to identify a price manipulation order and if to remove (match) it:
spread
strategyExample
For the feature description, refer to the Volatility chart.
The feature will work when these conditions are met:
Format
/enable vc [rate]
You set the rate
, describing how often to change a price trend and its amplitude:
Example
This function analyzes changes in a token's price, increases the trading volume during pumps and dumps, and reduces it in a stable period.
Format
/enable vv
Example
If the bot changes the price itself, it can buy back its own orders in the order book without canceling them, which also increases trading volume.
Format
/enable vv
Example
When trading two accounts, situations arise when the first account accumulates a token, the second accumulates USDT/BTC, and vice versa.
The bot will change the buy/sell ratio to balance coins automatically in order to prevent you from moving coins between accounts yourself.
Format
/enable vv
Example
For the feature description, refer to the Balance Equalizer.
Format
/enable be bp
/enable be market [slippage]
You can choose between two strategies:
slippage
.Example
The Liquidity Grid is another way to place liquidity in the order book. Unlike the classic module, which places orders closer to the spread, the liquidity grid distributes them across the entire order book.
For the feature description, refer to the Liquidity Grid.
Format
/enable ld [amount] [COIN] [count] [step] [mid {midprice} QUOTE]
Parameters:
amount
with a random factor of 2%. It’s a float number with precision depending on an exchange. The value can be in BASE or QUOTE currency of the MM paircount
* 2.[mid {midprice} QUOTE]
— optional middle/start price setting. If not set, the midprice
will be (highest-bid + lowest-ask) / 2
.The command asks for a confirmation before running.
Example
The bot will look for the right moment to sell tokens in favor of USDT or BTC, with minimal impact on the price or leaving it the same.
For the feature description, refer to the Token sell strategy (USDT hunter).
Format
/enable qh [dump1o] [dump1h] [dump1d] [policy]
Parameters:
dump
, keep
, none
. Describes a bot behavior after placing a qh-order. For the dump
, the bot will decrease the token price. For the keep
, the bot restores the price to the initial value. The value none
means no further action is taken.Example
You can disable any features while the bot is running or not.
Disabling a feature doesn’t stop the market-making. To stop market-making, use the /stop
command instead.
After a feature is disabled, the bot leaves all active orders of the feature as is. For example, when you stop Liquidity with the /disable liq
command, all opened liq-orders stay in the order book. To cancel them, use the /clear
command.
Available options — as the /enable
offers.
Format
/disable [feature]
Example
These commands allow you to place an order manually, independent of other bot modules.
The bot stores information about active, manually placed orders in the internal database as the man type. Type the /orders man
to view the list of active manual orders.
Depending on the price, a placed order can enter the order book or match immediately.
Format
/{buy/sell} [pair] [amount= or quote=] [price=]
If you omit a trading pair, the bot will place an order on the MM pair.
If you did not specify a price, the bot will place an order at a market price. The same result is for price=market
.
You can set an order volume in tokens using the amount
or in a quote-currency using the quote
.
Note: Placing market orders is not available on all exchanges. Also, on some exchanges, the amount
is the only available option to set an order volume.
Example
The /fill
command places several orders within a price range.
As well as /buy
and /sell
orders, the bot stores /fill
orders as manually placed (man). Type the /orders man
to view the list of active manual orders.
Format
/fill [pair] {buy/sell} [amount= or quote=] [low=] [high=] [count=]
If you omit a trading pair, the bot will place orders on the MM pair.
When buying, specify the quote
, and when selling, use the amount
.
The low
and high
set the price range. The bot will place up to count
orders with total volume up to the amount / quote
.
Example
The list of active orders is available with the /orders
command.
Format
/clear [pair] [type] {buy/sell} [condition] {force}
If you omit a trading pair, the bot will cancel orders on the MM pair.
Use type
to filter orders to cancel, e.g., man
or ld
. If you specify unk
, the bot will cancel orders not in the internal database (unknown). To cancel all orders, including unknown, set all
. See the /orders
command to learn more about order types.
If you specify buy
or sell
, the bot will cancel only bids or asks.
The condition
is a price filter. The filter starts with the >
or <
sign, followed by the price and the quote coin. For example, you can cancel orders at a price higher than 1 USDT: >1 USDT
.
The price filter doesn't work with all
and unk
order types.
Since the exchange API may have a limit on the number of requests, you can specify the force
parameter to make several iterations.
Examples
The bot will buy or sell tokens to achieve the price you desire. With the now
option, it will place a single order. Additionally, the Price maker feature offers the ability to achieve the desired price at some time.
The bot estimates spending and asks for confirmation.
Format
/make price [target] QUOTE [now] [in {period}]
Specify time:
target
priceperiod
— gradually strive towards the target
priceExamples
To change daily trading volume, you can use the /make volume
command in addition to the /amount
and /interval
.
It updates the mm-order amount to change the trading volume.
Note: Daily trading volume is an estimate and depends on factors such as trading strategy, liquidity, and enabled features.
Format
/make volume [change] [target QUOTE]
Choose an option:
Examples
TWAP (Time-Weighted Average Price) is an algorithmic trade execution strategy that aims to achieve an average execution price close to the time-weighted average price of the user-specified period. A TWAP strategy is often used to minimize a large order’s impact on the market by dispersing the large order into smaller quantities and executing them at regular intervals over time.
TWAP is favored to provide a better execution price in the following scenarios:
To stop an active TWAP order, command /stop twap
.
Format
You specify the order volume, maximum price, and time within which you want to close the deal:
/twap [pair] {buy/sell} [amount=] [maxprice/minprice=] [time=] [interval=] [strategy=]
Parameters:
time / interval
stepup
when buying or stepdown
when sellingExamples
/twap BTC/USDT buy amount=5 maxprice=48k time=20m interval=1m strategy=stepup
The bot will buy 5 BTC for USDT within 20 minutes at a price not exceeding 48,000 USDT.
/twap ADA/USD sell amount=100 minprice=0.6 time=5m interval=1m strategy=stepdown
If a bot requests confirmation, the /y command will confirm. For example, see /make price
.
Format
/y
Example
The command provides deposit addresses for all available networks.
If an exchange doesn't create deposit addresses by API, then use its website instead.
You can get current asset balances with the /balances
command.
Format
/deposit [coin]
Example
The command withdraws a coin from the exchange you’ve specified in the config file. You select the destination coin address, amount, and coin network. To see available networks, see the /info
command.
Format
/withdraw [address] [amount] [coin] [network]
Example
/withdraw 0x95222290DD7278Aa3Ddd389Cc1E1d165CC4BAfe3 12500 USDT ECR20
Returns a list of the latest deposits or withdrawals or specific withdrawal info.
Format
/show {deposits/withdrawals} [coin] [count]
Shows a list of the latest count
deposits or withdrawals for the coin
. If you omit the coin
, the bot will show the list for all coins.
/show withdrawal [id]
Shows the withdrawal info for the specific withdrawal id
.
Examples
/show deposits USDT 7
/show withdrawal 12345-abcde
Transfers funds between exchange sub-accounts, like main, trade, margin.
Format
/transfer [amount] [coin] from [type1] to [type2]
Account naming like main, trade, margin depends on a specific exchange.
Examples
/transfer 100 USDT from trade to main
The command shows the parameters for the exchange you’ve specified in the config file. The bot stores parameters for every exchange in a separate file /trade/settings/tradeParams_{exchange}.js
.
Format
/params
Examples
Note: Check the actual version on Github regularly.
Format
/version
Examples
A short help message.
Format
/help
Examples
The Bot Communication Server makes it easy to manage bots if you have several of them. You can send one command to all bots or a specific bot by specifying its ID.
Format
/remote [command] [-recipient] [-y]
You specify the recipient bot:
-all
— all connected bots-{id}
— a specific connected bot. For example, ADM/USDT@NonKYCIf you add -y
, the bot will not ask for confirmation.
You can also use command aliases:
Examples
/remote
Shows all the connected bots.
/remote balances -all
/rb
Shows the balances of all bots in one message.
/remote make price 1.1 USDT in 5 days -all -y
Tells all the connected bots to achieve the price 1.1 USDT without a confirmation.
/remote enable pw 1-1.1 USDT -all
Sets the price range for all bots at once.
/remote make volume +25% -all
Increases the trading volume of all bots.
/remote make volume -20% ADM/USDT@NonKYC
Decreases the trading volume for the ADM/USDT@NonKYC bot.