chore: remove edge_cli module
This commit is contained in:
@@ -1,55 +0,0 @@
|
|||||||
# pragma pylint: disable=missing-docstring, W0212, too-many-arguments
|
|
||||||
|
|
||||||
"""
|
|
||||||
This module contains the edge backtesting interface
|
|
||||||
"""
|
|
||||||
|
|
||||||
import logging
|
|
||||||
|
|
||||||
from freqtrade import constants
|
|
||||||
from freqtrade.configuration import TimeRange, validate_config_consistency
|
|
||||||
from freqtrade.constants import Config
|
|
||||||
from freqtrade.data.dataprovider import DataProvider
|
|
||||||
from freqtrade.edge import Edge
|
|
||||||
from freqtrade.optimize.optimize_reports import generate_edge_table
|
|
||||||
from freqtrade.resolvers import ExchangeResolver, StrategyResolver
|
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class EdgeCli:
|
|
||||||
"""
|
|
||||||
EdgeCli class, this class contains all the logic to run edge backtesting
|
|
||||||
|
|
||||||
To run a edge backtest:
|
|
||||||
edge = EdgeCli(config)
|
|
||||||
edge.start()
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, config: Config) -> None:
|
|
||||||
self.config = config
|
|
||||||
|
|
||||||
# Ensure using dry-run
|
|
||||||
self.config["dry_run"] = True
|
|
||||||
self.config["stake_amount"] = constants.UNLIMITED_STAKE_AMOUNT
|
|
||||||
self.exchange = ExchangeResolver.load_exchange(self.config)
|
|
||||||
self.strategy = StrategyResolver.load_strategy(self.config)
|
|
||||||
self.strategy.dp = DataProvider(config, self.exchange)
|
|
||||||
|
|
||||||
validate_config_consistency(self.config)
|
|
||||||
|
|
||||||
self.edge = Edge(config, self.exchange, self.strategy)
|
|
||||||
# Set refresh_pairs to false for edge-cli (it must be true for edge)
|
|
||||||
self.edge._refresh_pairs = False
|
|
||||||
|
|
||||||
self.edge._timerange = TimeRange.parse_timerange(
|
|
||||||
None if self.config.get("timerange") is None else str(self.config.get("timerange"))
|
|
||||||
)
|
|
||||||
self.strategy.ft_bot_start()
|
|
||||||
|
|
||||||
def start(self) -> None:
|
|
||||||
result = self.edge.calculate(self.config["exchange"]["pair_whitelist"])
|
|
||||||
if result:
|
|
||||||
print("") # blank line for readability
|
|
||||||
generate_edge_table(self.edge._cached_pairs)
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
# flake8: noqa: F401
|
# flake8: noqa: F401
|
||||||
from freqtrade.optimize.optimize_reports.bt_output import (
|
from freqtrade.optimize.optimize_reports.bt_output import (
|
||||||
generate_edge_table,
|
|
||||||
generate_wins_draws_losses,
|
generate_wins_draws_losses,
|
||||||
show_backtest_result,
|
show_backtest_result,
|
||||||
show_backtest_results,
|
show_backtest_results,
|
||||||
|
|||||||
@@ -499,33 +499,3 @@ def show_sorted_pairlist(config: Config, backtest_stats: BacktestResultType):
|
|||||||
if result["key"] != "TOTAL":
|
if result["key"] != "TOTAL":
|
||||||
print(f'"{result["key"]}", // {result["profit_mean"]:.2%}')
|
print(f'"{result["key"]}", // {result["profit_mean"]:.2%}')
|
||||||
print("]")
|
print("]")
|
||||||
|
|
||||||
|
|
||||||
def generate_edge_table(results: dict) -> None:
|
|
||||||
tabular_data = []
|
|
||||||
headers = [
|
|
||||||
"Pair",
|
|
||||||
"Stoploss",
|
|
||||||
"Win Rate",
|
|
||||||
"Risk Reward Ratio",
|
|
||||||
"Required Risk Reward",
|
|
||||||
"Expectancy",
|
|
||||||
"Total Number of Trades",
|
|
||||||
"Average Duration (min)",
|
|
||||||
]
|
|
||||||
|
|
||||||
for result in results.items():
|
|
||||||
if result[1].nb_trades > 0:
|
|
||||||
tabular_data.append(
|
|
||||||
[
|
|
||||||
result[0],
|
|
||||||
f"{result[1].stoploss:.10g}",
|
|
||||||
f"{result[1].winrate:.2f}",
|
|
||||||
f"{result[1].risk_reward_ratio:.2f}",
|
|
||||||
f"{result[1].required_risk_reward:.2f}",
|
|
||||||
f"{result[1].expectancy:.2f}",
|
|
||||||
result[1].nb_trades,
|
|
||||||
round(result[1].avg_trade_duration),
|
|
||||||
]
|
|
||||||
)
|
|
||||||
print_rich_table(tabular_data, headers, summary="EDGE TABLE")
|
|
||||||
|
|||||||
Reference in New Issue
Block a user