average trade duration added
This commit is contained in:
parent
6aa9cd1060
commit
57bc4a866a
@ -14,6 +14,7 @@ from freqtrade.arguments import TimeRange
|
|||||||
from freqtrade.strategy.interface import SellType
|
from freqtrade.strategy.interface import SellType
|
||||||
from freqtrade.strategy.resolver import IStrategy, StrategyResolver
|
from freqtrade.strategy.resolver import IStrategy, StrategyResolver
|
||||||
from freqtrade.optimize.backtesting import Backtesting
|
from freqtrade.optimize.backtesting import Backtesting
|
||||||
|
import sys
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -31,6 +32,7 @@ class Edge():
|
|||||||
_timerange: TimeRange
|
_timerange: TimeRange
|
||||||
|
|
||||||
def __init__(self, config: Dict[str, Any], exchange=None) -> None:
|
def __init__(self, config: Dict[str, Any], exchange=None) -> None:
|
||||||
|
sys.setrecursionlimit(10000)
|
||||||
self.config = config
|
self.config = config
|
||||||
self.exchange = exchange
|
self.exchange = exchange
|
||||||
self.strategy: IStrategy = StrategyResolver(self.config).strategy
|
self.strategy: IStrategy = StrategyResolver(self.config).strategy
|
||||||
@ -68,7 +70,7 @@ class Edge():
|
|||||||
self.config['datadir'],
|
self.config['datadir'],
|
||||||
pairs=pairs,
|
pairs=pairs,
|
||||||
ticker_interval=self.ticker_interval,
|
ticker_interval=self.ticker_interval,
|
||||||
refresh_pairs=True,
|
refresh_pairs=False,
|
||||||
exchange=self.exchange,
|
exchange=self.exchange,
|
||||||
timerange=self._timerange
|
timerange=self._timerange
|
||||||
)
|
)
|
||||||
@ -272,13 +274,19 @@ class Edge():
|
|||||||
return x
|
return x
|
||||||
##############################
|
##############################
|
||||||
|
|
||||||
final = results.groupby(['pair', 'stoploss'])['profit_abs'].\
|
if results.empty:
|
||||||
agg([winrate, risk_reward_ratio, required_risk_reward, expectancy]).\
|
return []
|
||||||
reset_index().sort_values(by=['expectancy', 'stoploss'], ascending=False)\
|
|
||||||
.groupby('pair').first().sort_values(by=['expectancy'], ascending=False)
|
groupby_aggregator = {'profit_abs': [winrate, risk_reward_ratio, required_risk_reward, expectancy, 'count'], 'trade_duration': ['mean']}
|
||||||
|
final = results.groupby(['pair', 'stoploss'])['profit_abs','trade_duration'].agg(groupby_aggregator).reset_index(col_level=1)
|
||||||
|
final.columns = final.columns.droplevel(0)
|
||||||
|
final = final.sort_values(by=['expectancy', 'stoploss'], ascending=False).groupby(
|
||||||
|
'pair').first().sort_values(by=['expectancy'], ascending=False).reset_index()
|
||||||
|
|
||||||
|
final.rename(columns={'mean': 'avg_duration(min)'}, inplace=True)
|
||||||
|
|
||||||
# Returning an array of pairs in order of "expectancy"
|
# Returning an array of pairs in order of "expectancy"
|
||||||
return final.reset_index().values
|
return final.values
|
||||||
|
|
||||||
def _find_trades_for_stoploss_range(self, ticker_data, pair, stoploss_range):
|
def _find_trades_for_stoploss_range(self, ticker_data, pair, stoploss_range):
|
||||||
buy_column = ticker_data['buy'].values
|
buy_column = ticker_data['buy'].values
|
||||||
|
Loading…
Reference in New Issue
Block a user