蜡烛图
蜡烛图允许用户从某些支持的交易所获取以 OHLCV(开盘价、最高价、最低价、收盘价、成交量)形式组成的实时市场数据滑动窗口。
它结合历史数据和实时数据来生成和维护这个窗口,允许用户利用pandas_ta创建自定义技术指标。
支持的交易所¶
参见蜡烛图数据源查看当前支持的交易所列表。
常见的做法是在去中心化交易所或较小的交易所上执行机器人,同时使用其他交易所的蜡烛图数据。
关键配置参数¶
connector
: 数据源(如binance
或binance_perpetual
)。trading_pair
: 交易对(如BTC-USDT
)。interval
: 蜡烛图之间的时间间隔(如5m
表示 5 分钟)。max_records
: 存储蜡烛图的最大数量。
下载蜡烛图¶
蜡烛图提供了一种简洁的方式来访问历史交易所数据。参见download_candles脚本。
添加技术指标¶
将技术指标整合到蜡烛图数据中,以增强策略洞察力:
def format_status(self) -> str:
# Ensure market connectors are ready
if not self.ready_to_trade:
return "Market connectors are not ready."
lines = []
if self.all_candles_ready:
# Loop through each candle set
for candles in [self.eth_1w_candles, self.eth_1m_candles, self.eth_1h_candles]:
candles_df = candles.candles_df
# Add RSI, BBANDS, and EMA indicators
candles_df.ta.rsi(length=14, append=True)
candles_df.ta.bbands(length=20, std=2, append=True)
candles_df.ta.ema(length=14, offset=None, append=True)
# Format and display candle data
lines.extend([f"Candles: {candles.name} | Interval: {candles.interval}"])
lines.extend([" " + line for line in candles_df.tail().to_string(index=False).split("\n")])
else:
lines.append(" No data collected.")
return "\n".join(lines)
多个蜡烛图¶
对于需要多个蜡烛图时间间隔或交易对的策略,初始化单独的实例:
from hummingbot.data_feed.candles_feed.candles_factory import CandlesFactory, CandlesConfig
class InitializingCandlesExample(ScriptStrategyBase):
# Configure two different sets of candles
candles_config_1 = CandlesConfig(connector="binance", trading_pair="BTC-USDT", interval="3m")
candles_config_2 = CandlesConfig(connector="binance_perpetual", trading_pair="ETH-USDT", interval="1m")
# Initialize candles using the configurations
candles_1 = CandlesFactory.get_candle(candles_config_1)
candles_2 = CandlesFactory.get_candle(candles_config_2)
在status
中显示蜡烛图¶
修改format_status
方法以显示蜡烛图数据:
def format_status(self) -> str:
# Check if trading is ready
if not self.ready_to_trade:
return "Market connectors are not ready."
lines = ["\n############################################ Market Data ############################################\n"]
# Check if the candle data is ready
if self.eth_1h_candles.is_ready:
# Format and display the last few candle records
candles_df = self.eth_1h_candles.candles_df
candles_df["timestamp"] = pd.to_datetime(candles_df["timestamp"], unit="ms").dt.strftime('%Y-%m-%d %H:%M:%S')
display_columns = ["timestamp", "open", "high", "low", "close"]
formatted_df = candles_df[display_columns].tail()
lines.append("One-hour Candles for ETH-USDT:")
lines.append(formatted_df.to_string(index=False))
else:
lines.append(" One-hour candle data is not ready.")
return "\n".join(lines)
定期记录蜡烛图¶
在on_tick
方法中记录蜡烛图数据:
其他关键方法和属性¶
start
和stop
方法:控制蜡烛图数据流的启动和终止。is_ready
属性:检查蜡烛图数据是否完整并已准备好使用。candles_df
属性:访问包含最新蜡烛图数据的 DataFrame。