Fix some typos and comment mistakes

This commit is contained in:
Matthias 2019-10-28 13:05:54 +01:00
parent 132a4da7cf
commit 61c037f2cf
4 changed files with 10 additions and 10 deletions

View File

@ -119,8 +119,8 @@ def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame
### Strategy startup period ### Strategy startup period
Most indicators have an "instable period", in which they are either not available, or the calculation is incorrect. This can lead to inconsistencies, since Freqtrade does not know how long this instable period should be. Most indicators have an instable startup period, in which they are either not available, or the calculation is incorrect. This can lead to inconsistencies, since Freqtrade does not know how long this instable period should be.
To account for this, the strategy has an attribute, `startup_candle_count`. To account for this, the strategy can be assigned the `startup_candle_count` attribute.
This should be set to the maximum number of candles that the strategy requires to calculate stable indicators. This should be set to the maximum number of candles that the strategy requires to calculate stable indicators.
In this example strategy, this should be set to 100 (`startup_candle_count = 100`), since the longest needed history is 100 candles. In this example strategy, this should be set to 100 (`startup_candle_count = 100`), since the longest needed history is 100 candles.
@ -132,21 +132,21 @@ In this example strategy, this should be set to 100 (`startup_candle_count = 100
By letting the bot know how much history is needed, backtest trades can start at the specified timerange during backtesting and hyperopt. By letting the bot know how much history is needed, backtest trades can start at the specified timerange during backtesting and hyperopt.
!!! Warning !!! Warning
`startup_candle_count` should be below `ohlcv_candle_limit` (which is 500 for most exchanges) - since only this amount of candles will be available during trading operations. `startup_candle_count` should be below `ohlcv_candle_limit` (which is 500 for most exchanges) - since only this amount of candles will be available during Dry-Run/Live Trade operations.
#### Example #### Example
Let's try to backtest 1 month (January 2019) of 5m candles. Let's try to backtest 1 month (January 2019) of 5m candles using the an example strategy with EMA100, as above.
``` bash ``` bash
freqtrade backtesting --timerange 20190101-20190201 --ticker-interval 5m freqtrade backtesting --timerange 20190101-20190201 --ticker-interval 5m
``` ```
Since backtesting knows it needs 100 candles to generate valid buy-signals, it'll load data from `20190101 - (100 * 5m)` - which is ~2019-12-31 15:30:00. Assuming `startup_candle_count` is set to 100, backtesting knows it needs 100 candles to generate valid buy signals. It will load data from `20190101 - (100 * 5m)` - which is ~2019-12-31 15:30:00.
If this data is available, Indicators will be calculated with this extended timerange. The startup period (Up to 2019-01-01 00:00:00) will then be removed before starting backtesting. If this data is available, indicators will be calculated with this extended timerange. The instable startup period (up to 2019-01-01 00:00:00) will then be removed before starting backtesting.
!!! Note !!! Note
If data for the startup-period is not available, then the timerange will be adjusted to account for this startup period - so Backtesting would start at 2019-01-01 08:30:00. If data for the startup period is not available, then the timerange will be adjusted to account for this startup period - so Backtesting would start at 2019-01-01 08:30:00.
### Buy signal rules ### Buy signal rules

View File

@ -52,7 +52,7 @@ class TimeRange:
""" """
if (not self.starttype or (startup_candles if (not self.starttype or (startup_candles
and min_date.timestamp >= self.startts)): and min_date.timestamp >= self.startts)):
# If no startts was defined, or test-data starts at the defined test-date # If no startts was defined, or backtest-data starts at the defined backtest-date
logger.warning("Moving start-date by %s candles to account for startup time.", logger.warning("Moving start-date by %s candles to account for startup time.",
startup_candles) startup_candles)
self.startts = (min_date.timestamp + ticker_interval_secs * startup_candles) self.startts = (min_date.timestamp + ticker_interval_secs * startup_candles)

View File

@ -147,7 +147,7 @@ def load_pair_history(pair: str,
""" """
timerange_startup = deepcopy(timerange) timerange_startup = deepcopy(timerange)
if startup_candles and timerange_startup: if startup_candles > 0 and timerange_startup:
logger.info('Using indicator startup period: %s ...', startup_candles) logger.info('Using indicator startup period: %s ...', startup_candles)
timerange_startup.subtract_start(timeframe_to_seconds(ticker_interval) * startup_candles) timerange_startup.subtract_start(timeframe_to_seconds(ticker_interval) * startup_candles)

View File

@ -55,7 +55,7 @@ def test_adjust_start_if_necessary():
assert x.startts == 1510694100 + (20 * 300) assert x.startts == 1510694100 + (20 * 300)
x = TimeRange('date', 'date', 1510700100, 1510780500) x = TimeRange('date', 'date', 1510700100, 1510780500)
# Do nothing, startupe is set and different min_date # Do nothing, startup is set and different min_date
x.adjust_start_if_necessary(300, 20, min_date) x.adjust_start_if_necessary(300, 20, min_date)
assert x.startts == 1510694100 + (20 * 300) assert x.startts == 1510694100 + (20 * 300)