当前位置:网站首页>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()边栏推荐
- TIPC introduction 1
- C# 文件与文件夹操作
- PCL eigen introduction and simple use
- TIPC 寻址2
- Approximate sum count (approximate
- QT learning diary 8 - resource file addition
- Luogu p1892 [boi2003] Gang (and search for variant anti set)
- Implement custom drawer component in quick application
- JVM garbage collector
- 一招快速实现自定义快应用titlebar
猜你喜欢

Use of vscode tool
![[play with FPGA learning 4 in simple terms ----- talk about state machine design]](/img/e0/95f8b8c5116c57455e54ad12372f12.png)
[play with FPGA learning 4 in simple terms ----- talk about state machine design]

TIPC addressing 2

Flick two open, realized a batch lookup join (with source code)

Special topic of binary tree -- acwing 1589 Building binary search tree

Mongodb learning and sorting (condition operator, $type operator, limit() method, skip() method and sort() method)

Flink two Open, implement Batch Lookup join (attached source)

How does the whole network display IP ownership?

Uncover the secrets of Huawei application market application statistics

二叉树专题--AcWing 18. 重建二叉树(利用前、中序遍历,构建二叉树)
随机推荐
V2x SIM dataset (Shanghai Jiaotong University & New York University)
Thanos Receiver
sqlite 修改列类型
【AI应用】海康威视iVMS-4200软件安装
One trick to quickly realize custom application titlebar
Luogu p5536 [xr-3] core city (greed + tree DP looking for the center of the tree)
【付费推广】常见问题合集,推荐榜单FAQ
Implement custom drawer component in quick application
Internship report skywalking distributed link tracking?
三.芯片启动和时钟系统
TIPC Cluster5
Special topic of binary tree -- acwing 19 The next node of the binary tree (find the successor of the node in the tree)
LVM操作
如何使用IDE自动签名调试鸿蒙应用
PCL projection point cloud
Special topic of binary tree -- acwing 18 Rebuild the binary tree (construct the binary tree by traversing the front and middle order)
[paid promotion] collection of frequently asked questions, recommended list FAQ
I STM32 development environment, keil5/mdk5.14 installation tutorial (with download link)
Special topic of binary tree -- Logu p1229 traversal problem (the number of traversals in the middle order is calculated when the pre and post order traversals of the multiplication principle are know
【深入浅出玩转FPGA学习5-----复位设计】