交易对象¶
交易¶
Trade
对象是 freqtrade 所进入的一个位置,它会被持久化到数据库中。它是 freqtrade 的核心概念,你会在文档的很多部分中遇到它,它们很可能会指向这个位置。
它会在许多 策略回调函数 中传递给策略。传递给策略的对象不能直接修改。间接的修改可能会根据回调结果而发生。
交易 - 可用属性¶
以下属性/字段适用于每个独立的交易,并且可以通过 trade.<property>
(例如 trade.pair
) 使用。
属性 | 数据类型 | 描述 |
---|---|---|
pair |
string | 该交易对 |
is_open |
boolean | 交易是否当前开放,或者已经结束 |
open_rate |
float | 进入该交易的价格(在进行交易调整时为平均进入价格) |
close_rate |
float | 交易结束时的价格 - 当 is_open = False 时才有值 |
stake_amount |
float | 抵押货币(或计价货币)的数量 |
amount |
float | 当前拥有的资产/基础货币的数量 |
open_date |
datetime | 交易开放的时间戳 请使用 open_date_utc 替代 |
open_date_utc |
datetime | 交易开放的时间戳 - 使用协调世界时(UTC) |
close_date |
datetime | 交易关闭的时间戳 请使用 close_date_utc 替代 |
close_date_utc |
datetime | 交易关闭的时间戳 - 使用协调世界时(UTC) |
close_profit |
float | 交易关闭时的相对利润。0.01 == 1% |
close_profit_abs |
float | 交易关闭时的绝对利润(以抵押货币计) |
leverage |
float | 该交易使用的杠杆,默认为币币交易市场的 1.0 |
enter_tag |
string | 通过数据帧中的 enter_tag 列提供的标签 |
is_short |
boolean | 空头交易为 True,否则为 False |
orders |
Order[] | 附加到该交易的订单对象列表(包括已成交和已取消的订单) |
date_last_filled_utc |
datetime | 最后一个已成交订单的时间 |
entry_side |
"buy" / "sell" | 进入交易的订单方向 |
exit_side |
"buy" / "sell" | 导致交易退出/减仓的订单方向 |
trade_direction |
"long" / "short" | 交易方向的文本表示 - "long" 或 "short" |
nr_of_successful_entries |
int | 成功(已成交)的入场订单数 |
nr_of_successful_exits |
int | 成功(已成交)的出场订单数 |
类方法¶
以下是类方法 - 它们返回通用信息,并通常导致针对数据库的显式查询。
可以使用 Trade.<method>
- 例如 open_trades = Trade.get_open_trade_count()
回测/超参优化
大多数方法在回测/超参优化和实时/模拟交易模式下都适用。
在回测中,它仅限于在 策略回调函数 中的使用。
不支持在 populate_*()
方法中使用,否则会导致错误的结果。### get_trades_proxy
当您的策略需要一些有关现有(开放或关闭)交易的信息时,最好使用 Trade.get_trades_proxy()
。
用法:
from freqtrade.persistence import Trade
from datetime import timedelta
# ...
trade_hist = Trade.get_trades_proxy(pair='ETH/USDT', is_open=False, open_date=current_date - timedelta(days=2))
get_trades_proxy()
支持以下关键字参数。所有参数都是可选的 - 在没有参数的情况下调用 get_trades_proxy()
将返回数据库中所有交易的列表。
pair
例如pair='ETH/USDT'
is_open
例如is_open=False
open_date
例如open_date=current_date - timedelta(days=2)
close_date
例如close_date=current_date - timedelta(days=5)
get_open_trade_count¶
获取当前开放交易的数量
from freqtrade.persistence import Trade
# ...
open_trades = Trade.get_open_trade_count()
get_total_closed_profit¶
Retrieve the total profit the bot has generated so far.
Aggregates close_profit_abs
for all closed trades.
from freqtrade.persistence import Trade
# ...
profit = Trade.get_total_closed_profit()
total_open_trades_stakes¶
Retrieve the total stake_amount that's currently in trades.
from freqtrade.persistence import Trade
# ...
profit = Trade.total_open_trades_stakes()
get_overall_performance¶
与/performance
Telegram命令类似,获取总体表现。
from freqtrade.persistence import Trade
# ...
if self.config['runmode'].value in ('live', 'dry_run'):
performance = Trade.get_overall_performance()
示例返回值:ETH/BTC进行了5次交易,总利润为1.5%(比例为0.015)。
{"pair": "ETH/BTC", "profit": 0.015, "count": 5}
订单对象¶
Order
对象表示交易所上的订单(或在模拟运行模式下的模拟订单)。Order
对象始终与其相应的Trade
对象关联,并且只在交易的上下文中才有意义。
Order - 可用属性¶
订单对象通常附加到一个交易上。这里大部分属性可以为None
,因为它们取决于交易所的响应。
属性 | 数据类型 | 描述 |
---|---|---|
trade |
Trade | 与该订单关联的交易对象 |
ft_pair |
字符串 | 此订单所属的交易对 |
ft_is_open |
布尔值 | 订单是否已成交 |
order_type |
字符串 | 交易所定义的订单类型,通常是市价、限价或止损 |
status |
字符串 | 由ccxt定义的状态,通常是打开、关闭、过期或取消 |
side |
字符串 | 买入或卖出 |
price |
浮点数 | 下单价格 |
average |
浮点数 | 订单成交的平均价格 |
amount |
浮点数 | 基准货币的数量 |
filled |
浮点数 | 成交数量(以基准货币计) |
remaining |
浮点数 | 剩余数量 |
cost |
浮点数 | 订单成本,通常是平均价格乘以成交量( 根据交易所期货合约的情况可能包含带或不带杠杆的成本,并且可能以合约为单位) |
stake_amount |
浮点数 | 用于此订单的押注金额。 在2023.7版加入。 |
order_date |
日期时间 | 订单创建日期请改用order_date_utc |
order_date_utc |
日期时间 | 订单创建日期(按UTC时间) |
order_fill_date |
日期时间 | 订单成交日期请改用order_fill_date_utc |
order_fill_date_utc |
日期时间 | 订单成交日期 |