每收到一个Tick数据,调用bg_3m.update_tick(tick),将Tick推送到BarGenerator,按时间窗口(30秒)生成1分钟K线
每收到一个1分钟Bar数据,调用bg_3m.update_bar(bar),继续聚合生成3分钟K线
BarGenerator
输入:原始Tick或1分钟Bar数据
输出:生成3分钟K线(通过on_3m_bar回调)
原理:根据时间窗口30秒和Interval.MINUTE配置,将数据按时间对齐生成完整K线
使用ArrayManager存储最近100根3分钟K线
基于历史K线数据计算快速均线和慢速均线
on_3m_bar
将新生成的3分钟K线添加到ArrayManager
通过self.am_3m.inited判断是否已积累足够数据100根K线
ArrayManager
一个固定长度的K线数组size=100
sma()计算简单移动平均,array=True返回整个序列

策略通过事件回调on_tick、on_bar接收市场数据
利用ArrayManager高效计算技术指标生成交易信号
根据信号调用交易指令方法,结合持仓管理实现多空逻辑
通过put_event()和write_log()实现策略状态的实时监控与记录
extract_vt_symbol(vt_symbol: str)
将 vt_symbol(如 "BTC.USDT")拆分为交易对符号和交易所
generate_vt_symbol(symbol: str, exchange: Exchange)
将符号和交易所组合成 vt_symbol
get_file_path(filename: str)
获取临时文件夹中指定文件的完整路径。
load_json(filename: str) 和 save_json(filename: str, data: dict)
加载或保存JSON文件到临时目录
round_to(value: float, target: float)
将数值按目标精度四舍五入
BarGenerator
update_tick(tick: TickData)根据Tick数据生成1分钟K线
update_bar(bar: BarData)根据1分钟K线生成更高周期K线
ArrayManager
update_bar(bar: BarData)更新最新的Bar数据到数组
sma(n: int)计算简单移动平均线