当前位置:网站首页>Tick Data and Resampling
Tick Data and Resampling
2022-07-02 11:12: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()
边栏推荐
猜你喜欢
flink二開,實現了個 batch lookup join(附源碼)
[AI application] Hikvision ivms-4200 software installation
二叉树专题--AcWing 3384. 二叉树遍历(已知先序遍历 边建树 边输出中序遍历)
华为游戏初始化init失败,返回错误码907135000
Special topic of binary tree -- acwing 3540 Binary search tree building (use the board to build a binary search tree and output the pre -, middle -, and post sequence traversal)
二叉树专题--洛谷 P3884 [JLOI2009]二叉树问题(dfs求二叉树深度 bfs求二叉树宽度 dijkstra求最短路)
OpenMLDB Meetup No.4 会议纪要
二叉树专题--AcWing 1497. 树的遍历(利用后、中序遍历,构建二叉树)
TIPC messaging3
二叉树专题--AcWing 1589. 构建二叉搜索树
随机推荐
Verilog 和VHDL有符号数和无符号数相关运算
JSP webshell free -- the basis of JSP
Nodejs+express+mysql simple blog building
使用华为性能管理服务,按需配置采样率
Huawei game failed to initialize init with error code 907135000
Luogu p5536 [xr-3] core city (greed + tree DP looking for the center of the tree)
Regular and common formulas
华为AppLinking中统一链接的创建和使用
JVM之垃圾回收器
Hdu1228 a + B (map mapping)
二.Stm32f407芯片GPIO编程,寄存器操作,库函数操作和位段操作
【深入浅出玩转FPGA学习3-----基本语法】
TIPC Service and Topology Tracking4
TIPC addressing 2
How to implement tabbar title bar with list component
[ark UI] implementation of the startup page of harmonios ETS
Primary key policy problem
二叉树专题--AcWing 47. 二叉树中和为某一值的路径(前序遍历)
MTK full dump抓取
How to use ide to automatically sign and debug Hongmeng application