⚙️TradeEye Settings

Settings for working and analysing crypto signal groups with TradeEye.

TradeEye: How it works

In the following we will be going through the setting for the analysis with TradeEye, our backtesting bot for crypto signal groups.

Settings file

Let’s start by exploring TradeEye settings. Don't be overwhelmed by the number of settings. Most of the are not needed, they are there for us developers.

"UserSettings": {
    "Channel Name": "gg-shot",
    "Channel Id": 1090959781067501738,
    "Message Limit": 50

"PerTradeSettings": {
    "RequiredSettings": {
        "Funds Per Trade": 10,
        "Tp Limit": 2,
        "Leverage Pref": "low",
        "StopLoss Pref": "low",
        "Use Sliding StopLoss": true,
        "Use Cross Mode": true,
        "Wait Entry For": "4h",
        "Keep Trade Open For": "2w",
        "Use Candle's": "Higher Value"

    "CustomSettings": {
        "AutoFill Trades": false,
        "Use Custom Settings": true,
        "Custom Leverage": 20,
        "Custom StopLoss": "-25%",

    "AdvancedSettings": {
        "Use Same Candle": false,
        "Coin Similarity Limit": "90%"

User Settings

  1. “Channel name”:

    (expected value: string) completely optional (it is not required to match channel id to the channel name).

  2. “Channel Id”:

    (expected value: integer) id of the discord channel that you want to analyse (to obtain discord channel id, Developer settings should be enabled in Discord Settings).

  3. Message Limit:

    (expected value: integer) how many messages from the channel should be analysed. (current limit: 300, going higher might result in TradeEye failing to steam results)

Per Trade Settings

"Funds Per Trade":

  • expected value: Integer

  • Choose how much USDT you want to use for each trade (it will affect your profit or loss amount)

“Tp Limit”:

  • expected value: Integer

  • As you might already now, signals include information about the trade (entry, take profit , signal side, stoploss ). The take profit is usually more than one, and it is up to you to decide how many TPs to use. The more TPs you use, the longer you are willing to wait and stay in trade, and this will determine whether you make any profit. Sometimes a lower TP is better than a higher TP, and this setting serves that purpose (determine how many TPs are most profitable).

  • You can create your own strategy to meet your specific needs, or you can simply follow the whole signal.

  • Strategy example: Fast trades and small profits (also known as scalping). Setting "TP Limit" to 2 will ignore any remaining TPs, e.g. [TP1, TP2, TP3, ...] --> [TP1, TP2]. You'll only use the first two take profits.

“Leverage Pref” & “Stoploss Pref”:

  • expected values: "high" or "low" | type: String

  • Leverage or stoploss might be more than one in a signal. With this setting you can choose if you want to use the higher value or lower value for the leverage or stop loss

  • E.g.: We have two leverage values [20, 40] and two stoploss values [1, 2] in a long signal (signal side matters and adjustments are automatically calculated by TradeEye) if we choose "high" setting for both , we will end up with [40] for leverage and [1] for stoploss ("high" means higher risk, that is why stoploss value is actually lower (1 < 2), for the other trade direction it would be vice versa) opposite logic goes for "low" setting.

"Use Sliding Stoploss":

  • expected values: true or false | type: Boolean

  • This setting will move the stop loss to the next take profit once a take profit was hit

  • E.g., You have 4 take profits. Once the first take profit is hit, the stop loss is moved to entry. When the next take profit (TP2) is hit, the stop loss is moved to the take profit price and so on.

  • this way we can "Secure" our profits by lowering the risk but also lowering the amount of Profit that we can make from a single trade.

"Use Cross Mode":

  • expected value: true or false | type: Boolean

  • It works the same as it does on the exchange: use cross mode = true, else use false if you want to use the isolated mode

  • Explanation: Some signals have stop loss values for more than 100% in loss, meaning you will lose more than you have set for “Funds Per Trade”. If this setting is set to false and the signal has a stop loss value greater than -100% TradeEye will change stoploss value to -100% loss. Hence you can only use your whole position and not more.

“Wait Entry For”:

  • expected values: Xm, Xh, Xd, Xw | description: X should be Integer, followed by first letter of minute, hour, day or week | type: String

  • How long you are willing to wait for the entry value to be reached after the signal was sent. This setting will determine whether or not you will enter the trade or if it will be skipped.

"Keep Trade Open For":

  • expected values: Xm, Xh, Xd, Xw | description: X should be Integer followed by first letter of minute, hour, day or week | type: String

  • Choose the maximum time you want to be in a position. If the position is still open (when whether all the take profits nor the stop loss was hit) the remaining position will be closed after this time.

"Use Candle's":

  • expected values: "higher value" or "lower value" | type: String

  • EXPERT SETTINGS: just use "higher value"

  • TradeEye operates by analysing historical 1-minute candles. Those OHLC candles contain information about Open, High, Low and Close value that the cryptocurrency reached in the minute timeframe. Sometimes the trade ends with the status: Time-Limit which means that NO TP or SL was reached in a timeframe we had defined in "Keep Trade Open For" setting, so TradeEye needs to choose from which value to calculate profit (it should either use higher or lower value of the 1-minute candle).

CustomSettings: (contains only optional settings)

1 & 2 "AutoFill Trades" & "Use Custom Settings":

  • expected values: true of false | type: Boolean

  • If either of this setting is set to "true" TradeEye will override the signals settings with the values defined in this category. The difference between these two settings is that "Use Custom Settings" is always used and replaces the Signal values with your custom values, whereas "AutoFill Trades" is only used if the signal has missing leverage, stoploss, or both. That information is required for TradeEye to analyse the signal successfully.

"Custom Leverage"

  • expected value: Integer

  • Set your custom value for the leverage. This overrides the signals leverage.

"Custom StopLoss":

  • expected value: "-10%", or "-5%" | type: String

  • Set your custom values for the signal. Note: -x% already includes into account the information about the leverage meaning it's the "Real" value ( you don't have to do any calculation yourself")

Advanced Settings (contains only optional settings)

"Use Same Candle":

  • expected value: true or false | type: Boolean

  • In rare occasions TradeEye can't determine for sure if the conditions are met to continue the trade, if this setting is true and the occasion happens TradeEye will not skip this trade and will still analyse the trade. This will increase the risk of inaccuracy (it's recommended not to change this setting).

"Coin Similarity Limit":

  • expected value: X% | description: X should be integer followed by the % sign | type: String)

  • Sometime signal has inaccurate name for the coin. This setting attempts to correct the name and to not skip the trade (it's recommened not to change this setting).

TradeEye: Analysis results for the crypto trading groups

After configuring all of this settings TradeEye will start Analysing and output logs for each trade that has all information about the trade. Let’s take a look at its format and what data it reports

'TradeInfo': {'Message-Sent-At': '2023-07-10 20:06:00',
               'Closed-With-Status': 'Slid-Stop-Loss',
               'Total-Trade-Time': '13:02:00',
               'Trade-Dynamic': ['TP', 'TP', 'SL']},
 'EntryInfo': {'Date': '2023-07-10 20:10:00',
               'Interval': '0:04:00',
               'Value:': 0.11899},
 'TpInfo': {'Amount': 4.000000000000003,
            'Count': 2,
            'TpData': {'TP1': {'Amount': 2.000000000000013,
                               'Date': '2023-07-11 07:13:00',
                               'Interval': '11:03:00',
                               'CandleData': [0.1208, 0.1181]},
                       'TP2': {'Amount': 4.000000000000003,
                               'Date': '2023-07-11 07:37:00',
                               'Interval': '11:27:00',
                               'CandleData': [0.1214, 0.121]}}},
 'SlInfo': {'Amount': 2.000000000000013,
            'Date': '2023-07-11 09:08:00',
            'Interval': '12:58:00',
            'CandleData': [0.1226, 0.1209]},
 'ProfitInfo': {'ValuesDisplayedIn': 'USDT',
                'liquidation': False,
                0: 2.000000000000013,
                1: 4.000000000000003,
                2: 5.999999999999992,
                3: 12.000000000000007,
                'Sl': 7.3497772922094216

All trade has one of 5 possible Trade Status those are:

  1. All-TPs-Reached (all take profits were reached successfully)

  2. Stop-Loss

  3. Open-Trade (trade is considered as Open-Trade if it has not reached TP or SL in given timeframe and TP or SL will not be calculated)

  4. Time-Limit ( similar to Open-Trade but in this Case no TP or SL is calculated)

  5. Slid-Stop-Loss (similar to Stop-Loss but is not negative. this status is only generated when the "Use Sliding StopLoss" option is set to True in TradeEye settings.

knowing this let’s look at the reported data.


  • It’s an overview of the trade. without even looking at other data you can tell how the trade ended.

  • it reports:

    • when message was sent

    • with what status it ended

    • how much time the whole trade took

    • and dynamic of the TPs (it might include Sl aswell ex: [TP, TP, SL] this means 2 TPs reached before hitting the stoploss)


  • It has data about when the Entry was reached. How long it took (calculated from when the message was sent in channel) and with what value it entered the trade.

“TpInfo and SlInfo”:

  • In this example we don’t have “SlInfo” because there was no SL in trade but in both cases, it contain information almost the same as the entry info has but also report data how much was the trade profit or stoploss amount.

”ProfitInfo” :

  • How much profit and stop loss was possible by the signal.

Overall Channel Result

with this information overall channel result is generated in this format:

    "Group": "gg-shot",
    "Start-Date": "2023-07-10 08:39:37.333000",
    "End-Date": "2023-07-12 08:40:49.748000",
    "Interval": "2 days, 0:01:12.415000",
    "Total-Trades": 39,
    "Total-Funds-Used": 0,
    "Channel-Profit-Amount": "3.82$",
    "Tp-Only-Amount": "15.5$",
    "Sl-Only-Amount": "-11.68$",
    "Trades-Won": 6,
    "Trades-Lost": 2,
    "Open-Trades": 21,
    "WinRate": "33.33%",
    "Average-Trades-Per-Day-Count": 13,
    "Trade-Statuses-Triggered": {
        "Stop-Loss": 2,
        "Sliding-Stop-Loss": 16,
        "Open-Trade": 21
    "Debugger": {
        "CoinError": 1,
        "TradeEventError": 1,
        "NoEntryError": 8
    "Trades-Analyzed": 49

“Total Trades”:

  • How many trades we did (various conditions can cause the trade to be skipped) and that information is presented at the end of the reported channel data.

”Channel Profit”:

  • How much profit you have made with trading using your settings on selected channel.

'Tp-Only-Amount’ and 'Sl-Only-Amount':

  • How much TP was made and how much we have lost.


  • How much would have we made in profit if we only had used 1 TP.


  • calculate with formula: Trades Won / (Total Trades – Open Trades) * 100.


  • How many trades have been analysed overall.

Last updated