当前位置:网站首页>Tick Data and Resampling
Tick Data and Resampling
2022-07-02 07:44:00 【lk5423968】
Resample Tick Data - Backtrader
backtrader could already do resampling up from minute data. Accepting tick data was not a problem, by simply setting the 4 usual fields (open, high, low, close) to the tick value.
But passing the tick data to be resampled produced the same data again. As or release 1.1.11.88 this is no longer so. Now
TimeFrame (backtrader.TimeFrame) has been extended to contain constants and names for “Ticks”, “MicroSeconds” and “Seconds”
Resampling can manage the 3 aforementioned timeframes and sample them up.
Note
Because tick data is the lowest possible timeframe it can actually be “compressed” (n bars to 1 bar) but not be sampled up from a smallest timeframe.
The new release contains a small tickdata.csv
sample added to the sources data a new sample script resample-tickdata.py
to play with it.
Note
Updated the script to use the new Cerebro.resampledata
method which avoids the need to manually instantiate a backtrader.DataResampler
The default execution doesn’t touch the data:
$ ./resample-tickdata.py
Producing this chart:
Compressing 3 ticks to 1:
$ ./resample-tickdata.py --timeframe ticks --compression 3
Producing this chart:
After the compression we no longer have single “ticks” but “bars”.
Now compressing to seconds and 5 bars compression:
$ ./resample-tickdata.py --timeframe seconds --compression 5
With a new chart:
And finally to minutes. The sample data contains tick data from 4 different minutes (the last tick in the file is the only tick for the 4th minute):
$ ./resample-tickdata.py --timeframe minutes
With a 4 bars (at the top it can be seen the final price was 3069). The 4th bar is a single point given for this minute a single tick is present in the file.
The script usage:
$ ./resample-tickdata.py --help usage: resample-tickdata.py [-h] [--dataname DATANAME] [--timeframe {ticks,microseconds,seconds,minutes,daily,weekly,monthly}] [--compression COMPRESSION] Resampling script down to tick data optional arguments: -h, --help show this help message and exit --dataname DATANAME File Data to Load --timeframe {ticks,microseconds,seconds,minutes,daily,weekly,monthly} Timeframe to resample to --compression COMPRESSION Compress n bars into 1
And the code.
from __future__ import (absolute_import, division, print_function, unicode_literals) import argparse import backtrader as bt import backtrader.feeds as btfeeds def runstrat(): args = parse_args() # Create a cerebro entity cerebro = bt.Cerebro(stdstats=False) # Add a strategy cerebro.addstrategy(bt.Strategy) # Load the Data datapath = args.dataname or '../../datas/ticksample.csv' data = btfeeds.GenericCSVData( dataname=datapath, dtformat='%Y-%m-%dT%H:%M:%S.%f', timeframe=bt.TimeFrame.Ticks, ) # Handy dictionary for the argument timeframe conversion tframes = dict( ticks=bt.TimeFrame.Ticks, microseconds=bt.TimeFrame.MicroSeconds, seconds=bt.TimeFrame.Seconds, minutes=bt.TimeFrame.Minutes, daily=bt.TimeFrame.Days, weekly=bt.TimeFrame.Weeks, monthly=bt.TimeFrame.Months) # Resample the data data = cerebro.resampledata(data, timeframe=tframes[args.timeframe], compression=args.compression) # add a writer cerebro.addwriter(bt.WriterFile, csv=True) # Run over everything cerebro.run() # Plot the result cerebro.plot(style='bar') def parse_args(): parser = argparse.ArgumentParser( description='Resampling script down to tick data') parser.add_argument('--dataname', default='', required=False, help='File Data to Load') parser.add_argument('--timeframe', default='ticks', required=False, choices=['ticks', 'microseconds', 'seconds', 'minutes', 'daily', 'weekly', 'monthly'], help='Timeframe to resample to') parser.add_argument('--compression', default=1, required=False, type=int, help=('Compress n bars into 1')) return parser.parse_args() if __name__ == '__main__': runstrat()
边栏推荐
- 二叉树专题--AcWing 3540. 二叉搜索树建树(实用板子 构建二叉搜索树 并输出前、中、后序遍历)
- [AGC] how to solve the problem that the local display of event analysis data is inconsistent with that in AGC panel?
- Special topic of binary tree -- acwing 1497 Traversal of the tree (use post and mid order traversal to build a binary tree)
- PHP tea sales and shopping online store
- V2x SIM dataset (Shanghai Jiaotong University & New York University)
- Openmldb meetup No.4 meeting minutes
- 全网显示 IP 归属地,是怎么实现的?
- 首份中国企业敏捷实践白皮书发布| 附完整下载
- Indexer in C #
- Uncover the secrets of Huawei application market application statistics
猜你喜欢
TIPC addressing 2
Nodejs+express+mysql simple blog building
三.芯片启动和时钟系统
Hdu1234 door opener and door closer (water question)
[play with FPGA learning 4 in simple terms ----- talk about state machine design]
JVM之垃圾回收器
Overview of integrated learning
V2x SIM dataset (Shanghai Jiaotong University & New York University)
PHP tea sales and shopping online store
2022-06-17
随机推荐
金山云——2023届暑期实习
PHP tea sales and shopping online store
Overview of integrated learning
二叉树专题--【深基16.例7】普通二叉树(简化版)(multiset 求前驱 后继 哨兵法)
[quick application] there are many words in the text component. How to solve the problem that the div style next to it will be stretched
P1055 [NOIP2008 普及组] ISBN 号码
sql left join 主表限制条件写在on后面和写在where后面的区别
【快应用】Win7系统使用华为IDE无法运行和调试项目
函数式接口和方法引用
Luogu p5536 [xr-3] core city (greed + tree DP looking for the center of the tree)
华为联机对战服务玩家掉线重连案例总结
Special topic of binary tree -- acwing 18 Rebuild the binary tree (construct the binary tree by traversing the front and middle order)
flink二開,實現了個 batch lookup join(附源碼)
One trick to quickly realize custom application titlebar
III Chip startup and clock system
学习open62541 --- [66] UA_String的生成方法
Luogu p4281 [ahoi2008] emergency gathering / gathering (tree doubling LCA)
二叉树专题--洛谷 P3884 [JLOI2009]二叉树问题(dfs求二叉树深度 bfs求二叉树宽度 dijkstra求最短路)
洛谷 P1892 [BOI2003]团伙(并查集变种 反集)
MongoDB 学习整理(条件操作符,$type 操作符,limit()方法,skip() 方法 和 sort() 方法)