跳至内容

交易对象

交易

Freqtrade 建立的持仓会被存储在 Trade 对象中,并持久化到数据库。这是 freqtrade 的核心概念之一,在文档的许多部分都会提到,通常会引导你来到此处。

该对象会在多个 策略回调函数 中传递给策略。传递给策略的对象不能直接修改,但可能会根据回调结果产生间接修改。

交易 - 可用属性

以下属性/特性可用于每个单独的交易,可通过 trade.<property> 的形式访问(例如 trade.pair)。

属性 数据类型 描述
交易对 字符串 此交易的交易对。
safe_base_currency 字符串 基础货币兼容层。
safe_quote_currency 字符串 报价货币兼容层。
is_open 布尔值 交易当前是否处于开放状态,或已经结束。
exchange 字符串 执行此交易的交易所。
open_rate 浮点数 进入该交易时的价格(若发生交易调整,则为平均入场价)。
open_rate_requested 浮点数 交易开仓时请求的汇率。
open_trade_value 浮点数 包含手续费的未平仓交易价值。
close_rate 浮点数 平仓价格——仅当 is_open = False 时设置。
close_rate_requested 浮点数 请求的平仓汇率。
safe_close_rate 浮点数 平仓汇率或close_rate_requested,如果两者都不可用则为 0.0。仅在交易平仓后有意义。
stake_amount 浮点数 以投注(或报价)货币计的金额。
max_stake_amount 浮点数 此交易中使用的最大保证金金额(所有已成交入场订单的总和)。
amount 浮点数 当前持有的资产/基础货币数量。初始订单成交前将为 0.0。
amount_requested 浮点数 作为第一个入场订单的一部分,为此交易最初请求的数量。
开仓时间 日期时间 交易开启的时间戳 请改用 open_date_utc
open_date_utc 日期时间 交易开启的时间戳(UTC 时间)。
close_date 日期时间 交易关闭的时间戳 请改用 close_date_utc
close_date_utc 日期时间 交易关闭的时间戳(UTC 时间)。
close_profit 浮点数 交易关闭时的相对收益。0.01 等于 1%
close_profit_abs 浮点数 交易关闭时的绝对收益(以投注货币计)。
realized_profit 浮点数 交易仍处于开放状态时已实现的绝对收益(以投注货币计)。
leverage 浮点数 此交易使用的杠杆——现货市场默认为 1.0。
enter_tag 字符串 通过数据框中 enter_tag 列在入场时提供的标签。
离场原因 字符串 交易平仓的原因。
exit_order_status 字符串 平仓订单的状态。
策略 字符串 用于此交易的策略名称。
时间周期 int 用于此交易的时间框架。
is_short 布尔值 若是做空交易则为 True,否则为 False。
orders Order[] 与此交易关联的订单对象列表(包括已成交和已取消的订单)。
date_last_filled_utc 日期时间 最后一次订单成交的时间。
date_entry_fill_utc 日期时间 第一个已成交入场订单的日期。
entry_side "buy" / "sell" 进入交易时的订单方向。
exit_side "buy" / "sell" 将导致交易退出/仓位减少的订单方向。
trade_direction "long" / "short" 交易方向的文字描述——多头或空头。
max_rate 浮点数 此交易期间达到的最高价格。并非 100%准确。
min_rate 浮点数 此交易期间达到的最低价格。并非 100%准确。
nr_of_successful_entries int 成功(已成交)的建仓订单数量。
nr_of_successful_exits int 成功(已成交)的平仓订单数量。
has_open_position 布尔值 如果此交易存在未平仓头寸(数量>0)则为 True。仅在初始入场订单未成交时为 false。
has_open_orders 布尔值 该交易是否有未成交的挂单(不包括止损单)。
has_open_sl_orders 布尔值 如果此交易存在未成交的止损订单则为 True。
open_orders Order[] 此交易的所有未成交订单(不包括止损订单)。
open_sl_orders Order[] 此交易的所有未成交止损订单。
fully_canceled_entry_order_count int 完全取消的入场订单数量。
canceled_exit_order_count int 取消的出场订单数量。
属性 数据类型 描述
stop_loss 浮点数 止损的绝对值。
stop_loss_pct 浮点数 止损的相对值。
initial_stop_loss 浮点数 初始止损的绝对值。
initial_stop_loss_pct 浮点数 初始止损的相对值。
stoploss_last_update_utc 日期时间 上次交易所止损订单更新的时间戳。
stoploss_or_liquidation 浮点数 返回止损价或清算价中更具限制性的价格,对应止损触发时的价格。

期货/保证金交易属性

属性 数据类型 描述
liquidation_price 浮点数 杠杆交易的清算价格。
interest_rate 浮点数 保证金交易的利率。
funding_fees 浮点数 期货交易的总资金费率。

类方法

以下是类方法 —— 它们返回通用信息,通常会触发对数据库的显式查询。可以使用 Trade.<方法名> 的形式调用,例如: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

获取机器人至今为止的总盈利。该方法会汇总所有已平仓交易的 close_profit_abs 值。

from freqtrade.persistence import Trade

# ...
profit = Trade.get_total_closed_profit()

total_open_trades_stakes

获取当前所有交易中投入的总 stake_amount(投注金额)。

from freqtrade.persistence import Trade

# ...
profit = Trade.total_open_trades_stakes()

回测/超参数优化中不支持的类方法

以下类方法在回测/超参数优化模式下不受支持。

get_overall_performance

获取整体表现情况 —— 类似于 /performance 电报命令。

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}

get_trading_volume

基于订单获取总交易量。

from freqtrade.persistence import Trade

# ...
volume = Trade.get_trading_volume()

订单对象

Order 对象表示交易所上的一个订单(或在模拟模式下的虚拟订单)。每个 Order 对象始终与其对应的 Trade 相关联,仅在交易上下文中才有意义。

订单 - 可用属性

一个 Order 对象通常与一笔交易相关联。此处大多数属性可能为 None,因为它们取决于交易所的响应。

属性 数据类型 描述
交易 交易 此订单所关联的 Trade 对象
ft_pair 字符串 此订单对应的交易对
ft_is_open 布尔值 订单是否仍然开放?
ft_order_side 字符串 订单方向('buy'、'sell' 或 'stoploss')
ft_cancel_reason 字符串 订单被取消的原因
ft_order_tag 字符串 自定义订单标签
order_id 字符串 交易所订单 ID
order_type 字符串 交易所定义的订单类型——通常为市价单、限价单或止损单
status 字符串 根据ccxt 订单结构定义的状态。通常为 open(开放)、closed(已关闭)、expired(已过期)、canceled(已取消)或 rejected(被拒绝)
side 字符串 买入或卖出
价格 浮点数 下单时的价格
average 浮点数 订单成交的平均价格
amount 浮点数 以基础货币计的金额
filled 浮点数 已成交数量(以基础货币计)(建议使用 safe_filled
safe_filled 浮点数 已成交数量(以基础货币计)——保证不为 None
safe_amount 浮点数 数量 - 如果为 None 则回退到 ft_amount
safe_price 浮点数 价格 - 依次回退到平均价、价格、止损价、ft_price
safe_placement_price 浮点数 订单下单时的价格
remaining 浮点数 剩余数量(建议使用 safe_remaining
safe_remaining 浮点数 剩余数量——直接来自交易所或通过计算得出。
safe_cost 浮点数 订单成本 - 保证不为 None
safe_fee_base 浮点数 基础货币手续费 - 保证不为 None
safe_amount_after_fee 浮点数 扣除手续费后的数量
cost 浮点数 订单成本 - 通常为平均价 * 成交数量(交易所对期货交易的依赖,可能包含带或不带杠杆的成本,且可能以合约数表示。
stop_price 浮点数 止损订单的止损价格。非止损订单为空。
stake_amount 浮点数 此订单使用的质押金额。
stake_amount_filled 浮点数 此订单使用的已成交质押金额。
order_date 日期时间 订单创建日期 请使用 order_date_utc 代替
order_date_utc 日期时间 订单创建日期(UTC 时间)
order_filled_date 日期时间 订单成交日期 请改用 order_filled_utc
order_filled_utc 日期时间 订单成交日期
order_update_date 日期时间 最后订单更新日期