Notice: This page is under construction. Some contents are either giving incorrect information or going to be changed later. There may exist features that will be provided in future updates.


Documentations

BitTab is an intuitive Windows program for every user, from beginners to advanced users. You can easily watch your coin prices by adding coin symbols listed in the BitTab database. Also, BitTab provides some advanced features that could meet some user needs. Please, do not hesitate to contact us if you have trouble with using BitTab.


Basic notations

[BitTab] folder means [Documents>BitTab] folder, which is usually located in [C:\Users\AccountName\Documents\BitTab], that you can access it via File Explorer. For example, [BitTab>usertemplate] refers to [Documents>BitTab>usertemplate] location.

[symbol]: symbol of specific cryptocurrency ticker (e.g.: btc/usdt)
[base]: base symbol of specific cryptocurrency ticker (e.g.: btc)
[exchange]: id of exchange which is different from the name of exchange (e.g.: binance)
[ext] or [extension]: extension of files (e.g.: png)


Restore from backup files

Sometimes, you may want to roll back the settings and portfolios. By enabling automatic backup, BitTab will copy these files to [BitTab>backup] folder once a day. You can also manually backup by clicking [Backup now] button in [Settings] tab.

In [BitTab] folder, there are essential files like 'exchanges.bti', 'preference.ini', 'conditional.list', and 'ticker.list'. If you have more than one portfolio list, set up aliases, or ignore list, there should be more files inside. BitTab will copy the files into [BitTab>backup] folder except for 'exchanges.bti' which is a large-sized database file.

To restore previous settings, copy all files inside the backup folder then paste them into the [BitTab] folder. To prepare for unknown errors, please copy the current setting files to another folder.

Placing the bar widget to a specific screen

If you are using more than one screen and you want to move the bar-type ticker to one of the secondary screens, you can achieve it by selecting the screen number in the 'Bar-type widget control box' on the top of the BitTab preference Window. You may need to restart BitTab to take effect.



Please, note that all screens should have the same monitor scale (not screen resolution). For instance, if the main screen is 125% scaled, the other one(s) must have the same 125% scaled settings, otherwise, the bar-type widget may look strange. Box-type widget can be located anywhere without the restriction of monitor scale.

Placing the bar widget across all screens

If you are using more than one screen and you want to expand the bar-type ticker to all screens, you can achieve it by checking the 'Expand bar widget' in the Settings tab. You may need to select the leftmost screen in the 'Bar-type widget control box'.


Please, note that all screens should have the same monitor scale (and the same height in pixel in case of the widget is 'Bottom' placed). For instance, if the main screen is 125% scaled, the other one(s) must have the same 125% scaled settings, otherwise, the bar-type widget may look strange.

Bar-type widget for High-DPI environment

The bar-type ticker may look strange in some high-resolution environments with not a 100% scaled screen setting. To fix it, you should set the monitor scale in [Settings] tab the same as the Windows settings in [Settings Panel>Display>Scale and Layout].





Box-type widget can be located anywhere without the restriction of monitor scale.

Customize coin icons

You can replace specific coin icon images with your own image files. Only PNG, GIF, or JPG type image files smaller than 32 by 32 pixels size are allowed.

Override default coin or exchange icon
Put your square coin or exchange image file to [BitTab>template], and change the filename to [icon_coin.png] or [icon_exchange.png] or [icon_selected.png].
Example: [icon_coin.png] in [BitTab>template] will override all non-matched coin images to this one.


Override a single specific coin in the specific exchange
Put your square coin image file to [BitTab>usericon], and change the filename to [symbol]@[exchange].[ext]
Example: [btc-usdt@binance.png] in [BitTab>usericon] will override the BTC/USDT icon image in Binance.


Override specific base in the specific exchange
Put your square coin image file to [BitTab>usericon], and change the filename to [base]@[exchange].[ext]
Example: [btc@binance.gif] in [BitTab>usericon] will override all BTC named base icon images in Binance.


Override specific base in all exchanges
Put your square coin image file to [BitTab>usericon], and change the filename to [base].[ext]
Example: [btc.jpg] in [BitTab>usericon] will override all BTC named base icon images in all exchanges.

If the coin symbol has some reserved special characters that cannot be used in the filename (e.g., slash and colon), you should replace each character with a corresponding one.
· / to _s_
· : to _c_
· ? to _q_
· * to _t_
· \ to _b_
· " to _u_

For example, if the symbol is 'BTC/USDT', the filename should be something like 'btc_s_usdt.png'.

You have to fully re-launch BitTab to take it effect.

Replace alarm sound files

You can change the alarm sound (alert sound) by changing the WAV sound file. Only a WAV(.wav) type sound file with less than 5 seconds length is allowed.

Replace either the [alert1.wav] or [alert2.wav] file in [BitTab>template>_sound] with your own sound file with the same filename.

Please note that it is recommended to copy the original sound files in case of reset to set to default sounds.

Add custom coin symbols to an existing exchange

There might be a few cryptocurrency symbols not listed in the BitTab database while these symbols exist in the exchanges. This, often, is because the exchanges do not provide these hidden symbols in the official APIs that BitTab regularly fetches. If you want to add some known specific symbols, using this method could help you.

If [supplement.ini] file in [BitTab] folder does not exist, please make one with any text editor (or Windows Notepad). Open the file with any text editor. It is highly recommended to set the encoding to UTF-8.

Use the following pattern to add supplementary symbols. There can be more than one symbol. Each symbol is separated by brackets (square brackets []).

[Coin name]
exchange=binance
symbol=BTI/USDT
name=Name of your coin (BitTab Index Coin)
basename=Base name of the coin (BitTab Index Coin)
quotename=Quote name of the coin (USDT Tether)
base=Base symbol of the coin (BTI)
quote=Quote symbol of the coin (USDT)
description=Description of the coin only for note purpose

Example:
[Bitcoin]
name=Bitcoin
exchange=binance
symbol=BTC/USDT
basename=Bitcoin
quotename=USDollar Tether
base=BTC
quote=USDT
description=This is the Bitcoin at Binance

[Ethereum]
name=Ethereum
exchange=binance
symbol=ETH/BTC
basename=Ethereum
quotename=Bitcoin
base=ETH
quote=BTC
description=Ethereum cryptocurrency

All the parameters except for basename and quotename are required, otherwise, there might be errors.
· The value in the 'exchange' parameter must be exactly the same with one of the existing exchange ids in [BitTab>exchanges.bti] database. This value cannot be arbitrary.
To find the correct exchange id, you may open [BitTab>exchanges.bti] file with any text editor to edit. As this file is quite large, it may take a while to open it. The exchange id is a lower case alphabets without space between <id></id> tag in an <exchange><item></item></exchange> tag.
· The value in the 'symbol' parameter must be exactly the same with one of the existing symbols that the exchange supports. This value cannot be arbitrary.

You have to fully re-launch BitTab to take it effect.

Ignore loading specific exchanges

You may want to skip BitTab loading several exchanges which you are not interested in. It is not related to the overall performance, while it can improve the speed for loading coin list when you want to add coins in the portfolio by clicking the [Add] button.

If [ignore.ini] file in [BitTab] folder does not exist, please make one with any text editor (or Windows Notepad). Open the file with any text editor to edit. It is highly recommended to set the encoding to UTF-8.

Use the following pattern to add ignore list. There can be more than one exchange each line by line.

exchangeid

Example:
binance
kraken

You have to fully re-launch BitTab to take it effect.

Use private API keys

You can integrate your API keys to each exchange endpoint.

Every key and token will be saved in [tokens.ini]. You should not use critical API keys capable of transactions and payments. You have to care for the file yourself.


To set API key to a specific exchange, select any symbol and click the key shape icon next to the [Separator] button in the [Portfolio] tab.

For exchanges such as CoinGecko (Private), just put the API key and it will manage the key automatically.

For header authorization API keys such as OpenSea's (key for "x-api-key"), use 'header:' prefix like below:
header:x-api-key:your_opensea_api_key

For a custom GET (or POST) parameter key like &CUSTOM_KEY=YourKey, use '&' prefix like below:
&custom_api_key=YourAPIKey

If you want to remove the key, just leave the field empty and confirm.

Add custom exchanges

While BitTab provides many major exchanges, there also exists so much more exchanges, and you may want to add one of them manually. Or, you may wish to use personal APIs (for example, CoinMarketCap PRO API) that is required to be accompanied with private API KEYs. In these cases, this might meet your needs to add customized exchanges in BitTab locally and personally.

Please make [custom_(new exchange id).bti] file with any text editor (or Windows Notepad) in [BitTab] folder. Examples of file names can be 'custom_myexchange.bti', 'custom_coinmarketcap.bti', or 'custom_moon.bti'. Open the file with any text editor to edit. It is highly recommended to set the encoding to UTF-8.
Total number of exchanges should not exceed 100 including both custom and BitTab-provided exchanges.

Use the following pattern to add a custom exchange database file. There can be more than one file to add many custom exchanges.
You may inspect [BitTab>exchanges.bti] file to see the basic official pattern.

<bti autogen="no" purpose="custom">
    <info>
        <date>YYYY-MM-DD</date>
        <vercode>Integer number for this file version</vercode>
        <minbuild>Minimum required build version of BitTab</minbuild>
        <author>Name of author</author>
    </info>

    <exchanges>
        <item>
            <name>Exchange name for display</name>
            <id>Unique exchange id</id>
            <api type="single">HTML special characters escaped API URL for parsing data</api>
            <link>Website link of the exchange</link>
            <coin_name></coin_name>
            <data_current>Json path of current price</data_current>
            <data_time>Json path of data time</data_time>
            <data_percent>Json path of current percent change</data_percent>
            <data_volume>Json path of current volume</data_volume>
        </item>
    </exchanges>

    <coins>
        <exchange excid="Unique exchange id" default_quote="Default quote symbol if all the quotes are the same">
            <item symbol="Symbol of coin" name="Display name of coin" base="Base symbol" quote="Quote symbol" basename="Long display name of base" />
        </exchange>
    </coins>

    <resources mode="override">
        <data type="image" dataid="exc_[exchange id]">Base64 PNG image string for the exchange banner</data>
        <data type="image" dataid="excicon_[exchange id]">Base64 PNG image string for the exchange logo</data>
        <data type="image" dataid="coin_override_[exchange id]:[symbol]">Base64 PNG image string for the [symbol] coin</data>
    </resources>
</bti>
                            

Example:
<bti autogen="no" purpose="custom">
	<info>
		<date>2021-01-23</date>
		<vercode>1</vercode>
		<minbuild>27</minbuild>
		<!-- Minimum build version of 27 or later is required to use this feature -->
		<author>Sample</author>
	</info>

	<exchanges>
		<item>
			<name>My Coinmarketcap</name>
			<id>coinmarketcap</id>
			<api type="single">https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?start=%s&amp;limit=1&amp;CMC_PRO_API_KEY=API_Key_for_my_account</api>
			<!-- In the URL, special characters like & should be replaced to HTML entity like &amp; -->
			<!-- For APIs that provide all data at once, you may want to use type="batch" for better performance. Please refer to original exchanges.bti file -->
			<link>https://coinmarketcap.com</link>
			<coin_name></coin_name>
			<data_current>$.data[0].quote.USD.price</data_current>
			<data_time>$.last_updated</data_time>
			<data_percent>$.data[0].quote.USD.percent_change_24h</data_percent>
			<data_volume>$.data[0].quote.USD.volume_24h</data_volume>
		</item>
	</exchanges>

	<coins>
		<exchange excid="coinmarketcap" default_quote="USD"> <!-- excid should match with the value inside <id></id> tag above -->
			<item symbol="2" name="ETH/USD" base="ETH" quote="USD" basename="Ethereum" />
			<item symbol="1" name="BTC/USD" base="BTC" quote="USD" basename="Bitcoin" />
			<!-- These data should be manually written -->
		</exchange>

	</coins>

	<resources mode="override">
		<data type="image" dataid="excicon_coinmarketcap">iVBORw0KGgoAAAANSUhEU5ErkJggg==</data>
		<data type="image" dataid="coin_override_coinmarketcap:1">iVBORw0KGgoAAAAQK9LwTxPgBXfSQx7IydXwAAAABJRU5ErkJggg==</data>
		<!-- The image values are only for example purpose. They are not valid values. You may omit <data> tag. In that case, default icons will be used. -->
	</resources>
</bti>


· For the image data tag, you have to use base64 encoded PNG image text to put the image data in the single database file. An alternative way to use a custom icon image is by overriding coin icon image files.
Converting PNG image files to base64 texts can be done via online utilities like www.base64-image.de
· The retrieved data via API URL should be JSON formatted. Finding and parsing the specific value in the JSON data is done by JsonPath. While there can be some discrepancies, you may use some websites like jsonpath.herokuapp.com or jsonpath.com to test the JsonPath from the retrieved JSON data. (About JSON : www.json.org)

You can use the following reserved variables in the URL text in the <api> tag.
· %s : symbol of coin (Btc-Usdt, BTCUSDT..)
· %b : base (BTC, Btc)
· %q : quote (USDT, Usdt)
· %us : uppercase symbol (BTC-USDT)
· %ls : lowercase symbol (btc-usdt)
· %ub : uppercase base (BTC)
· %lb : lowercase base (btc)
· %uq : uppercase quote (USDT)
· %lq : lowercase quote (usdt)
· %bn : base name (Bitcoin)
· %qn : quote name (Tether)
· %lbn : lowercase base name (bitcoin)
· %lqn : lowercase quote name (tether)
· %ubn : uppercase base name (BITCOIN)
· %uqn : uppercase quote name (TETHER)
· %sdash0 : left part of symbol separated by dash '-' (BTC for BTC-USDT), %lsdash0, %usdash0 available
· %sdash1 : right part of symbol separated by dash '-' (USDT for BTC-USDT), %lsdash1, %usdash1 available
· %sslash0 : left part of symbol separated by slash '/' (BTC for BTC/USDT), %lsslash0, %usslash0 available
· %sslash1 : right part of symbol separated by slash '/' (USDT for BTC/USDT), %lsslash1, %usslash1 available
· %ak : user's API Key

You have to fully re-launch BitTab to take it effect.

Customize or make own templates

By modifying default templates a little bit, you can make your own templates that meet your needs. For advanced users, you can make your own templates from the beginning with whole new design and looks.

You can find default templates in [BitTab>template] folder. Each folder represents a unique bar-type template that consists of template files inside the folder. The folder's name will be the name of the template displayed in the BitTab [Settings] tab. [BitTab>template>_boxwidget] is a box-type template folder which is independent to bar-type template folder.

In most cases, you will make a new or modified template into [BitTab>usertemplate] folder, which is for local-only templates. If you modify files inside the default template folder [BitTab>template], the changes may be overwritten later when software updates are applied. Therefore, even if you want to modify only a few codes, it is recommended to duplicate the target template to [BitTab>usertemplate] and change the name of template to a unique one.

Required files: block.html, ticker.html, settings.ini, separator.html, style.css, javascript.js (separator.html, style.css, javascript.js can be empty but should be exist)

Template files inside each folder are mostly self-explanatory. Use [BitTab>template>default] template to start with. The following code shows short descriptions and examples.

settings.ini :
title=Name of the template (Default Bar)
author=Name of author (BitTab)
distribution=Link or e-mail to author (http://bittab.io)
version=Version of this template (1.1)
description=Short description about this template
message=Short message to users
compatible=Minimum BitTab version to use the template (2.21)

height=Fixed height of the bar-type template Window in pixel (51)

blockheight=Default height of each block in the box-type template in pixel (42)
shadow=Show a Window shadow around the box Window (yes|no)

bordercolor=RGB color for Window border (0,77,134)
handlecolor=RGB color for widget icon area (48,48,48)
cyclecolor=RGB color for indicating each cycle (222,83,71)
networkcolor=RGB color for indicating network connection (76,140,245)

[Settings.ini] file contains default parameters of the widget. Omitting variables may result in errors. Values of color parameters are in R,G,B pattern that each number should be between 0 and 255.

ticker.html :
<!doctype html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>BitTab Ticker</title>

        <style type="text/css">%stylesheet%</style>
        <script type="text/javascript">
        <!--
        %javascript%
        //-->
        </script>
    </head>

    <body ondragstart="return false;" ondrop="return false;" onmousedown="return false;">

        <div>
        %block%
        </div>

    </body>
</html>
                            

[Ticker.html] is a wrapper file for the widget window. The basic structure is similar to an HTML webpage. You can use %stylesheet% and %javascript% variable to directly import contents of [style.css] and [javascript.js] file, respectively. You can also just include them by relative path.
%block% part will automatically be replaced with one or more ticker blocks that consist of repeating [block.html] contents.


block.html :
<div class="block%cond%" id="block_%index%" name="block">
    <img src="data:image/png;base64, %icon%"><b>%name%</b> %value% (%exchange%)</span>
</div>
                            

[Block.html] is a building block of the ticker widget. Each [block.html] content will be manipulated to generate a single block for a single symbol.

Following reserved variables can be used in [block.html]:

%index%		: nth of this block (excluding separator) (0,1,2...)
%index_raw%	: nth of this block (including separator)
%index_item%    : nth of this coin in the portfolio list
%cond%		: condition style (1,2,3...)
%value%		: value of coin (1,999.1234)
%value_raw%	: value of coin number only (1999.1234)
%local%    : total price value with currency conversion (1 cycle delayed due to currency conversion) (default: 0)
%local_raw%    : total price value with currency conversion (1 cycle delayed due to currency conversion) (default: 0)
%name%		: name of the coin if provided (default: base symbol), %lname% and %uname% available
%exchange%	: exchange name that offers API
%url%		: exchange web address (default: blank)
%symbol%	: symbol of coin (e.g., btc-usdt, BTCUSDT), %lsymbol% and %usymbol% available
%api_url%	: API url
%trade_url% : direct trade url
%volume%	: base volume of the coin if provided (default: blank)
%rvolume%	: base volume of the coin if provided, rounded to show 2 decimals (default: blank)
%quotevolume%	: quote volume of the coin if provided (default: blank)
%rquotevolume%	: quote volume of the coin if provided, rounded to show 2 decimals (default: blank)
%percent%	: percent(or raw value) change of the coin if provided (default: blank)
%rpercent%	: percent(or raw value) change of the coin if provided, rounded to show 2 decimals (default: blank)
%icon%		: base64 encoded string icon for the coin (from exchanges.bti)
%iconsrc%   : icon url or base64 encoded string data
%basename%	: base name of coin base (e.g., Bitcoin), %lbasename% and %ubasename% available
%quotename%	: quote name of coin quote (e.g., Tether), %lquotename% and %uquotename% available
%base%		: name of coin base (e.g., BTC)
%ubase%		: uppercase name of coin base (e.g., BTC)
%lbase%		: lowercase name of coin base (e.g., btc)
%quote%		: name of coin quote (.e.g, USDT)
%uquote%	: name of coin quote (.e.g, USDT)
%lquote%	: name of coin quote (.e.g, usdt)
%desc%		: readable name of the coin (default: blank), %ldesc% and %udesc% available
%myamount%	: manually written my asset amount (default: 0)
%myprice%	: manually written my average price bought at (default: 0)
%myprofit%	: my profit or loss (total - myprice * myamount) (default: 0)
%mypercent%	: my profit or loss percentage (total / myasset - 1)% (default: 0)
%mynote%    : my personal note for the ticker
%myconv%    : total price value with currency conversion (1 cycle delayed due to currency conversion) (default: 0)
%open%		: open value of coin if provided (reference may differ from each exchange)
%low%		: low value of coin if provided (reference may differ from each exchange)
%high%		: high value of coin if provided (reference may differ from each exchange)
%change%	: change (delta) of value if provided (reference may differ from each exchange)
%total_value%   : total price value only (default: 0)
%total_text%    : total price with quote symbol (default: 0)
%curr_code% : currently set currency code text (e.g., USD, EUR)
%curr_symbol%   : currently set currency symbol (if exists, e.g., $)
                        

Please do note that %conv_value% and %conv_text% are one cycle delayed (which means the values are one cycle previous values).

You have to fully re-launch BitTab to take it effect.

Use network proxy

You may want to use proxy setting to access servers.

Open the [preference.ini] file in [BitTab] folder with any text editor to edit. It is highly recommended to copy the original file in case of setting back.

Write the proxy settings according to the following pattern.

use_proxy=yes|(no)
proxy_host=Full URL(URI) of the proxy server with port number
proxy_bypasslocal=yes|(no)
proxy_username=Username, if required
proxy_password=Password, if required

Example:
use_proxy=yes
proxy_host=https://myproxy.com:4321
proxy_bypasslocal=no
proxy_username=myname
proxy_password=1234abcd

You have to fully re-launch BitTab to take it effect.
Please, note that the password will be saved in the file as plain text.
* This feature is not fully supported in some cases.

Change user preference directory

In some cases, changing the default preference directory (where preference files are saved) is needed. You may do that by manually changing the location file.

Go to [Documents>BitTab] folder, and create a file named [changepath.ini] with any text editor.
Write the proper line according to the following pattern.

local|roaming|moveto=YourCustomPath

Example:
moveto=C:\Users\BitTabUser\Downloads\NewBitTabSettings


If you want to set it to default Windows reserved folders like [AppData\Roaming] or [AppData\Local], please write anything but 'roaming' or 'local' (without 'moveto=' prefix) instead, respectively.
Please, note that if you want to 'move' the preference folder after the first launch, you should copy and paste the original data to the destination folder first.
* This may cause data loss or unexpected error, so that please backup the entire folder before doing it.