当前位置:网站首页>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()边栏推荐
- Primary key policy problem
- How to implement tabbar title bar with list component
- 2022 love analysis · panoramic report of digital manufacturers of state-owned enterprises
- 【深入浅出玩转FPGA学习2----设计技巧(基本语法)】
- Calculate the sum of sequences
- [quick application] win7 system cannot run and debug projects using Huawei ide
- I STM32 development environment, keil5/mdk5.14 installation tutorial (with download link)
- QT学习日记8——资源文件添加
- C#中索引器
- Oracle 笔记
猜你喜欢

flink二開,實現了個 batch lookup join(附源碼)

JVM之垃圾回收器

One trick to quickly realize custom application titlebar

How to use ide to automatically sign and debug Hongmeng application

QT learning diary 8 - resource file addition

最详细MySql安装教程

Iii. Système de démarrage et d'horloge à puce
![Luogu p5536 [xr-3] core city (greed + tree DP looking for the center of the tree)](/img/dc/2aa55c9b3f23c292820a56ea72fedd.png)
Luogu p5536 [xr-3] core city (greed + tree DP looking for the center of the tree)

三.芯片启动和时钟系统

TIPC Cluster5
随机推荐
Overview of integrated learning
Flick two open, realized a batch lookup join (with source code)
【深入浅出玩转FPGA学习4----漫谈状态机设计】
【付费推广】常见问题合集,推荐榜单FAQ
C# 文件与文件夹操作
Use of vscode tool
Regular and common formulas
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
Use Huawei performance management service to configure the sampling rate on demand
洛谷 P5536 【XR-3】核心城市(贪心 + 树形 dp 寻找树的中心)
JVM之垃圾回收器
JVM garbage collector
PCL extracts a subset from a point cloud
QT学习日记7——QMainWindow
How to transfer event objects and user-defined parameters simultaneously in Huawei express applications
Primary key policy problem
二叉树专题--P1030 [NOIP2001 普及组] 求先序排列
力扣(LeetCode)182. 查找重复的电子邮箱(2022.07.01)
The first white paper on agile practice in Chinese enterprises was released | complete download is attached
最详细MySql安装教程