可视化与数据分析

可视化与数据分析

要绘制策略的 K 线图与技术指标(如均线、RSI、MACD),可以使用 plot-dataframe 命令。例如,运行 freqtrade plot-dataframe --strategy SampleStrategy --pairs BTC/USDT --timeframe 1h --indicators sma,rsi --timerange 20230101-20230131 会加载指定策略和数据,生成一张包含价格走势和所有指定指标的图表。这个命令对理解策略信号的生成时机、验证指标有效性非常有帮助,是策略开发中的可视化调试工具。

使用 freqtrade plot-dataframe 命令可以可视化策略中定义的技术指标,帮助你分析交易信号与价格走势的关系。该命令会根据你指定的交易对、时间框架和策略,从历史数据中提取K线数据,并在图表中绘制选定的技术指标。默认情况下,它会显示三个图表行:第一行是价格和主要指标(如 SMA、EMA3、EMA5),第二行是成交量,第三行是辅助指标(如 MACD 和 MACD 信号线)。你可以通过参数自定义显示的指标、时间范围和数据量,从而更清晰地理解策略的买入/卖出逻辑。

你可以使用 --indicators1 参数来指定希望显示在图表第一行(即价格图层)的技术指标。这些指标必须是你策略中已定义的指标名称,例如 ema3、ema5 或 sma。默认情况下,系统会绘制 ['sma', 'ema3', 'ema5'] 这三个指标。例如,如果你想只显示 EMA10 和 RSI,可以运行命令:freqtrade plot-dataframe --indicators1 ema10 rsi。这些指标将叠加在价格K线图上,便于观察其与价格走势的交叉或背离关系。

使用 --indicators2 参数可以定义显示在图表第三行的辅助技术指标,这些通常用于显示震荡指标或趋势确认工具,如 MACD、RSI 或 Stochastic。默认值为 ['macd', 'macdsignal']。例如,如果你想绘制快速线(fastk)和慢速线(fastd),可以运行:freqtrade plot-dataframe --indicators2 fastd fastk。这些指标将显示在独立的子图中,避免与价格图层混淆,方便你分析指标的超买超卖状态或信号交叉点。

使用 -i 或 --timeframe 参数可以指定用于绘制图表的数据时间框架。支持的时间框架包括 1m、5m、15m、30m、1h、4h、1d 等。例如,若你希望基于小时线(1h)绘制策略指标,应运行:freqtrade plot-dataframe -i 1h。该参数必须与你本地存储的历史数据时间框架匹配,否则会报错。选择合适的时间框架有助于从不同视角观察策略表现,比如日线用于趋势判断,分钟线用于精细入场点分析。

通过 --timerange 参数,你可以精确控制绘图所使用的数据时间段。支持的格式包括:20230101-(从某日起至今)、-20231231(截至某日)、20230101-20231231(指定区间)或 20231201-20231231(具体日期范围)。例如,要绘制2023年12月的数据,运行:freqtrade plot-dataframe --timerange 20231201-20231231。这在回溯特定市场行情(如牛市启动或暴跌期)时非常有用,能帮助你验证策略在不同市场环境下的适应性。

使用 -s 或 --strategy 参数可以指定要加载的策略类名,例如:freqtrade plot-dataframe -s MyAwesomeStrategy。该策略必须存在于你的策略文件夹中(默认为 user_data/strategies/),并且已正确定义了 plot_config 或在 populate_indicators 方法中添加了指标。若策略位于自定义路径,还需配合 --strategy-path 参数指定路径。不指定策略时,系统会尝试从配置文件中读取默认策略,若未设置则报错。

使用 freqtrade plot-profit 命令可以基于回测结果生成交易利润的可视化图表。该命令会读取交易数据(默认从回测文件加载),并绘制每笔交易的盈亏情况以及累计利润曲线。要运行该命令,你至少需要提供回测数据源和交易对信息。默认情况下,它会从 user_data/backtest_results/ 目录下的 JSON 文件中读取交易记录。如果未指定参数,命令将使用配置文件中定义的默认设置自动加载数据。

你可以使用 -p 或 --pairs 参数来指定一个或多个交易对,以限制利润图只显示这些交易对的交易结果。例如,运行 freqtrade plot-profit -p BTC/USDT ETH/USDT 将仅绘制 BTC/USDT 和 ETH/USDT 的利润曲线。多个交易对之间用空格分隔。如果不指定该参数,命令将默认绘制所有可用交易对的利润数据。

通过使用 --timerange 参数,你可以指定要分析的交易时间范围。该参数支持多种格式,例如:20230101- 表示从2023年1月1日开始到当前,20230101-20231231 表示2023年全年,或 -20230601 表示截止到2023年6月1日的所有数据。例如:freqtrade plot-profit --timerange 20230401-20230630 会仅绘制2023年4月1日至6月30日之间的交易利润。这有助于聚焦特定市场周期的策略表现。

你可以使用 --export-filename(或其别名 --backtest-filename)参数明确指定要使用的回测结果文件路径。此参数必须与 --export 搭配使用,但即使不进行导出,它也能用于读取已存在的回测文件。例如:freqtrade plot-profit --export-filename user_data/backtest_results/my_strategy_backtest.json 将从该文件中加载交易数据并生成利润图。确保文件存在且格式正确,否则会提示文件未找到错误。

使用 -i 或 --timeframe 参数可以指定用于绘制利润图的K线时间框架,例如 1m、5m、30m、1h 或 1d。虽然利润图主要基于交易记录而非K线数据,但此参数会影响某些辅助图表的分辨率(如与K线叠加的信号标记)。例如:freqtrade plot-profit -i 1h 会将图表的时间轴按小时粒度对齐。若未指定,默认使用策略配置中定义的时间框架。

启用 --auto-open 参数后,命令执行完毕后会自动在默认浏览器中打开生成的HTML利润图表。这对于快速查看结果非常方便,尤其是在调试策略或进行多次回测时。例如:freqtrade plot-profit --auto-open 会在图表生成后立即弹出浏览器窗口。如果没有此参数,图表文件会被保存到磁盘(默认为 user_data/plots/ 目录),你需要手动打开文件查看。

Freqtrade 的绘图功能允许用户可视化交易策略的价格走势、技术指标和盈利情况,主要通过 plot-dataframe 和 plot-profit 两个命令实现。这些命令会生成交互式图表,帮助用户分析策略表现。

然而,官方明确指出这些命令已被弃用(deprecated),仅处于维护模式。主要原因有两个:一是它们在处理中等规模数据时性能较差,容易导致浏览器卡顿或崩溃;二是以“生成文件并在浏览器中打开”的方式不够直观,不符合现代用户界面的交互体验。虽然目前尚未移除,但未来可能因重大改动而被彻底删除。因此,官方强烈推荐使用 FreqUI 进行绘图,因为它解决了性能问题,并提供了更流畅、集成度更高的可视化体验。