From 7ec1f9c8b97bad527fadd8530966a6843fe752b3 Mon Sep 17 00:00:00 2001 From: David Brazda Date: Tue, 4 Jun 2024 14:07:44 +0200 Subject: [PATCH] Create testdoc.md (#204) --- testdoc.md | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 testdoc.md diff --git a/testdoc.md b/testdoc.md new file mode 100644 index 0000000..0d31dda --- /dev/null +++ b/testdoc.md @@ -0,0 +1,107 @@ +# Plotly + +* MAKE_SUBPLOT Defines layout (if more then 1x1 or secondary y axis are required) + +```python +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](http://5.161.179.223:8000/static/js/vbt/api/generic/accessors/index.html#vectorbtpro.generic.accessors.GenericAccessor.areaplot) are added with ADD_TRACE_KWARGS and TRACE_KWARGS. Other types of plot available in [plotting module](http://5.161.179.223:8000/static/js/vbt/api/generic/plotting/index.html) + +```python +#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 +```python +add_trace_kwargs=dict(secondary_y=False,row=1, col=1) +``` +* TRACE_KWARGS - other styling of trace +```python +trace_kwargs=dict(name="LONGS", + line=dict(color="#ffe476"), + marker=dict(color="limegreen"), + fill=None, + connectgaps=True) +``` + +## Example + +```python + 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 +```python +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](http://5.161.179.223:8000/static/js/vbt/api/data/custom/binance/index.html#vectorbtpro.data.custom.binance.BinanceData.feature_config). +Other [reduced functions available](http://5.161.179.223:8000/static/js/vbt/api/generic/nb/apply_reduce/index.html). (mean, min, max, median, nth ...) +```python +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 +```python +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 +```python +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 +```python +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 +```