绘图¶
本页面介绍如何绘制价格、指标和利润。
安装 / 设置¶
绘图模块使用Plotly库。您可以通过运行以下命令来安装/升级:
pip install -U -r requirements-plot.txt
绘制价格和指标¶
freqtrade plot-dataframe
子命令显示一个包含三个子图的交互式图表:
- 使用价格(sma/ema)后续指标的蜡烛图主图
- 成交量条
--indicators2
指定的其他指标
可能的参数:
用法:freqtrade plot-dataframe [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [-s NAME]
[--strategy-path PATH] [-p PAIRS [PAIRS ...]]
[--indicators1 INDICATORS1 [INDICATORS1 ...]]
[--indicators2 INDICATORS2 [INDICATORS2 ...]]
[--plot-limit INT] [--db-url PATH]
[--trade-source {DB,file}] [--export EXPORT]
[--export-filename PATH]
[--timerange TIMERANGE] [-i TIMEFRAME]
[--no-trades]
可选参数:
-h, --help 显示帮助信息并退出
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
限制命令只针对这些交易对。交易对之间用空格分隔。
--indicators1 INDICATORS1 [INDICATORS1 ...]
在图表的第一行中设置策略中要用的指标。空格分隔的列表。例如:`ema3
ema5`。默认值:`['sma', 'ema3', 'ema5']`。
--indicators2 INDICATORS2 [INDICATORS2 ...]
在图表的第三行中设置策略中要用的指标。空格分隔的列表。例如:`fastd fastk`。
默认值:`['macd', 'macdsignal']`。
--plot-limit INT 指定用于绘图的数据点的数量。注意:过高的值会导致生成巨大的文件。默认值:750。
--db-url PATH 覆盖交易数据库的URL,这对于自定义部署非常有用(默认值:`sqlite:///tradesv3.sqlite`
对于实盘交易模式,`sqlite:///tradesv3.dryrun.sqlite`对于模拟交易)。
--trade-source {DB,file}
指定交易来源(可以是数据库或文件(回测文件))。默认值:file
--export EXPORT 导出回测结果,参数可以是:trades。例如:`--export=trades`
--export-filename PATH
将回测结果保存到具有此文件名的文件中。需要同时设置`--export`。例如:
`--export-filename=user_data/backtest_results/backtest
_today.json`
--timerange TIMERANGE
指定要使用的数据时间范围。
-i TIMEFRAME, --timeframe TIMEFRAME
指定时间帧(`1m`,`5m`,`30m`,`1h`,`1d`)。
--no-trades 跳过使用回测文件和数据库中的交易。
常用参数:
-v, --verbose 详细模式(-vv更详细,-vvv获取所有消息)。
--logfile FILE 记录到指定的文件中。特殊值有:'syslog','journald'。详见文档。
-V, --version 显示程序的版本号并退出
-c PATH, --config PATH
指定配置文件(默认为`userdir/config.json`或`config.json`,哪个存在就用哪个)。
可以使用多个--config选项。可以设置为“-”来从标准输入读取配置。
-d PATH, --datadir PATH
包含历史回测数据的目录路径。
--userdir PATH 用户数据目录路径。
策略参数:
-s NAME, --strategy NAME
指定将由机器人使用的策略类名称。
--strategy-path PATH 指定其他策略查找路径。
示例:
freqtrade plot-dataframe -p BTC/ETH --strategy AwesomeStrategy
可以使用-p/--pairs
参数指定要绘制的交易对。
注意
freqtrade plot-dataframe
子命令会为每个交易对生成一个图表文件。
指定自定义指标。
使用--indicators1
用于主图,使用--indicators2
用于下方的子图(如果值的范围与价格不同)
freqtrade plot-dataframe --strategy AwesomeStrategy -p BTC/ETH --indicators1 sma ema --indicators2 macd
更多的用法示例¶
要绘制多个交易对,请用空格分隔它们:
freqtrade plot-dataframe --strategy AwesomeStrategy -p BTC/ETH XRP/ETH
要绘制一个时间范围(以进行缩放):
freqtrade plot-dataframe --strategy AwesomeStrategy -p BTC/ETH --timerange=20180801-20180805
要绘制存储在数据库中的交易,请在--trade-source DB
中使用 --db-url
:
freqtrade plot-dataframe --strategy AwesomeStrategy --db-url sqlite:///tradesv3.dry_run.sqlite -p BTC/ETH --trade-source DB
要绘制来自回测结果的交易,请使用 --export-filename <filename>
:
freqtrade plot-dataframe --strategy AwesomeStrategy --export-filename user_data/backtest_results/backtest-result.json -p BTC/ETH
绘制数据框基础图¶
plot-dataframe
子命令需要回测数据、一个策略以及一个包含与该策略相对应的交易的回测结果文件或数据库。
生成的图将包含以下元素:
- 绿色三角形:策略的买入信号。(注意:并非每个买入信号都会生成一笔交易,请与青色圆圈进行比较。)
- 红色三角形:策略的卖出信号。(同样,不是每个卖出信号都会终止一笔交易,请与红色和绿色方块进行比较。)
- 青色圆圈:交易的入场点。
- 红色方块:亏损或零利润交易的出场点。
- 绿色方块:盈利交易的出场点。
- 指标值对应于蜡烛图缩放比例(例如SMA/EMA),如
--indicators1
中指定的。 - 成交量(主图表底部的柱状图)。
- 不同比例下的指标值(例如MACD、RSI)在成交量柱状图下方,如
--indicators2
中指定的。
布林带
如果存在 bb_lowerband
和 bb_upperband
列,则布林带将自动添加到图表中,并以浅蓝色区域绘制,跨越从下轨到上轨。
高级图表配置¶
可以在策略的 plot_config
参数中指定高级图表配置。
使用 plot_config
时的其他功能包括:
- 指定每个指标的颜色
- 指定额外的子图
- 指定填充指标之间区域的指标对以下是指定指标固定颜色的示例绘图配置。否则,每次连续绘图可能会产生不同的颜色方案,导致比较困难。 它还允许多个子图同时显示MACD和RSI。
可以使用type
键来配置绘图类型。可能的类型有:
- 与
plotly.graph_objects.Scatter
类对应的scatter
(默认)。 - 与
plotly.graph_objects.Bar
类对应的bar
。
可以在plotly
字典中指定plotly.graph_objects.*
构造函数的额外参数。
以下是带有内联注释解释过程的示例配置:
@property
def plot_config(self):
"""
有很多方法可以构建返回字典。唯一重要的是返回值。
示例:
plot_config = {'main_plot': {}, 'subplots': {}}
"""
plot_config = {}
plot_config['main_plot'] = {
# 主绘图指标的配置。假设需要指定2个参数,即emashort和emalong。
f'ema_{self.emashort.value}': {'color': 'red'},
f'ema_{self.emalong.value}': {'color': '#CCCCCC'},
# 省略颜色时,将随机选择一种颜色。
'sar': {},
# 填充senkou_a和senkou_b之间的区域
'senkou_a': {
'color': 'green', #可选
'fill_to': 'senkou_b',
'fill_label': '云图', #可选
'fill_color': 'rgba(255,76,46,0.2)', #可选
},
# 也绘制senkou_b。不仅限于其区域。
'senkou_b': {}
}
plot_config['subplots'] = {
# 创建MACD子图
"MACD": {
'macd': {'color': 'blue', 'fill_to': 'macdhist'},
'macdsignal': {'color': 'orange'},
'macdhist': {'type': 'bar', 'plotly': {'opacity': 0.9}}
},
# 额外的RSI子图
"RSI": {
'rsi': {'color': 'red'}
}
}
return plot_config
作为属性(之前的方法)
也可以将plot_config分配为属性(以前是默认方式)。 这样做的缺点是策略参数不可用,从而阻止某些配置的工作。
plot_config = {
'main_plot': {
# 主绘图指标的配置。
# 指定`ema10`为红色,`ema50`为灰色阴影
'ema10': {'color': 'red'},
'ema50': {'color': '#CCCCCC'},
# 省略颜色时,将随机选择一种颜色。
'sar': {},
# 填充senkou_a和senkou_b之间的区域
'senkou_a': {
'color': 'green', #可选
'fill_to': 'senkou_b',
'fill_label': '云图', #可选
'fill_color': 'rgba(255,76,46,0.2)', #可选
},
# 也绘制senkou_b。不仅限于其区域。
'senkou_b': {}
},
'subplots': {
# 创建MACD子图
"MACD": {
'macd': {'color': 'blue', 'fill_to': 'macdhist'},
'macdsignal': {'color': 'orange'},
'macdhist': {'type': 'bar', 'plotly': {'opacity': 0.9}}
},
# 额外的RSI子图
"RSI": {
'rsi': {'color': 'red'}
}
}
}
注意
上述配置假设ema10
、ema50
、senkou_a
、senkou_b
、macd
、macdsignal
、macdhist
和rsi
是策略创建的DataFrame中的列。
警告
plotly
参数仅适用于plotly库,并且在freq-ui中不起作用。
交易位置调整
如果使用position_adjustment_enable
/ adjust_trade_position()
,则交易的初始买入价格会在多个订单上平均,
交易的起始价格很可能出现在蜡烛范围之外。
绘制利润¶
plot-profit
子命令显示一个交互式图表,包含三个图表:
- 所有货币对的平均收盘价。
- 回测获得的利润总结。 请注意,这不是真实的利润,而更多是一个估计值。
- 每个单独货币对的利润。
- 交易并发性。
- 低谷期(回撤期)。
第一个图表可以帮助您了解整体市场的进展情况。
第二个图表将显示您的算法是否有效。 也许您想要一个稳定地获得小利润的算法,或者一个作用较少但产生巨大波动的算法。 该图表还将突出显示最大回撤期的开始(和结束)。第三个图表对于发现异常值非常有用,可以显示导致利润突增的一对事件。
第四个图表可以帮助您分析交易并行性,显示max_open_trades被最大化的频率。
freqtrade plot-profit
子命令的可能选项:
用法: freqtrade plot-profit [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [-s NAME]
[--strategy-path PATH] [-p PAIRS [PAIRS ...]]
[--timerange TIMERANGE] [--export EXPORT]
[--export-filename PATH] [--db-url PATH]
[--trade-source {DB,file}] [-i TIMEFRAME]
可选参数:
-h, --help 显示此帮助信息并退出
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
限制命令在这些交易对中进行。交易对以空格分隔。
--timerange TIMERANGE
指定要使用的数据时间范围。
--export EXPORT 导出回测结果,参数为:trades。示例:`--export=trades`
--export-filename PATH, --backtest-filename PATH
使用此文件名中的回测结果。需要同时设置`--export`。示例:`--export-filename=user_data/backtest_results/backtest_today.json`
--db-url PATH 覆盖交易数据库的URL,在自定义部署中非常有用(默认情况下,Live Run模式下使用`sqlite:///tradesv3.sqlite`,Dry Run模式下使用`sqlite:///tradesv3.dryrun.sqlite`)。
--trade-source {DB,file}
指定交易源(可以是DB或文件(回测文件))。默认值:file
-i TIMEFRAME, --timeframe TIMEFRAME
指定时间框架(`1m`,`5m`,`30m`,`1h`,`1d`)。
--auto-open 自动打开生成的图表。
常用参数:
-v, --verbose 详细模式(-vv获取更多信息,-vvv获取全部消息)。
--logfile FILE 记录到指定的文件。特殊值有:'syslog','journald'。请参阅文档获取更多详细信息。
-V, --version 显示程序的版本号并退出
-c PATH, --config PATH
指定配置文件(默认值:`userdir/config.json`,如果存在则使用`config.json`)。可以使用多个--config选项。可以将其设置为`-`以从stdin读取配置。
-d PATH, --datadir PATH
包含历史回测数据的目录的路径。
--userdir PATH, --user-data-dir PATH
用户数据目录的路径。
策略参数:
-s NAME, --strategy NAME
指定机器人使用的策略类名。
--strategy-path PATH 指定额外的策略查找路径。
-p/--pairs
参数可以用于限制考虑此计算的交易对。
示例:使用自定义的回测导出文件
freqtrade plot-profit -p LTC/BTC --export-filename user_data/backtest_results/backtest-result.json
使用自定义的数据库
freqtrade plot-profit -p LTC/BTC --db-url sqlite:///tradesv3.sqlite --trade-source DB
freqtrade --datadir user_data/data/binance_save/ plot-profit -p LTC/BTC