Skip to content

交易对象

交易

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 日期时间 订单成交日期