蜡烛图

蜡烛图功能允许用户从某些支持的交易所获取实时市场数据,并以 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方法以显示 K 线数据:
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。
