Skip to content

Latest commit

 

History

History
107 lines (92 loc) · 4.27 KB

testdoc.md

File metadata and controls

107 lines (92 loc) · 4.27 KB

Plotly

  • MAKE_SUBPLOT Defines layout (if more then 1x1 or secondary y axis are required)
fig = vbt.make_subplots(rows=2, cols=1, shared_xaxes=True, 
                        specs=[[{"secondary_y": True}], [{"secondary_y": False}]], 
                        vertical_spacing=0.02, subplot_titles=("Row 1 title", "Row 2 title"))

Then the different sr/df generic accessor are added with ADD_TRACE_KWARGS and TRACE_KWARGS. Other types of plot available in plotting module

#using accessor
close.vbt.plot(fig=fig, add_trace_kwargs=dict(secondary_y=False,row=1, col=1), trace_kwargs=dict(line=dict(color="blue")))
indvolume.vbt.barplot(fig=fig, add_trace_kwargs=dict(secondary_y=False, row=2, col=1))
#using plotting module
vbt.Bar(indvolume, fig=fig, add_trace_kwargs=dict(secondary_y=False, row=2, col=1))
  • ADD_TRACE_KWARGS - determines positioning withing subplot
add_trace_kwargs=dict(secondary_y=False,row=1, col=1)
  • TRACE_KWARGS - other styling of trace
trace_kwargs=dict(name="LONGS",
                  line=dict(color="#ffe476"),
                  marker=dict(color="limegreen"),
                  fill=None,
                  connectgaps=True)

Example

    fig = vbt.make_subplots(rows=2, cols=1, shared_xaxes=True, 
                            specs=[[{"secondary_y": True}], [{"secondary_y": False}]], 
                            vertical_spacing=0.02, subplot_titles=("Price and Indicators", "Volume"))

    # Plotting the close price
    close.vbt.plot(fig=fig, add_trace_kwargs=dict(secondary_y=False,row=1, col=1), trace_kwargs=dict(line=dict(color="blue")))

Data

Resampling

t1data = basic_data[['open', 'high', 'low', 'close', 'volume','vwap','buyvolume','sellvolume']].resample("1T")
t1data = t1data.transform(lambda df: df.between_time('09:30', '16:00').dropna()) #main session data only, no nans

t5data = basic_data[['open', 'high', 'low', 'close', 'volume','vwap','buyvolume','sellvolume']].resample("5T")
t5data = t5data.transform(lambda df: df.between_time('09:30', '16:00').dropna())

dailydata = basic_data[['open', 'high', 'low', 'close', 'volume', 'vwap']].resample("D").dropna()

#realign 5min close to 1min so it can be compared with 1min
t5data_close_realigned = t5data.close.vbt.realign_closing("1T").between_time('09:30', '16:00').dropna() 
#same with open
t5data.open.vbt.realign_opening("1h")

Define resample function for custom column

Example of custom feature config Binance Data. Other reduced functions available. (mean, min, max, median, nth ...)

from vectorbtpro.utils.config import merge_dicts, Config, HybridConfig
from vectorbtpro import _typing as tp
from vectorbtpro.generic import nb as generic_nb

_feature_config: tp.ClassVar[Config] = HybridConfig(
    {
        "buyvolume": dict(
            resample_func=lambda self, obj, resampler: obj.vbt.resample_apply(
                resampler,
                generic_nb.sum_reduce_nb,
            )
        ),
        "sellvolume": dict(
            resample_func=lambda self, obj, resampler: obj.vbt.resample_apply(
                resampler,
                generic_nb.sum_reduce_nb,
            )
        )
    }
)

basic_data._feature_config = _feature_config

Validate resample

t2dataclose = t2data.close.rename("15MIN - realigned").vbt.realign_closing("1T")
fig = t1data.close.rename("1MIN").vbt.plot()
t2data.close.rename("15MIN").vbt.plot(fig=fig)
t2dataclose.vbt.plot(fig=fig)

Persisting

basic_data.to_parquet(partition_by="day", compression="gzip")  
day_data = vbt.ParquetData.pull("BAC", filters=[("group", "==", "2024-05-03")]) 
vbt.print_dir_tree("BTC-USD")#overeni directory structure

Discover

vbt.phelp(vbt.talib(“atr”).run) #parameters it accepts
vbt.pdir(pf) - get available properties and methods
vbt.pprint(basic_data) #to get correct shape, info about instance