from freqtrade.freqai.base_models.BaseRegressionModel import BaseRegressionModel
from freqtrade.freqai.data_kitchen import FreqaiDataKitchen
import pandas as pd
+import numpy as np
import scipy as spy
import optuna
import sklearn
max_label_period_candles,
step=candles_step,
)
- y_test_length = len(y_test)
- y_pred_length = len(y_pred)
- y_test = y_test.tail(y_test_length - (y_test_length % label_period_candles))
- y_pred = y_pred[-(y_pred_length - (y_pred_length % label_period_candles)) :]
- y_test = y_test.to_numpy().reshape(
- len(y_test) // label_period_candles, label_period_candles
- )
- y_pred = y_pred.reshape(len(y_pred) // label_period_candles, label_period_candles)
+ y_test_windows = [
+ y_test[i : i + label_period_candles]
+ for i in range(0, len(y_test) - label_period_candles + 1)
+ ]
+ y_pred_windows = [
+ y_pred[i : i + label_period_candles]
+ for i in range(0, len(y_pred) - label_period_candles + 1)
+ ]
+ y_test = np.array([window.mean() for window in y_test_windows])
+ y_pred = np.array([window.mean() for window in y_pred_windows])
error = sklearn.metrics.root_mean_squared_error(y_test, y_pred)
from freqtrade.freqai.base_models.BaseRegressionModel import BaseRegressionModel
from freqtrade.freqai.data_kitchen import FreqaiDataKitchen
import pandas as pd
+import numpy as np
import scipy as spy
import optuna
import sklearn
max_label_period_candles,
step=candles_step,
)
- y_test_length = len(y_test)
- y_pred_length = len(y_pred)
- y_test = y_test.tail(y_test_length - (y_test_length % label_period_candles))
- y_pred = y_pred[-(y_pred_length - (y_pred_length % label_period_candles)) :]
- y_test = y_test.to_numpy().reshape(
- len(y_test) // label_period_candles, label_period_candles
- )
- y_pred = y_pred.reshape(len(y_pred) // label_period_candles, label_period_candles)
+ y_test_windows = [
+ y_test[i : i + label_period_candles]
+ for i in range(0, len(y_test) - label_period_candles + 1)
+ ]
+ y_pred_windows = [
+ y_pred[i : i + label_period_candles]
+ for i in range(0, len(y_pred) - label_period_candles + 1)
+ ]
+ y_test = np.array([window.mean() for window in y_test_windows])
+ y_pred = np.array([window.mean() for window in y_pred_windows])
error = sklearn.metrics.root_mean_squared_error(y_test, y_pred)
max_open_trades = self.config.get("max_open_trades")
if max_open_trades < 0:
return -1
- elif max_open_trades == 0 or max_open_trades == 1:
+ if self.is_short_allowed():
+ return (max_open_trades + 1) // 2
+ else:
return max_open_trades
- elif max_open_trades >= 2:
- if self.is_short_allowed():
- return max_open_trades // 2
- else:
- return max_open_trades
def is_short_allowed(self) -> bool:
trading_mode = self.config.get("trading_mode")
def zlewma(series: Series, timeperiod: int) -> Series:
"""
Calculate the ZLEWMA (Zero Lag Exponential Weighted Moving Average) of a series.
+ Formula: ZLEWMA = EWMA(2*price - EWMA(price, N), N).
:param series: Series The original series
:param timeperiod: int The period to look back
:return: Series The ZLEWMA series
"""
- lag = int(round((timeperiod - 1) / 2))
- series = series + (series - series.shift(lag))
+ ewma = series.ewm(span=timeperiod).mean()
+ series = 2 * series - ewma
return series.ewm(span=timeperiod).mean()