Created: July 15th 2021
Updated: Aug 3rd 2021
2. Description of UI elements
Displacement & Latency
Main Page (draggable resizable elements)
Terminal CLI (beta)
Execution Side Panel
Margin Control and Leverage
3. Future development
4. Known issues
5. General information
The general aim of the Terminal is to function as a drop-in replacement for the official exchange trading interface. The Terminal aims to provide a superset of the capabilities found therein. It is designed to be simple and intuitive with an uncluttered interface.
Furthermore, via testing and feedback from users, Terminal development aims to modify and expand its own capabilities to best suit traders’ requirements, ergo; make stuff people find genuinely useful.
2. Description of UI elements
UI elements can be shown/hidden by clicking on the ‘cog’ button on the bottom right corner of the screen which reveals a slide-out configuration panel.
Here the experimental Terminal CLI element can be added.
The Terminal has a notification system to display useful feedback to the user such as when an operation has completed or there is an error. These can be found in the top right of the page.
Nuke Orders (orange button); Pressing once cancels every outstanding order for every instrument as quickly as possible. Note; cancellation priority is given to the currently selected instrument. Confirmation is provided when complete.
Nuke Positions (red button); Pressing once closes all open positions on every instrument and every side (e.g. ‘hedged’ linear contracts on Bybit). Confirmation is provided when complete.
“Settings” top menu option; Account (API key) management, multiple keys are allowed (see below). Please make sure Order and Position management is enabled on the API key.
Account Switcher; drop-down menu on the top-right of the page. Use to switch between connected accounts (API keys)
Displacement statistic; Shows the time displacement between your browser and the exchange. If negative, your system clock is behind the exchange’s clock. This has no bearing on trading speed / performance.
Latency statistic; Shows the live connection speed to the exchange expressed in milliseconds. A measure of the time it takes a user’s command to reach the exchange trading engine. Lower figures are desirable.
The chart provides a practical subset of “TradingView” style functionality. It can be dragged, resized and zoomed in much the same way.
For performance reasons, a small snapshot of recent pricing data is provided. The data is updated live (per tick) and can be switched to a number of common presentation resolutions; 1min, 5min, 15min, 1H, 4H, 1D. The Resolution button in the Chart title bar toggles a toolbar of these options on/off.
The Chart’s main function is to provide visual representation of open orders, stops and positions.
Drag & Drop Users are able to click and drag orders to a different price. Note that if e.g. a buy order is dropped above the current price - and it is not marked “Post Only” - then it will have crossed the spread and will execute immediately as a market order.
Cancel Individual orders can be cancelled via the [ X ] button on the order label. Note there is no confirmation warning provided, orders are cancelled immediately.
Price Autofill Clicking on the chart will fill any selected “Price” textbox with the clicked price. This is useful for example when quickly placing a limit order instead of typing the price in manually.
Shows live stack of asks and bids on the selected instrument. Shows the user’s resting (limit) orders in the book at price with a green or red arrow. Abbreviated values for size can be selected via the k/M button e.g. “1.24 M” rather than “1,240,000”.
Update speed can be selected by the title bar menu; Realtime (0ms), 100ms, 250ms, 500ms, 1 second. Recommended a choice of either 100ms or 250ms, any faster may result in a UI performance penalty (depending on hardware/browser).
The dimmed (background) colored volume bars aim to represent the balance and ratio of liquidity provision on either side of the book.
Shows recent trades for the currently selected instrument. Notional value is always displayed in the quote currency (e.g. USD). A title bar button shows the minimum size of trades to show, clicking this button will allow adjustment of this minimum via a slider bar.
Simple instrument selector showing recent traded price, 24h price change and volume. Columns are sortable.
This panel provides an at-a-glance summary of users’ current trading/execution activity. Additionally provides details (e.g. current price, size etc.) and an option to cancel the activity.
This is useful to be aware of longer running operations such as TWAP or Limit Chase whose status may be buried elsewhere in the UI’s background.
List of current orders and stops for the current instrument only organized by status. Open orders may be cancelled individually from this list. Selecting “all” shows open orders for all instruments on the account. Most columns are sortable.
All open positions for all instruments. Close button will reduce the position completely via a market order.
Clicking a position’s Entry price or Size will auto-fill the value into the appropriately selected input box. E.g. when creating a limit order, click the limit “Price” input box, click the position Entry price and it will be filled automatically. Same for Size.
Terminal CLI (beta)
For quicker trading, a command line interface (CLI) is available. Not all of the Terminal features are supported yet, but for those it does; it expands on the capability of the default graphical UI experience.
Often, when specifying sizes or numbers, users can use a percentage e.g. 30% or relative numbers e.g. +100, -25
General command examples
Nuke all positions
Nuke all orders
e.g. switch ethusd
e.g. switch btcusdt
Switch to the given instrument
Show total and available balance(s)
Largest order size possible given available balance, margin and current price
Show available accounts
Switch to the numbered account
Clear the text console
Simple Ordering examples
e.g. buy 10
e.g. buy 25%
Market buy or sell
> Market buy 10 contracts
> Market buy 25% of available size
buy <size> at <price>
sell <size> at <price>
e.g. sell 10000 at 51999
e.g. buy 25% at 31000
Place a limit order for the given size at the specified price
> Sell 10,000 contracts at $51,999
> Buy 25% of available size at $31,000
buy <size> best
sell <size> best
Enter the size at the best price in the orderbook (quote)
Close Position examples
Close position on the current instrument completely
Close position on a specific instrument completely
e.g. close long
Close specific side of the current instrument (only useful for “hedged” positions)
e.g. close 10000
e.g. close 33%
Close a specific portion of the position
> Reduce position by 10,000 contracts
> Reduce position by 33%
Cancel Orders examples
Cancel all orders for the current instrument
e.g. cancel buys
e.g. cancel sells
Cancel all buys or all sells
cancel top <number>
cancel bottom <number>
e.g. cancel top 3
e.g. cancel bottom 25%
Cancel top or bottom orders by price, side is irrelevant
> Cancels the top three highest priced orders
> Cancels a quarter of the lowest priced orders
cancel first <number>
cancel last <number>
e.g. cancel first 5
e.g. cancel last 50%
Cancels orders by time of placement
> Cancel the earliest five orders
> Cancels half of the latest placed orders
cancel buy stops
cancel sell stops
Cancel stops, all of them or cancelled by side
Scale Order examples
scale buy <size> into <count> from <price> to <price>
scale sell <size> into <count> from <price> to <price>
e.g. scale buy 100 into 10 from 31000 to 32000
Place count orders of a given total size between the two prices (order of prices not important)
> Place 10 buy orders between the two prices totalling 100 contracts
Appending cubic will use a cubic distribution (price) to place the orders bunched towards the current traded price
Using icubic will do the inverse; bunch orders away from the current price
scale buy <size> into <count> from <price> to <price> cubic
scale sell <size> into <count> from <price> to <price> icubic
e.g. scale sell 1000 into 25 from 51999 to 50000 cubic
e.g. scale buy 20000 into 10 from 31250 to 32000 icubic
Chase Order examples
chase buy <size>
chase sell <size>
Start a limit chase for the given side and size terminating only on fill or cancel
chase cancel keep
Cancel a running chase. Specify ‘keep’ to keep the order in the orderbook
chase sell <size> reduce
chase buy <size> reduce
Chase using a reduce order, requires an open position
chase buy <size> to <length>
chase sell <size> to <length>
e.g. chase buy 1000 to 0.5%
e.g. chase sell 20000 to 31500
e.g. chase buy 15000 to +100
Start a limit chase terminating at the given length which can be a price, a percentage or a number of USD
Chase up to +0.5% from the entry price
Chase down to $31,500 specifically
Chase up to 100 USD from the entry price
TWAP, Swarm, Triggers examples: not currently supported.
Execution / Ordering Side Panel
There are two selectable tabs by order type: Limit and Market and a drop-down sub menu under each to select a specific operation. They are;
Limit: Limit order, Stop, Mouse Placement, Chase, Scale
Market: Market order, Stop, Swarm, TWAP
For convenience, included underneath every view in this panel and for the current instrument are; Total and Available Balance, Margin Control/Leverage and Instrument Statistics
“Size” Input / Slider bar
This input control is present on every order type, dragging the slider bar to 100% represents the largest size order that can be placed given the available balance, current leverage and execution price (price estimated in the case of market orders).
For inverse futures (perpetual) instruments the Size input represents contracts. For linear instruments, it is the quantity of the specific instrument traded.
For convenience, an equivalent conversion is provided above the input box.
Present on many of the order types. This control is a convenience to quickly place a market stop whilst executing an entry order. There are two modes; absolute price (use +/- 0.5% for quick setting) or relative price expressed as a percentage.
This control also shows Account Risk (projected loss) as a percentage to aid risk management.
Buy / Sell Buttons
Shows quantity and price, additionally shows estimated liquidation price when using isolated margin (Cross liquidation estimate not supported currently).
Margin / Leverage Control
Always present on the Execution panel. For Bybit, press the Confirm button after changing leverage / type. For FTX, the change is immediate. Note Bybit has independent leverage settings for Long and Short positions.
Shows information for any open position(s) for this instrument. Additionally; last traded price, open interest, funding etc.
“Limit” menu item
Place a regular single limit order.
Input a non-zero Size and Price. For quick ordering, toggle the “Best Bid/Ask” switch which will automatically enter the order either side of the spread (depending on Buy or Sell) note this will also enter as a “Post Only” to mitigate taker fees.
Post -- Post Only, ensure order enters as maker
Reduce -- when executed, this will reduce a position’s size (requires position)
TP -- Take Profit order. A convenience, places a taker exit order at the given price. Also calculates account growth if hit.
Stop -- described at the start of this documentation section
Select the Price input box and click on the chart to quickly fill with the price automatically.
“Stop” menu item
Place a stop limit order. Select Trigger Price or Limit Order Price and click the chart to quickly fill these with the price.
When the trigger price is hit, a limit order will be entered into the orderbook at the given limit order price.
Close -- Marks this as a “close on trigger” order
Reduce -- Can only reduce your open position (not available on Bybit Inverse)
Post -- Post Only order
Trigger Price Source determines whether the Last traded, Mark or Index price triggers the stop limit order.
“Click Placement” menu item
A convenient scalping tool. Choose a Size Each and then place orders of this size with a single click using the chart. The Terminal is able to automatically determine if the order is a buy or a sell.
Switch options are described elsewhere.
“Chase” menu item
Places a limit order at the best bid or ask and continually adjust its price to follow the quote until the order is cancelled, filled, or a maximum chase ‘distance’ is reached.
Note: only one chase can be executed at a time.
Chase To sets the maximum acceptable adverse price for your order. For example, if choosing 0.5% with an initial entry of 10,000 the chase function continually adjusts the order price up to 10,000 + 0.5% = 10,050 (in case of a buy order). For convenience the red and green boxes below preview the maximum possible adverse price for each side.
Until Fill/Cancel -- Infinite chase. “Chase To” price is disabled and the order will continue to adjust until the operation is cancelled by the user or the order is filled
Reduce -- detailed elsewhere
Stop -- detailed elsewhere
“Scale” menu item
Scales multiple orders across a price range. Also called “Ladder” orders.
Total Size is distributed across the number of Total Orders. For example if Total Size = 50 and Total Orders = 10, there will be 10 orders placed of size 5.
Select the two prices (numerical order not important) these can also be filled automatically by clicking on the chart.
Total Orders -- minimum of 2, maximum of 100
Switches described elsewhere
“Market” menu item
Simple market order, immediate execution. Switch options described elsewhere.
“Stop” menu item
Market stop order. When the Trigger Price is hit, a market order for the given Size will execute. Price, as with all other price inputs can be selected automatically by clicking on the chart.
Reduce -- (only available on Bybit Linear USDT instruments) indicates this market order is Reduce Only and will not increase the size of your position
Close -- indicates this is a “close on trigger” to close the position
Trigger Price Source determines whether the exchange’s Last, Mark or Index price is used to evaluate the trigger.
“Swarm” menu item
Fragments a large market order into smaller pieces in order to reduce the slippage typically incurred in a single block order.
Swarm takes a given Total Size and splits the size into a number of Total Lots and executes them in parallel as fast as possible.
Irregular Lots -- use to split the Total Size into random sized pieces rather than create numerous orders of the same size. This can be useful to mask detection.
Reduce -- create reduce only orders
“TWAP” menu item
Time Weighted Average Price execution of a large order. A Total Size is divided into the given number of Total Lots which are then executed one by one across the given Total Time at regular intervals (“Order Frequency”).
There is a maximum of 12 hours and a minimum of 5 minutes.
This is a long running process, you may continue trading using the Terminal’s other functions and monitor the TWAP progress in the Activity panel.
TWAP is cancellable at any moment.
Note: only one “TWAP” may execute at once and closing the Terminal will end the process.
3. Future Development
Triggers created and monitored on the Terminal side (rather than stored on the exchange) offer a wealth of specialized trading options.
For example; a price trigger, when hit, could begin a TWAP or a Chase. Or we could use a position trigger to close a position automatically when profit >= 2%
Terminal Text Input a console for entering trading commands via text input is under development. Some traders may occasionally prefer this method for more fine grained control and expansion of execution options.
4. Known issues
As of July 24th 2021
Chart - sometimes “gaps” occur on price candles. This is currently being investigated and will be fixed.
5. General information
System is hosted in Frankfurt, Germany. Multi-region options are a possibility which would connect users to their nearest geographic datacenter.
Servers are load-balanced and horizontally scalable with performance monitoring available.