Skip to article frontmatterSkip to article content
Freqtrade 交易对象指南

交易对象文档

交易对象属性和方法概述

交易对象

Trade

freqtrade 进入的仓位存储在 Trade 对象中 - 该对象会被持久化到数据库。 这是 freqtrade 的核心概念 - 你会在文档的许多部分遇到它,这些部分很可能会指向这个位置。

它将在许多策略回调中传递给策略。传递给策略的对象不能直接修改。间接修改可能基于回调结果发生。

Trade - 可用属性

以下属性可用于每个单独的交易 - 并且可以使用 trade.<property> 访问(例如 trade.pair)。

属性数据类型描述
pairstring交易对。
is_openboolean交易当前是否开放,或已结束。
open_ratefloat进入交易时的价格(在交易调整的情况下为平均入场价格)。
close_ratefloat平仓价格 - 仅在 is_open = False 时设置。
stake_amountfloat以 Stake(或 Quote)货币计量的金额。
amountfloat当前拥有的资产/基础货币数量。在初始订单成交前将为 0.0。
open_datedatetime交易开始的时间戳 请使用 open_date_utc 代替
open_date_utcdatetime交易开始的时间戳 - UTC 时间。
close_datedatetime交易结束的时间戳 请使用 close_date_utc 代替
close_date_utcdatetime交易结束的时间戳 - UTC 时间。
close_profitfloat交易结束时的相对利润。0.01 == 1%
close_profit_absfloat交易结束时的绝对利润(以 stake 货币计)。
realized_profitfloat交易仍然开放时已实现的绝对利润(以 stake 货币计)。
leveragefloat此交易使用的杠杆 - 在现货市场中默认为 1.0。
enter_tagstring通过 dataframe 中的 enter_tag 列提供的入场标签。
is_shortboolean做空交易为 True,否则为 False。
ordersOrder[]附加到此交易的订单对象列表(包括已成交和已取消的订单)。
date_last_filled_utcdatetime最后一个成交订单的时间。
entry_side“buy” / “sell”交易进入的订单方向。
exit_side“buy” / “sell”将导致交易退出/仓位减少的订单方向。
trade_direction“long” / “short”文本形式的交易方向 - 做多或做空。
nr_of_successful_entriesint成功(已成交)的入场订单数量。
nr_of_successful_exitsint成功(已成交)的出场订单数量。
has_open_ordersboolean交易是否有未完成订单(不包括止损订单)。

类方法

以下是类方法 - 它们返回通用信息,通常会导致对数据库的显式查询。 它们可以作为 Trade.<method> 使用 - 例如 open_trades = Trade.get_open_trade_count()

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() 将返回数据库中的所有交易列表。

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 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 对象代表交易所上的订单(或模拟模式下的模拟订单)。 Order 对象将始终与其对应的 Trade 绑定,并且只在交易的上下文中才有意义。

Order - 可用属性

Order 对象通常附加到交易上。 这里的大多数属性可能为 None,因为它们依赖于交易所的响应。

属性数据类型描述
tradeTrade此订单附加到的交易对象
ft_pairstring此订单的交易对
ft_is_openboolean订单是否仍然开放?
order_typestring交易所定义的订单类型 - 通常是市价单、限价单或止损单
statusstringccxt 的订单结构 定义的状态。通常是开放、关闭、过期、取消或拒绝
sidestring买入或卖出
pricefloat订单放置的价格
averagefloat订单成交的平均价格
amountfloat基础货币的数量
filledfloat已成交数量(以基础货币计)(请使用 safe_filled 代替)
safe_filledfloat已成交数量(以基础货币计)- 保证不为 None
remainingfloat剩余数量(请使用 safe_remaining 代替)
safe_remainingfloat剩余数量 - 从交易所获取或计算得出。
costfloat订单成本 - 通常是 average * filled(在期货中取决于交易所,可能包含带或不带杠杆的成本,可能以合约计。
stake_amountfloat用于此订单的 stake 金额。2023.7 版本添加。
stake_amount_filledfloat用于此订单的已成交 stake 金额。2024.11 版本添加。
order_datedatetime订单创建日期 请使用 order_date_utc 代替
order_date_utcdatetime订单创建日期(UTC 时间)
order_fill_datedatetime订单成交日期 请使用 order_fill_utc 代替
order_fill_date_utcdatetime订单成交日期