diff --git a/freqtrade/templates/v7.py b/freqtrade/templates/v7.py index f1d12e2..024bfb1 100644 --- a/freqtrade/templates/v7.py +++ b/freqtrade/templates/v7.py @@ -3,9 +3,13 @@ from pandas import DataFrame import numpy as np import os import datetime +import time import pandas as pd import talib.abstract as ta import freqtrade.vendor.qtpylib.indicators as qtpylib +from freqtrade.persistence import Trade # 必须导入 Trade 类 +from tempfile import NamedTemporaryFile +import shutil class TheForceV7(IStrategy): @@ -145,6 +149,7 @@ class TheForceV7(IStrategy): return dataframe + def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: dataframe.loc[ ( @@ -192,35 +197,5 @@ class TheForceV7(IStrategy): ), 'exit_long'] = 1 return dataframe - def confirm_trade_entry(self, pair: str, order_type: str, amount: float, rate: float, - time_in_force: str, current_time: datetime, **kwargs) -> bool: - log_path = './user_data/dryrun_results/dry_run_trades.csv' - # 自动创建目录 - os.makedirs(os.path.dirname(log_path), exist_ok=True) - # 写入日志 - with open(log_path, 'a') as f: - f.write(f"{pair},{current_time},,,{rate},,{amount},,,,,,,,\n") - return True - def confirm_trade_exit(self, pair: str, trade: 'Trade', order_type: str, amount: float, - rate: float, time_in_force: str, exit_reason: str, current_time: 'datetime', **kwargs) -> bool: - log_path = './user_data/dryrun_results/dry_run_trades.csv' - # 自动创建目录 - os.makedirs(os.path.dirname(log_path), exist_ok=True) - # 计算盈亏 - profit_ratio = trade.calc_profit_ratio(rate) - profit_abs = trade.calc_profit(rate) - trade_duration = (current_time - trade.open_date).total_seconds() / 60 - # 获取 min_rate 和 max_rate - df = self.trade_data.get(pair) - min_rate = max_rate = rate - if df is not None: - trade_period = df[(df['date'] >= trade.open_date) & (df['date'] <= current_time)] - min_rate = trade_period['low'].min() if not trade_period.empty else rate - max_rate = trade_period['high'].max() if not trade_period.empty else rate - # 写入日志 - with open(log_path, 'a') as f: - f.write(f"{pair},{trade.open_date},{current_time},{trade.open_rate},{rate}," - f"{amount},{profit_ratio},{profit_abs},{exit_reason}," - f"{trade.fee_open},{trade.fee_close},{trade_duration},{min_rate},{max_rate}\n") - return True + diff --git a/tools/backtest.sh b/tools/backtest.sh index bbb9b79..d983d50 100755 --- a/tools/backtest.sh +++ b/tools/backtest.sh @@ -8,6 +8,7 @@ cd ../ source .venv/bin/activate rm -rf user_data/models/* rm -rf ./freqtrade/user_data/data/backtest_results/* +rm -fr ./user_data/dryrun_results/* #docker-compose -f docker-compose_backtest.yml run --rm freqtrade >output.log 2>&1 freqtrade backtesting \