# Configuration guide

The config files are split into sections All these sections are surrounded by curly brackets like this

    "Host": {
    "ProfitTrailerApiEndPoint1": "", 
      ...
    },

# Hostsettings.json

This files contains settings are for the running of the application.

# Section: Host

# Mandatory

# ProfitTrailer Endpoint

"ProfitTrailerApiEndPoint1": "http://localhost:8081",

This is the location of your ProfitTrailer monitoring page. PT Feeder saves your settings using the ProfitTrailer api so needs to know this location to know where to send the generated config.

Note that if you are using enforced SSL, you may need to give your full address as locahost may not be available on http.

# ProfitTrailer API Token

"ProfitTrailerServerApiToken1": "ABCDEFGHISOMERANDOMKEY",

This is the server.apitoken that you have set in your ProfitTrailer GUI settings screen. For example, in the example above, server.api_token = ABCDEFGHISOMERANDOMKEY.

More details can be found about it here (opens new window)

# ProfitTrailer License Key

"ProfitTrailerLicense1": "ABCDEFGHISOMERANDOMKEY",

This is your ProfitTrailer license key given to you when you bought ProfitTrailer. It is required to to authenticate with ProfitTrailer's config api to allow writing and switching of your configs.

# HostName

"HostName": "My PT-Feeder Bot1",

The Name of your instance. When running multiple instances this helps to separate them in Telegram/Discord Messages and is the name of your config in PT.

# LicenseKey

"LicenseKey": "XXXX-XXXX-XXXX-XXXX",

This is the license key for PT Feeder provided to you by your reseller.

# Optional

These are not in the default hostsettings file that comes with Feeder but you can add them if needs be.

# ServerUrls

"ServerUrls": "http://localhost:5010",

This is for later use and currently not used. Please leave the defaults in there. In the rare cased where this port (5010) is used on the system just change it to whatever free port.

# MarketConditionCheckInMinutes

"MarketConditionCheckInMinutes": "5",

This is how often PT Feeder should check for changes in the market condition.

# StartupWaitTime

"StartupWaitTime": "5",

A configurable wait time before Feeder tries to connect to ProfitTrailer. Useful for scripts that start both applications but Feeder needs ProfitTrailer to be up and running before it can work. This is in seconds

# ConfigRestartTimeOut

"ConfigRestartTimeOut": "30",

How long to wait for further changes to your settings before automatically restarting Feeder. This is in seconds

# BackupTradingFiles

"BackupTradingFiles": "true",

PT Feeder will save a copy of the config it generates in the trading/backup directory of your ProfitTrailer directory.

# TurnsToRegenerateFiles

"TurnsToRegenerateFiles": "5",

PT Feeder will regenerate ProfitTrailer properties files every market condition change or this many times regardless. The default is 5.

# TelegramBotId and TelegramChatId`

"TelegramBotId": "4178xxx:AAxxxxxxxxxxxxxxTY",
"TelegramChatId": "1xxxxx6",

The BotId and ChatId of your Telegram Bot if you are going to use one. PTF will notify you of market changes via this bot. Keep this secret.

# DiscordBotToken and DiscordChatName`

"DiscordBotToken": "",
"DiscordChatName": "",

The BotToken and ChatToken of your Discord Bot if you are going to use one. PTF will notify you of market changes via this bot. Keep this secret.

# Signal Length

"SignalLength": "15",

How many minutes any signal, such as an TradingView alert, is valid until before reverting back to previous settings.

# Disable TotalPass check TotalPassedDisabled

"TotalPassedDisabled": "false",

The total pass check will pause feeder until PT has all the data it requires. You can disable this check if requested by support.

# BTC Dominance and Market cap

The CMC api is going Pro end of this year. To use the data, you can use the free plan and please add your CMC api key as CoinMarketCapApiKey in your hostsettings. These two properties can be used for a custom MarketConditionGrouping condition.

market.BtcDominance
market.TotalMarketCap

# Reduced comments

On some occasions, the PT Feeder config file is too large for ProfitTrailer. This can be avoided by reducing the comments in the config. To do this, add this to your hostsettings.json file:

"PrintPairComments" : "false",

By default, comments are excluded in your settings file.

# Reduced discord / telegram notifications

To recieve basic notifications when market conditions change, the following can be set

"MinimalNotifications" : "true",

By default, MinimalNotifications are sent in your notifications.

# Section: Serilog

"Serilog": {
  "MinimumLevel": "Information"
},

Defines the log level. When set to Debug more information is logged to the console. Might help tracking down problems but usually Information should be good.

So the final hostsettings.json looks like this as an example:

{
  "Host": {
    "ProfitTrailerApiEndPoint1": "http://localhost:8085/", 
    "ProfitTrailerLicense1": "ABCD",
    "ProfitTrailerServerApiToken1": "ABCD",
    "HostName": "BTC", 
    "LicenseKey": "XXXX-XXXX-XXXX-XXXX-XXXX", 
  },
  "Serilog": {
    "MinimumLevel": "Information" 
  }
}

# Appsettings.json

The appsettings.json file contains all the settings for you to setup to generate your PT config file.

# PT Feeder naming convention

PT Feeder follows a naming convention to translate into PT properties. PT Feeder will split the property name by case and insert _ to generate the PT property. There are three types of config in ProfitTrailer. Pairs, DCA and indicators. The prefix of the PT Feeder property name determines where the property which is translated to ends up. Lets take a few examples. No prefix means it will go to pairs.

The common section and default section of the appsettings file will determine if it is a pair specific property or not.

1. A property called MaxTradingPairs in the Common section of appsettings.

This has no prefix so will go into the pairs configuration. It will split at T and P. So this will get translation to Max_Trading_Pairs.

2. A property called DcaKeepBalance in the Common section of appsettings.

This has a prefix of Dca so will go into the DCA configuration. It will split at K and B so will go to Keep_Balance.

3. A property called IndicatorsBbLength in the Common section of appsettings.

This has a prefix of Indicators so will go into the indicators configuration. It will split at B and L so will go to Bb_Length.

3. A property called MaxBuySpread in the Default section of appsettings

This has no prefix so will go into the pairs config in PT. It will be split at B and S and will have a DEFAULT property and a pair specific property. So this will go to DEFAULT_Max_Buy_Spread and ETH_Max_Buy_Spread for example.

4. A property called DcaMaxBuySpread in the Default section of appsettings.

This has a DCA prefix so will go into the DCA config in PT. It will be split at B and S and will have a DEFAULT property and a pair specific property. So this will so to DEFAULT_Dca_Max_Buy_Spread and ETH_Dca_Max_Buy_Spread.

In any of the groupings, you can put Offset at the end to offset that property

# Section: PtFeeder

The first section is the PtFeeder section and these are properties that are PT Feeder specific and DO NOT get converted to any PT property directly.

# BaseCurrency

"BaseCurrency": "BTC"

This is needed by Feeder for its queries to the exchange and used as the MARKET for PT.

# BaseCoinPair

"BaseCoinPair": "BTCUSDT"

This is the currency pair to use for Base Coin price change. For example, if your BaseCurrency is BTC, you can set this to BTCUSDT for example. Note that your exchange has to support that pair. For example, for Binance this needs to be BTCUSDT and for Bittrex it needs to be USDT-BTC for example. The default if this is not set is BTCUSDT.

# Coin lists

# ExcludedCoins

"ExcludedCoins": "SAFEX,BNB,BTS,BTA,DAR,DRACO,SLING,CRYPT,DOGE,UNO,SC,INCNT,NAUT,SJCX,NOTE,TKN,TIME"

These are pairs where no config is generated. The default list is made from coins that are or will be delisted from Bittrex.

# EnabledCoinsOnly

"EnabledCoinsOnly": "ETH,LTC"

Basically the opposite of ExcludedCoins. Coins here will be the only ones configuration is generated for. If a coin is on the Excluded list and Enabled list, then the coin will be not have any config generated for it. (Excluded has precedence). If you want to have coins on SomOnlyCoins and you use the EnabledCoinsOnly feature you need to enable them on this list first before you can use them on SomOnlyCoins

# SomOnlyCoins

"SomOnlyCoins": "SAFEX,BNB,BTS,BTA,DAR,DRACO,SLING,CRYPT,DOGE,UNO,SC,INCNT,NAUT,SJCX,NOTE,TKN,TIME"

These are pairs where coins are forced into sell only mode.

# HiddenCoins

"HiddenCoins": "SAFEX,BNB,BTS,BTA,DAR,DRACO,SLING,CRYPT,DOGE,UNO,SC,INCNT,NAUT,SJCX,NOTE,TKN,TIME"

These coins will be hidden from the PT Monitor.

# DcaExcludedCoins

"DcaExcludedCoins": "XRP"

These are pairs where DCA is always false no matter what the override

# DcaIncludedCoins

"DcaIncludedCoins": "XRP"

These are pairs where DCA is enabled only for the ones on the list

# Auto whitelist

AutoTopCoinWhitelist as true/false, default is false.

If this is true, then only the top coins (35 for example if this is the settings) have trading enabled and have config generated. Any other coins in the PT data log, will have SellOnlyModeEnabled as true.

# Top coin trend selection

  • Choose which coins you would like your TopCoinTrendChange to be built off. Add TopCoinTrendChangeCoins to your PtFeeder section of appsettings to use this feature.

# Trend measurement

# TopCurrenciesToCheck

"TopCurrenciesToCheck": "50"

When measuring top coins trend, this is how many top coins to check by volume from the exchanges that you have configured PT Feeder for. In this example, the top 50 coins will be checked and their price change over the MeasureTimes property and the average change calculated. This average is used for the MaxTopCoinAverageChange property.

# MeasureTimes

"MeasureTimes": [ 120, 360, 720 ]"

This is an array of times that you want PT Feeder to measure. The first is the normal time trend, the second is the medium time trend and the last in the long time trend for the below groupings. You can add as many as you like, but to you use more than 3, you need to write your own custom groupings.

In custom conditions, you can then use for example:

[pair.PercentageChange(3)] > [config.PriceChangeFor12h]

# PT Feeder candle size

By default, PT Feeder uses 5 min candles. This can be changed by adding the property FeederCandleSize in the PtFeeder section of your appsettings. Possible values are: 1m, 5m, 15m, 30m, 1h, 2h, 4h, 8h, 12h, 1d, 3d, 1w, 1mon.

  • The supported values also depends if your exchange supports those candle periods. If you use a period not supported by your exchange, you will get an error.
  • Note to make sure your MeasureTimes correspond or you will get an error. For example, a measure time of 120 mins will NOT work with 1 day candles.

# Section: Common

All properties in this section get translated to properties in PT config, without DEFAULT in front of them and follow the PT Feeder naming convention and DO NOT have pair specific overrides. To see all the properties possible, familiarise yourself with the ProfitTrailer wiki (opens new window)

Examples of properties that can be placed in this section are:

    "MaxTradingPairs": "10"
    "StartBalance": "2.1827",


    //DCA
    "DcaKeepBalance": "0",
    "DcaKeepBalancePercentage": "0",

    // Indicators
    "IndicatorsBbStd": "2",
    "IndicatorsBbCandlePeriod": "300",
    "IndicatorsBbLength": "20",

# Section: Defaults

All properties in this section get translated to PT properties, based on the PT Feeder naming convention, with DEFAULT_ at the beginning and also have pair specific overrides. To see all the properties possible, familiarise yourself with the ProfitTrailer wiki (opens new window)

Examples of what can be placed in this section are below:

 
    "InitialCost": "0",
    "InitialCostPercentage": "7",

    "ABuyStrategy": "EMACROSS",
    "ABuyValue": "-0.01",
    "ABuyValueLimit": "-3",

    "DcaEnabled": "-1",
    "MaxBuySpread": "3",
    "MinOrderbookVolumePercentage": "101",
    "RebuyTimeout": "15",

    // Sell strategy properties
    "ASellStrategy": "GAIN",
    "ASellValue": "0.5",

    // coin filters
    "MinBuyPrice": "0",
    "MinBuyVolume": "500",

    // DCA Properties
    //buy
    "DcaMaxCost": "1",
    "DcaMaxBuyTimes": "20",

    // DCA buy strategies
    "DcaABuyStrategy": "EMACROSS",
    "DcaABuyValue": "-0.01",
    "DcaABuyValueLimit": "-10",

    "DcaBuyPercentage": "100",
    "DcaBuyTrigger": "-1",

    // DCA sell strategies
    "DcaASellStrategy": "GAIN",
    "DcaASellValue": "1.5",

# QueryMinBuyVolume

"QueryMinBuyVolume": "1000"

This is a special Feeder only setting which PT ignore. It is to be used if you would like to use TOPx as your min_buy_volume.

# Section: Groupings

The groupings in the appsettings file are your triggers and the action you want to happen to it if the trigger condition is true.

There are two types of groupings, ones that apply to all pairs and the only groupings that fall into this section are Market Conditions and Exchanges.

All other groupings are pair specific and only apply if the trigger is true based on the pair specific trend or property.

Each groupings follows the same pattern. A trigger and the offsets or overrides to apply. Below is an example.




 











 "PriceTrendChangeGrouping": {
    "Configs": [
      {
        "MaxPriceTrendPercentageChange": "-10",   // <--- THIS IS THE TRIGGER 
        "MinBuyVolumeOffset": "-50", // <--- THESE ARE OFFSETS TO APPLY
        "StartBalanceOffset": "-31.28",
        "Override": {
          "BBuyValue": "20" <--- THESE ARE OVERRIDES
          "BBuyStrategy": "LOWBB",
          "Weight": "10"
        }
      }
    ]
  },

# Section: Config Switch

This is the most basic way to use PT Feeder as none of the below conditions and groupings will be applied. But it is the easist way if you want to use ProfitTrailer settings directly, such as the default settings provided by ProfitTrailer themselves, but switch automatically through changes in market conditions

Switch to an alternate PT config using PT Feeder market conditions. Few notes for this feature:

  • If this feature is used, none of the other PT Feeder overrides or offsets are applied.
  • The configs NEED TO EXIST in your config list that is tied to your license in ProfitTrailer.
  • All market conditions need to have a SwitchConfigTo.

Example below:

  "MarketConditionsGrouping": {
    "Configs": [
      {
        "Name": "Bear",
        "MaxTopCoinAverageChange": "0.5",
        "SwitchConfigTo": "El Dorado"
      },
      {
        "Name": "Bull",
        "MaxTopCoinAverageChange": "10000",
        "SwitchConfigTo": "Golden Cross"
      }
    ]
  }

# Section: Market Conditions

In the below example, there are three market conditions, bear, boring and bull. The market condition grouping can have multiple triggers, and also needs a name property. Multiple triggers are treated as an OR, which means if any of the triggers are true, then the market condition applied. The triggers that can be used in market conditions are described below.

Each section of the grouping is checked sequentially and only the first one that is true will be applied.




 

















"MarketConditionsGrouping": {
    "Configs": [
      {
        "Name": "Bear", // <- A name to identify the market condition
        "MaxTopCoinAverageChange": "-5",
        "DcaStopLossTriggerOffset": "-100",
        "ABuyValueOffset": "-500", 
        "ABuyValueLimitOffset": "-200"
      },
      {
        "Name": "Boring",
        "MaxTopCoinAverageChange": "2.5"
      },
      {
        "Name": "Bull",
        "MaxTopCoinAverageChange": "5",
        "InitialCostPercentageOffset": "-20"
      }
    ]
  },

# Market condition triggers

Why

All the below triggers are used based on assumptions that you make on the correlation between certain things that are happening in the market, and how you want that to affect your bot. What do you think will happen to your bot if BTC rises a lot in value, or dips a lot. Or if the top pairs are doing well, what impact does this have? This is how these can be use to determine what settings you want to use.

# Top Coin Average Change
"MaxTopCoinAverageChange": "-3" 
"MaxTopCoinMediumTermAverageChange": "-3" 
"MaxTopCoinLongTermAverageChange": "-3"

This is saying that if the maximum change of the top coins from your configured exchanges is less than this max of -3% (e.g -5%), then we are in this market condition and will use the below offsets. The number of coins whose percentage price change is measured is configured in TopCurrenciesToCheck in the Default Section of appsettings.json. This uses the corresponding MeasureTimes from the Default section of appsettings.

# Minimum Base Coin Price Change
"MinBaseCoinPriceChange": "3"  
"MinBaseCoinMediumTermPriceChange": "-3" 
"MinBaseCoinLongTermPriceChange": "-3"

This is saying that if the minimum change of your base coin (e.g ETH or BTC) against USDT is more than this min of 2% (e.g 5%), then we are in this market condition and will use the below offsets. This uses the corresponding MeasureTimes from the Default section of appsettings. Note that this does not work currently when your base coin is USDT.

# Maximum Base Coin Price Change
"MaxBaseCoinPriceChange": "3" 
"MaxBaseCoinMediumTermPriceChange": "-3"
"MaxBaseCoinLongTermPriceChange": "-3"

This is saying that if the maximum change of your base coin (e.g ETH or BTC) against USDT is less than this max of 2% (e.g 1%), then we are in this market condition and will use the below offsets. This uses the corresponding MeasureTimes from the Default section of appsettings. Note that this does not work currently when your base coin is USDT.

# Included Coin VWAP Price Change
"MaxVwapTrendChange": "3" 
"MaxMediumTermVwapTrendChange": "-3" 
"MaxLongTermVwapTrendChange": "-3"

This calculated the volume weighted average price for all coins that have been selected by your PT Feeder config and the value is an average of these. This excludes coins in your SOM list, below your min volume and in your excluded list. This uses the corresponding MeasureTimes from the Default section of appsettings.

A community TradingView script has kindly been developed to show all of these except VWAP by PuppyTherapy here (opens new window)

# Section: Pair groupings

Each of the following section are optional. If you do not need them, you can remove any section or grouping but be sure to keep the json format. You can copy and paste the contents of the appsettings.json file to this site (opens new window) to make sure it is correct. Or ideally, use Visual Studio Code (opens new window).

Remember as with anything in the appsettings.json, the sections in each grouping are checked sequentially in order, so the first group that matches will be the group settings that are used.

Below are the triggers for each section to be true. For each of the section, you can offet or override any PT property. You can also add as many sections in each grouping as you like.

To add a grouping, this is the format:




 








 "PriceTrendChangeGrouping": { <-- This is the grouping name
    "Configs": [
      {
        "MaxPriceTrendPercentageChange": "1.5" <-- This is the trigger
      },
      {
        "MaxPriceTrendPercentageChange": "1000", <-- This is the trigger. 
        "DcaASellValueOffset": "-50", 
      }
    ]
  }

# PriceGrouping

Trigger - "MaxPrice": "0.001"

If the price is lower than this maximum, then these offsets will apply. In the case above, anything lower than 0.001 BTC, this section will apply.

# VolumeGrouping

Trigger "MaxVolume": "200"

If the volume is lower than this maximum, then these offsets will apply. In the case above, anything lower than 200 BTC, this section will apply. Note that this over a 24 hour period.

Why

If a coin is trending up or down in a short period, it is a sign of a pump or a dump. You may want to avoid trading in this pair whilst the dust settles.

# PriceTrendChangeGrouping

PriceTrendChangeGrouping
MediumTermPriceTrendChangeGrouping
LongerTermPriceTrendChangeGrouping

Trigger "MaxPriceTrendPercentageChange": "-5"

If price change for a coin is less than this maximum over the period defined in the corresponding MeasureTimes, then the offsets defined will apply. This is the price at the end of the time window subtracted from the price and the start of the time window.

A community trading view script that shows this has been developed by Squiggles and can be found here (opens new window)

Why

If a coin is trending up or down in a short period, it is a sign of a pump or a dump. You may want to avoid trading in this pair whilst the dust settles.

# HighLowPricePercentageGrouping

HighLowPricePercentageGrouping 
MediumTermHighLowPricePercentageGrouping 
LongerTermHighLowPricePercentageGrouping

Trigger "MaxHighLowPricePercentage": "-5"

This is a property to try and check the variance of the price from the norm and is over the corresponding MeasureTimes time window. The math is:

	firstVariance = (high.ActualPrice - low.ActualPrice) / 2
	medianVariance = high.ActualPrice - firstVariance
	highLowPercentage = (latestActualPrice - medianVariance) / latestActualPrice * 100

A community trading view script that shows this has been developed by Squiggles and can be found here (opens new window)

# ExchangeGrouping

Trigger "ExchangeName": "Bittrex"

Offsets can be applied if the exchange name matches the ExchangeName property. Can be used to alter things like the MinBuyVolume per exchange if PT Feeder is being used to drive multiple bots on different exchanges. The options are Bittrex, Poloniex and Binance. Possible options are Bittrex, Binance or Poloniex.

Why

Different exchanges have different volumes and also you may have a different start balance. This section allows you to change these per exchange.

# NewCoinsGrouping

Trigger "CoinAge": "0.1" ExtraProperty "TimeUnit":"Days"

Apply offsets and overrides for any coin that has an age younger than the CoinAge specified. The extra property, TimeUnit must be provided and can be Days, Hours, Minutes, Seconds or Milliseconds.

Why

Sometimes new coins on exchanges dump instantly when they are listed. This section allows you put new coin on sell only mode for example or make it more difficult to buy.

It is possible to add a section called Footer at the end of the appsettings.json file. This will add extra properties at the end of your config file that will replace anything futher in the file.

  "Footer": {
    "Pairs": {
         "BCH_B_Buy_Value": "40.0",
         "BCH_A_Buy_Value": "40.0"
    },
    "Dca": {
         "DEFAULT_Dca_Max_Cost": "0",
         "DEFAULT_Dca_Min_Buy_Volume": "400"
    },
    "Indicators": {
        "Macd_Fast_Length": "12",
        "Macd_Signal": "9"
    }
  },

Why

An example reason for why you might do this is that PT Feeder will generate config for every coin. You may have certain coins that you want to override a fixed value, like the sell value or the gain as you think they will go higher. You can add this in this section.

# Grouping Properites

# Enable / Disable groupings per coin

Properties can be added to enable to disable a grouping for certain pairs. By default, all pairs are included:

"WikiExampleGrouping": {
    "Condition": "[market.BaseCoinPriceChange] - [pair.PercentageChange] <= [config.TriggerName] ",
    "EnabledMarkets":   "ETH,ETC,MTL",
    "DisabledMarkets":  "BCC,XRP",
    "Configs": [
      {
        "TriggerName": "-1",
        "Override": {
          "DcaRebuyTimeout": "30",
          "Weight": "100"
        }
      },
    ]
  },

# Ignore Offsets

A property can be added on a grouping to ignore offsets in that group.

 "PriceTrendChangeGrouping": {
   "IgnoreOffsets": "true",
    "Configs": [
      {
        "MaxPriceTrendPercentageChange": "-10"
      },

# Default market condition

A market condition can be set as the default, which is the one which is used if for any reason, the market condition cannot be evaluated.

 {
        "Name": "Boring",
        "Default": "true",
        "MaxTopCoinAverageChange": "2.5"
      },

# Sticky Timer

For market conditions or any grouping, a property is added so this grouping says valid for period of time, regardless of if the condition changes. To use this feature, add a new property to the config called StickyTimer like so, for example:

 {
        "Name": "Boring",
        "StickyTimer": "250",
        "MaxTopCoinAverageChange": "2.5",
  },

The value for StickyTimer is in minutes.

# Offset Calculation

To offset a property in any of the above grouping, you need to suffix the property name with Offset.

For example, if you want to offset the A_Buy_Value, this is ABuyValue in PTF so you would put ABuyValueOffset.

With the offset calculation method, if you want a negative number to move further away from zero, simply apply a negative offset. If you want it to move closer to zero, apply a positive offset. Same applies for positive values as you would expect. Move away from zero, apply a positive offset. To move closer to zero, apply a negative offset.

# Offset Calculation Formula

ABuyValue + (Absolute(ABuyValue)/100 * ABuyValueOffset)

Here are some examples:

ABuyValue : "-10"
ABuyValueOffset: "-10"
Result: -11 

another one

BuyValue : "10"
BuyValueOffset: "-10"
Result: 9 

and one more with a positive offset

BuyValue : "40"
BuyValueOffset: "10"
Result: 44 

# Default of 0

One thing to note if that if you have a 0 default value, none of the above calculations will take effect as a percentage of 0 is 0. The only workaround for this at the moment is using a very very small number such as 0.001 and using an offset based on that.

# Overrides

As well as offsetting, you can also override any property in any grouping.

  • For each market condition
  • For different volume coins
  • For coins that have a long term downtrend. etc.

The syntax to do this is:




 



			"MaxTopCoinAverageChange": "0.5",
			"Override": {
				"BuyValue": "10",
				"BuyStrategy": "LOWBB",
				"Weight": "55"
			}

The above is saying that if the top coins have changes less than 0.5%, then it is a boring market. In this market, I want to override my default buy strategy in the general section of appsettings.json with LOWBB with a buy value of 10.

# Weight

The weight is a property which is required when there are one or more buy strategy overrides. If it is not supplied, a weight of 0 is used.

For example, if you have overriden the buy strategy to EMAGAIN in a boring market condition, and also LOWBB for high volume coins, then PT Feeder needs to know which one to choose. The one with the highest weight is chosen. If there are two buy strategy overrides for the same coin, then the first one that it finds will be used.

# Offsets

Any BuyValueOffsets that you have in your configuration will be applied to the new buy value that you have used in your override.

# Offset Groupings

You can also apply offsets based on the actual upside and downside volatility. You can also take the addition of these two to offset the whole candle size average in a grouping called AverageCandleSize

# Moving config directory

If you would like to move your config folder outside of your PT Feeder directory, the location specified in the environment variable PTFEEDER_CONFIG_DIRECTORY will be checked first.

The appsettings.json file is the second file of PTF configuration. It contains all your important tuning values that you wish to act it upon. Be sure to set this all right to your likings.

# Trading View Scripts

A collection of community developed tradingview scripts can be found below:

# Advanced Configuration

Other advanced configuration can be found on the Advanced page, here. This includes features such as:

  • Reacting to TradingView signals
  • Creating your own custom groupings.