openbacktesting 0.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openbacktesting/__init__.py +85 -0
- openbacktesting/aggregation.py +8 -0
- openbacktesting/broker/__init__.py +54 -0
- openbacktesting/broker/commission.py +57 -0
- openbacktesting/broker/core.py +1122 -0
- openbacktesting/broker/execution.py +62 -0
- openbacktesting/broker/instrument.py +106 -0
- openbacktesting/broker/ledger.py +60 -0
- openbacktesting/broker/models.py +236 -0
- openbacktesting/broker/observations.py +99 -0
- openbacktesting/broker/requests.py +192 -0
- openbacktesting/broker/sizing.py +76 -0
- openbacktesting/colors.py +175 -0
- openbacktesting/data/__init__.py +20 -0
- openbacktesting/data/aggregation.py +39 -0
- openbacktesting/data/context.py +30 -0
- openbacktesting/data/core.py +218 -0
- openbacktesting/data/generators.py +54 -0
- openbacktesting/data/strategy_data.py +103 -0
- openbacktesting/data/timeframe.py +69 -0
- openbacktesting/engine.py +34 -0
- openbacktesting/helpers.py +77 -0
- openbacktesting/indicator_api.py +10 -0
- openbacktesting/indicator_methods.py +123 -0
- openbacktesting/indicator_types.py +19 -0
- openbacktesting/indicators/__init__.py +7 -0
- openbacktesting/indicators/api.py +97 -0
- openbacktesting/indicators/calculus.py +75 -0
- openbacktesting/indicators/candles/__init__.py +0 -0
- openbacktesting/indicators/candles/cdl_doji.py +17 -0
- openbacktesting/indicators/candles/cdl_engulfing.py +14 -0
- openbacktesting/indicators/candles/cdl_eveningstar.py +15 -0
- openbacktesting/indicators/candles/cdl_hammer.py +14 -0
- openbacktesting/indicators/candles/cdl_harami.py +14 -0
- openbacktesting/indicators/candles/cdl_inside.py +14 -0
- openbacktesting/indicators/candles/cdl_marubozu.py +14 -0
- openbacktesting/indicators/candles/cdl_morningstar.py +15 -0
- openbacktesting/indicators/candles/cdl_shootingstar.py +14 -0
- openbacktesting/indicators/candles/cdl_z.py +28 -0
- openbacktesting/indicators/candles/ha.py +19 -0
- openbacktesting/indicators/catalog.json +8348 -0
- openbacktesting/indicators/common.py +94 -0
- openbacktesting/indicators/cycles/__init__.py +0 -0
- openbacktesting/indicators/cycles/dsp.py +10 -0
- openbacktesting/indicators/cycles/ebsw.py +10 -0
- openbacktesting/indicators/cycles/ht_dcperiod.py +10 -0
- openbacktesting/indicators/cycles/ht_dcphase.py +10 -0
- openbacktesting/indicators/cycles/ht_phasor.py +17 -0
- openbacktesting/indicators/cycles/ht_sine.py +17 -0
- openbacktesting/indicators/cycles/ht_trendmode.py +10 -0
- openbacktesting/indicators/cycles/msw.py +19 -0
- openbacktesting/indicators/methods.py +5762 -0
- openbacktesting/indicators/momentum/__init__.py +0 -0
- openbacktesting/indicators/momentum/ac.py +9 -0
- openbacktesting/indicators/momentum/ao.py +10 -0
- openbacktesting/indicators/momentum/apo.py +10 -0
- openbacktesting/indicators/momentum/bias.py +10 -0
- openbacktesting/indicators/momentum/bop.py +10 -0
- openbacktesting/indicators/momentum/brar.py +26 -0
- openbacktesting/indicators/momentum/cci.py +10 -0
- openbacktesting/indicators/momentum/cfo.py +10 -0
- openbacktesting/indicators/momentum/cg.py +10 -0
- openbacktesting/indicators/momentum/cmo.py +10 -0
- openbacktesting/indicators/momentum/coppock.py +10 -0
- openbacktesting/indicators/momentum/crsi.py +28 -0
- openbacktesting/indicators/momentum/cti.py +10 -0
- openbacktesting/indicators/momentum/dm.py +17 -0
- openbacktesting/indicators/momentum/er.py +10 -0
- openbacktesting/indicators/momentum/eri.py +17 -0
- openbacktesting/indicators/momentum/fisher.py +17 -0
- openbacktesting/indicators/momentum/fosc.py +10 -0
- openbacktesting/indicators/momentum/gator.py +13 -0
- openbacktesting/indicators/momentum/ibs.py +7 -0
- openbacktesting/indicators/momentum/inertia.py +22 -0
- openbacktesting/indicators/momentum/kdj.py +18 -0
- openbacktesting/indicators/momentum/kst.py +30 -0
- openbacktesting/indicators/momentum/lrsi.py +10 -0
- openbacktesting/indicators/momentum/macd.py +27 -0
- openbacktesting/indicators/momentum/macdext.py +27 -0
- openbacktesting/indicators/momentum/macdfix.py +18 -0
- openbacktesting/indicators/momentum/mom.py +10 -0
- openbacktesting/indicators/momentum/pgo.py +10 -0
- openbacktesting/indicators/momentum/pmo.py +13 -0
- openbacktesting/indicators/momentum/po.py +10 -0
- openbacktesting/indicators/momentum/ppo.py +20 -0
- openbacktesting/indicators/momentum/psl.py +12 -0
- openbacktesting/indicators/momentum/pvo.py +20 -0
- openbacktesting/indicators/momentum/qqe.py +31 -0
- openbacktesting/indicators/momentum/rci.py +20 -0
- openbacktesting/indicators/momentum/rmi.py +7 -0
- openbacktesting/indicators/momentum/roc.py +10 -0
- openbacktesting/indicators/momentum/rocp.py +10 -0
- openbacktesting/indicators/momentum/rocr.py +10 -0
- openbacktesting/indicators/momentum/rocr100.py +10 -0
- openbacktesting/indicators/momentum/rsi.py +10 -0
- openbacktesting/indicators/momentum/rsx.py +10 -0
- openbacktesting/indicators/momentum/rvgi.py +26 -0
- openbacktesting/indicators/momentum/slope.py +17 -0
- openbacktesting/indicators/momentum/smc_sweep.py +18 -0
- openbacktesting/indicators/momentum/smi.py +21 -0
- openbacktesting/indicators/momentum/smi_stochastic.py +15 -0
- openbacktesting/indicators/momentum/squeeze.py +47 -0
- openbacktesting/indicators/momentum/squeeze_pro.py +53 -0
- openbacktesting/indicators/momentum/stc.py +20 -0
- openbacktesting/indicators/momentum/stoch.py +19 -0
- openbacktesting/indicators/momentum/stochf.py +19 -0
- openbacktesting/indicators/momentum/stochrsi.py +19 -0
- openbacktesting/indicators/momentum/td_seq.py +17 -0
- openbacktesting/indicators/momentum/trix.py +19 -0
- openbacktesting/indicators/momentum/trixh.py +20 -0
- openbacktesting/indicators/momentum/tsi.py +26 -0
- openbacktesting/indicators/momentum/uo.py +22 -0
- openbacktesting/indicators/momentum/vwmacd.py +20 -0
- openbacktesting/indicators/momentum/wavetrend.py +15 -0
- openbacktesting/indicators/momentum/willr.py +10 -0
- openbacktesting/indicators/overlap/__init__.py +0 -0
- openbacktesting/indicators/overlap/alligator.py +13 -0
- openbacktesting/indicators/overlap/alma.py +33 -0
- openbacktesting/indicators/overlap/anchored_vwap.py +50 -0
- openbacktesting/indicators/overlap/anchored_vwap_bands.py +13 -0
- openbacktesting/indicators/overlap/avgprice.py +10 -0
- openbacktesting/indicators/overlap/dema.py +10 -0
- openbacktesting/indicators/overlap/ema.py +12 -0
- openbacktesting/indicators/overlap/frama.py +29 -0
- openbacktesting/indicators/overlap/fwma.py +10 -0
- openbacktesting/indicators/overlap/hilo.py +26 -0
- openbacktesting/indicators/overlap/hl2.py +10 -0
- openbacktesting/indicators/overlap/hlc3.py +10 -0
- openbacktesting/indicators/overlap/hma.py +10 -0
- openbacktesting/indicators/overlap/ht_trendline.py +10 -0
- openbacktesting/indicators/overlap/hwma.py +10 -0
- openbacktesting/indicators/overlap/ichimoku.py +44 -0
- openbacktesting/indicators/overlap/jma.py +10 -0
- openbacktesting/indicators/overlap/kama.py +10 -0
- openbacktesting/indicators/overlap/linreg.py +15 -0
- openbacktesting/indicators/overlap/linregangle.py +10 -0
- openbacktesting/indicators/overlap/linregintercept.py +10 -0
- openbacktesting/indicators/overlap/linregslope.py +10 -0
- openbacktesting/indicators/overlap/ma.py +10 -0
- openbacktesting/indicators/overlap/ma_envelopes.py +16 -0
- openbacktesting/indicators/overlap/mama.py +17 -0
- openbacktesting/indicators/overlap/mavp.py +17 -0
- openbacktesting/indicators/overlap/mcgd.py +10 -0
- openbacktesting/indicators/overlap/medprice.py +10 -0
- openbacktesting/indicators/overlap/midpoint.py +10 -0
- openbacktesting/indicators/overlap/midprice.py +10 -0
- openbacktesting/indicators/overlap/mmar.py +21 -0
- openbacktesting/indicators/overlap/ohlc4.py +10 -0
- openbacktesting/indicators/overlap/pwma.py +10 -0
- openbacktesting/indicators/overlap/rainbow.py +25 -0
- openbacktesting/indicators/overlap/rma.py +10 -0
- openbacktesting/indicators/overlap/sinwma.py +10 -0
- openbacktesting/indicators/overlap/sma.py +14 -0
- openbacktesting/indicators/overlap/ssf.py +10 -0
- openbacktesting/indicators/overlap/supertrend.py +21 -0
- openbacktesting/indicators/overlap/swma.py +10 -0
- openbacktesting/indicators/overlap/t3.py +10 -0
- openbacktesting/indicators/overlap/tema.py +10 -0
- openbacktesting/indicators/overlap/trima.py +10 -0
- openbacktesting/indicators/overlap/tsf.py +10 -0
- openbacktesting/indicators/overlap/typprice.py +10 -0
- openbacktesting/indicators/overlap/vidya.py +10 -0
- openbacktesting/indicators/overlap/vwap.py +10 -0
- openbacktesting/indicators/overlap/vwma.py +10 -0
- openbacktesting/indicators/overlap/wcp.py +10 -0
- openbacktesting/indicators/overlap/wma.py +10 -0
- openbacktesting/indicators/overlap/zlma.py +10 -0
- openbacktesting/indicators/performance/__init__.py +0 -0
- openbacktesting/indicators/performance/drawdown.py +18 -0
- openbacktesting/indicators/performance/log_return.py +10 -0
- openbacktesting/indicators/performance/percent_return.py +10 -0
- openbacktesting/indicators/predicates.py +88 -0
- openbacktesting/indicators/registry.py +571 -0
- openbacktesting/indicators/runtime.py +290 -0
- openbacktesting/indicators/statistics/__init__.py +0 -0
- openbacktesting/indicators/statistics/beta.py +10 -0
- openbacktesting/indicators/statistics/correl.py +10 -0
- openbacktesting/indicators/statistics/entropy.py +10 -0
- openbacktesting/indicators/statistics/kurtosis.py +10 -0
- openbacktesting/indicators/statistics/mad.py +10 -0
- openbacktesting/indicators/statistics/md.py +10 -0
- openbacktesting/indicators/statistics/median.py +10 -0
- openbacktesting/indicators/statistics/mode.py +48 -0
- openbacktesting/indicators/statistics/quantile.py +10 -0
- openbacktesting/indicators/statistics/skew.py +10 -0
- openbacktesting/indicators/statistics/stderr.py +10 -0
- openbacktesting/indicators/statistics/stdev.py +10 -0
- openbacktesting/indicators/statistics/variance.py +10 -0
- openbacktesting/indicators/statistics/zscore.py +10 -0
- openbacktesting/indicators/trend/__init__.py +0 -0
- openbacktesting/indicators/trend/adx.py +28 -0
- openbacktesting/indicators/trend/adxr.py +28 -0
- openbacktesting/indicators/trend/amat.py +19 -0
- openbacktesting/indicators/trend/aroon.py +18 -0
- openbacktesting/indicators/trend/atr_stop.py +33 -0
- openbacktesting/indicators/trend/chop.py +20 -0
- openbacktesting/indicators/trend/cksp.py +17 -0
- openbacktesting/indicators/trend/cpr.py +57 -0
- openbacktesting/indicators/trend/decay.py +10 -0
- openbacktesting/indicators/trend/decreasing.py +18 -0
- openbacktesting/indicators/trend/dpo.py +12 -0
- openbacktesting/indicators/trend/dx.py +19 -0
- openbacktesting/indicators/trend/edecay.py +10 -0
- openbacktesting/indicators/trend/increasing.py +18 -0
- openbacktesting/indicators/trend/long_run.py +10 -0
- openbacktesting/indicators/trend/minus_dm.py +10 -0
- openbacktesting/indicators/trend/pivot_points.py +89 -0
- openbacktesting/indicators/trend/pivothigh.py +23 -0
- openbacktesting/indicators/trend/pivotlow.py +23 -0
- openbacktesting/indicators/trend/plus_dm.py +10 -0
- openbacktesting/indicators/trend/pmax.py +18 -0
- openbacktesting/indicators/trend/psar.py +19 -0
- openbacktesting/indicators/trend/qstick.py +10 -0
- openbacktesting/indicators/trend/sarext.py +35 -0
- openbacktesting/indicators/trend/short_run.py +10 -0
- openbacktesting/indicators/trend/tsignals.py +26 -0
- openbacktesting/indicators/trend/ttm_trend.py +16 -0
- openbacktesting/indicators/trend/vhf.py +10 -0
- openbacktesting/indicators/trend/volatility_stop.py +33 -0
- openbacktesting/indicators/trend/vortex.py +17 -0
- openbacktesting/indicators/trend/xsignals.py +29 -0
- openbacktesting/indicators/types.py +344 -0
- openbacktesting/indicators/utility/__init__.py +0 -0
- openbacktesting/indicators/utility/barssince.py +21 -0
- openbacktesting/indicators/utility/change.py +7 -0
- openbacktesting/indicators/utility/cross.py +12 -0
- openbacktesting/indicators/utility/crossover.py +11 -0
- openbacktesting/indicators/utility/crossunder.py +11 -0
- openbacktesting/indicators/utility/cum.py +7 -0
- openbacktesting/indicators/utility/falling.py +10 -0
- openbacktesting/indicators/utility/highest.py +7 -0
- openbacktesting/indicators/utility/highestbars.py +29 -0
- openbacktesting/indicators/utility/lowest.py +7 -0
- openbacktesting/indicators/utility/lowestbars.py +29 -0
- openbacktesting/indicators/utility/percentile_linear_interpolation.py +12 -0
- openbacktesting/indicators/utility/percentile_nearest_rank.py +16 -0
- openbacktesting/indicators/utility/percentrank.py +7 -0
- openbacktesting/indicators/utility/range.py +8 -0
- openbacktesting/indicators/utility/rising.py +10 -0
- openbacktesting/indicators/utility/rolling_count.py +12 -0
- openbacktesting/indicators/utility/rolling_sum.py +7 -0
- openbacktesting/indicators/utility/running_max.py +7 -0
- openbacktesting/indicators/utility/running_min.py +7 -0
- openbacktesting/indicators/utility/shift.py +7 -0
- openbacktesting/indicators/utility/valuewhen.py +25 -0
- openbacktesting/indicators/volatility/__init__.py +0 -0
- openbacktesting/indicators/volatility/aberration.py +21 -0
- openbacktesting/indicators/volatility/accbands.py +20 -0
- openbacktesting/indicators/volatility/adr.py +7 -0
- openbacktesting/indicators/volatility/atr.py +12 -0
- openbacktesting/indicators/volatility/avolume.py +10 -0
- openbacktesting/indicators/volatility/bbands.py +20 -0
- openbacktesting/indicators/volatility/ce.py +25 -0
- openbacktesting/indicators/volatility/cvi.py +10 -0
- openbacktesting/indicators/volatility/donchian.py +20 -0
- openbacktesting/indicators/volatility/hvol.py +10 -0
- openbacktesting/indicators/volatility/hwc.py +27 -0
- openbacktesting/indicators/volatility/kc.py +27 -0
- openbacktesting/indicators/volatility/massi.py +10 -0
- openbacktesting/indicators/volatility/natr.py +19 -0
- openbacktesting/indicators/volatility/pdist.py +10 -0
- openbacktesting/indicators/volatility/rvi.py +21 -0
- openbacktesting/indicators/volatility/starc.py +11 -0
- openbacktesting/indicators/volatility/thermo.py +28 -0
- openbacktesting/indicators/volatility/true_range.py +31 -0
- openbacktesting/indicators/volatility/ui.py +10 -0
- openbacktesting/indicators/volume/__init__.py +0 -0
- openbacktesting/indicators/volume/ad.py +10 -0
- openbacktesting/indicators/volume/adosc.py +19 -0
- openbacktesting/indicators/volume/aobv.py +31 -0
- openbacktesting/indicators/volume/cmf.py +12 -0
- openbacktesting/indicators/volume/efi.py +12 -0
- openbacktesting/indicators/volume/emv.py +10 -0
- openbacktesting/indicators/volume/eom.py +19 -0
- openbacktesting/indicators/volume/iii.py +9 -0
- openbacktesting/indicators/volume/kvo.py +28 -0
- openbacktesting/indicators/volume/marketfi.py +10 -0
- openbacktesting/indicators/volume/mfi.py +12 -0
- openbacktesting/indicators/volume/nvi.py +26 -0
- openbacktesting/indicators/volume/obv.py +10 -0
- openbacktesting/indicators/volume/pvi.py +26 -0
- openbacktesting/indicators/volume/pvol.py +10 -0
- openbacktesting/indicators/volume/pvr.py +10 -0
- openbacktesting/indicators/volume/pvt.py +10 -0
- openbacktesting/indicators/volume/rvol.py +8 -0
- openbacktesting/indicators/volume/vfi.py +18 -0
- openbacktesting/indicators/volume/vosc.py +10 -0
- openbacktesting/indicators/volume/wad.py +10 -0
- openbacktesting/indicators/volume/wvad.py +9 -0
- openbacktesting/inputs.py +51 -0
- openbacktesting/lib.py +31 -0
- openbacktesting/logs.py +129 -0
- openbacktesting/optimization.py +8 -0
- openbacktesting/optimizer/__init__.py +25 -0
- openbacktesting/optimizer/_semantics.py +155 -0
- openbacktesting/optimizer/identity.py +45 -0
- openbacktesting/optimizer/models.py +92 -0
- openbacktesting/optimizer/plan.py +129 -0
- openbacktesting/optimizer/portfolio-result.schema.json +4984 -0
- openbacktesting/optimizer/query.py +257 -0
- openbacktesting/optimizer/runner.py +98 -0
- openbacktesting/optimizer/storage.py +261 -0
- openbacktesting/optimizer/validation.py +64 -0
- openbacktesting/parallel.py +9 -0
- openbacktesting/plotting/__init__.py +23 -0
- openbacktesting/plotting/collector.py +509 -0
- openbacktesting/plotting/encoding.py +102 -0
- openbacktesting/plotting/types.py +92 -0
- openbacktesting/portfolio/__init__.py +15 -0
- openbacktesting/portfolio/analysis.py +245 -0
- openbacktesting/portfolio/builder.py +381 -0
- openbacktesting/portfolio/catalog.json +1404 -0
- openbacktesting/portfolio/helpers.py +92 -0
- openbacktesting/portfolio/metrics.py +186 -0
- openbacktesting/portfolio/models.py +63 -0
- openbacktesting/portfolio/periods.py +164 -0
- openbacktesting/portfolio/rates.py +14 -0
- openbacktesting/portfolio/snapshot.py +111 -0
- openbacktesting/portfolio/stats.py +272 -0
- openbacktesting/portfolio/trades.py +136 -0
- openbacktesting/portfolio/trading.py +215 -0
- openbacktesting/py.typed +0 -0
- openbacktesting/runtime.py +330 -0
- openbacktesting/simulation/__init__.py +17 -0
- openbacktesting/simulation/collection.py +13 -0
- openbacktesting/simulation/config.py +241 -0
- openbacktesting/simulation/core.py +528 -0
- openbacktesting/simulation/optimization.py +326 -0
- openbacktesting/simulation/parallel.py +145 -0
- openbacktesting/simulation/variants.py +107 -0
- openbacktesting/strategy/__init__.py +19 -0
- openbacktesting/strategy/bar_state.py +14 -0
- openbacktesting/strategy/base.py +810 -0
- openbacktesting/strategy/declaration.py +90 -0
- openbacktesting/strategy/helpers.py +198 -0
- openbacktesting/strategy/inputs.py +460 -0
- openbacktesting/strategy/sizing.py +80 -0
- openbacktesting/strategy/templates.py +160 -0
- openbacktesting/strategy_data.py +10 -0
- openbacktesting/test/BTCUSD.csv +157 -0
- openbacktesting/test/EURUSD.csv +5001 -0
- openbacktesting/test/GOOG.csv +2149 -0
- openbacktesting/test/__init__.py +29 -0
- openbacktesting/test/__main__.py +11 -0
- openbacktesting/test/_test.py +1312 -0
- openbacktesting/util.py +31 -0
- openbacktesting-0.2.0.dist-info/METADATA +151 -0
- openbacktesting-0.2.0.dist-info/RECORD +350 -0
- openbacktesting-0.2.0.dist-info/WHEEL +4 -0
- openbacktesting-0.2.0.dist-info/licenses/LICENSE +202 -0
openbacktesting/util.py
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from multiprocessing import parent_process
|
|
4
|
+
|
|
5
|
+
from openbacktesting.data.core import ( # noqa: F401
|
|
6
|
+
_Array,
|
|
7
|
+
_Data,
|
|
8
|
+
_data_period,
|
|
9
|
+
_Indicator,
|
|
10
|
+
_indicator_warmup_nbars,
|
|
11
|
+
_strategy_indicators,
|
|
12
|
+
)
|
|
13
|
+
from openbacktesting.helpers import _as_list, _as_str, patch, try_ # noqa: F401
|
|
14
|
+
from openbacktesting.simulation.parallel import ( # noqa: F401
|
|
15
|
+
SharedMemory,
|
|
16
|
+
SharedMemoryManager,
|
|
17
|
+
_batch,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
try:
|
|
21
|
+
from tqdm.auto import tqdm as _progress
|
|
22
|
+
except ImportError:
|
|
23
|
+
_progress = None
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def _tqdm(seq, **kwargs):
|
|
27
|
+
# fork may inherit a tqdm lock whose owner is gone; disable=True still acquires the lock during construction.
|
|
28
|
+
# Child processes do not construct progress bars; the main process reports progress for outer tasks.
|
|
29
|
+
if _progress is None or parent_process() is not None:
|
|
30
|
+
return seq
|
|
31
|
+
return _progress(seq, **{"leave": False, **kwargs})
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: openbacktesting
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: OpenBacktesting native historical backtesting engine
|
|
5
|
+
License-Expression: Apache-2.0
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
Requires-Python: <3.15,>=3.12
|
|
8
|
+
Requires-Dist: numpy<3,>=2
|
|
9
|
+
Requires-Dist: pandas-ta-classic==0.8.32
|
|
10
|
+
Requires-Dist: pandas<4,>=2.2
|
|
11
|
+
Provides-Extra: optimize
|
|
12
|
+
Requires-Dist: sambo<2,>=1.25; extra == 'optimize'
|
|
13
|
+
Requires-Dist: scikit-learn<2,>=1.5; extra == 'optimize'
|
|
14
|
+
Provides-Extra: test
|
|
15
|
+
Requires-Dist: ipywidgets<9,>=8; extra == 'test'
|
|
16
|
+
Requires-Dist: pytest<10,>=8.4; extra == 'test'
|
|
17
|
+
Requires-Dist: sambo<2,>=1.25; extra == 'test'
|
|
18
|
+
Requires-Dist: scikit-learn<2,>=1.5; extra == 'test'
|
|
19
|
+
Requires-Dist: tqdm<5,>=4.66; extra == 'test'
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
|
|
22
|
+
# OpenBacktesting
|
|
23
|
+
|
|
24
|
+
**Historical backtesting in Python, from strategy rules to inspectable results.**
|
|
25
|
+
|
|
26
|
+
**English** · [简体中文](docs/readme/README.zh-CN.md) · [Español](docs/readme/README.es.md) · [Português (Brasil)](docs/readme/README.pt-BR.md) · [Français](docs/readme/README.fr.md) · [Deutsch](docs/readme/README.de.md) · [Italiano](docs/readme/README.it.md) · [हिन्दी](docs/readme/README.hi.md)
|
|
27
|
+
|
|
28
|
+
Write bar-by-bar strategies, evaluate them on historical market data, and inspect orders, trades, equity, and risk statistics. OpenBacktesting is a standalone Python package with indicators, parameter optimization, Portfolio reports, and plotting-data export.
|
|
29
|
+
|
|
30
|
+
**Python 3.12–3.14** · **Version 0.2.0** · Distribution and import: `openbacktesting`
|
|
31
|
+
|
|
32
|
+
[Quick start](#quick-start) · [Manual](https://docs.openbacktesting.com/) · [Examples](https://docs.openbacktesting.com/examples/) · [Report an issue](https://github.com/lucidcog/openbacktesting/issues)
|
|
33
|
+
|
|
34
|
+
## Top sponsor — Pineify
|
|
35
|
+
|
|
36
|
+
<a href="https://pineify.app">
|
|
37
|
+
<img src="docs/assets/pineify-logo.svg" alt="Pineify" width="96">
|
|
38
|
+
</a>
|
|
39
|
+
|
|
40
|
+
**[Pineify](https://pineify.app) is OpenBacktesting's top paid sponsor.** Its financial support helps fund this project.
|
|
41
|
+
|
|
42
|
+
Pineify is an AI trading toolkit for building indicators and strategies across multiple platforms. It brings together Pine Script AI, a Finance Agent, AI stock picking, market screening, chart analysis, and MCP tools. [Explore Pineify →](https://pineify.app)
|
|
43
|
+
|
|
44
|
+
## What you can do
|
|
45
|
+
|
|
46
|
+
- **Build strategies:** use a bar-by-bar lifecycle, typed inputs, built-in indicators, and composable helpers.
|
|
47
|
+
- **Inspect execution:** examine orders, fills, position sizing, fees, closed trades, and open lots.
|
|
48
|
+
- **Analyze results:** read pandas statistics, equity curves, and immutable Portfolio reports for each run.
|
|
49
|
+
- **Compare parameters:** run grid searches or optional SAMBO optimization, save experiment results, and export plotting data for your own renderer.
|
|
50
|
+
|
|
51
|
+
## Quick start
|
|
52
|
+
|
|
53
|
+
Install [uv](https://docs.astral.sh/uv/getting-started/installation/) and use Python `>=3.12,<3.15`. From a terminal:
|
|
54
|
+
|
|
55
|
+
```sh
|
|
56
|
+
git clone https://github.com/lucidcog/openbacktesting.git
|
|
57
|
+
cd openbacktesting
|
|
58
|
+
uv sync --locked
|
|
59
|
+
uv run --locked python examples/advanced/native_run.py
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
The example uses bundled GOOG historical data; no market-data download is required. It prints return, trade count, maximum drawdown, and result tables. See [your first backtest](https://docs.openbacktesting.com/quickstart/) for a walkthrough.
|
|
63
|
+
|
|
64
|
+
To install the checked-out source into an existing Python environment instead:
|
|
65
|
+
|
|
66
|
+
```sh
|
|
67
|
+
python -m pip install .
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
The base dependencies are NumPy, pandas, and `pandas-ta-classic==0.8.32`. For SAMBO optimization, use `python -m pip install '.[optimize]'` or `uv sync --locked --extra optimize`. These are source-installation instructions; they do not assume a PyPI release. [Build and distribution details](https://docs.openbacktesting.com/development/).
|
|
71
|
+
|
|
72
|
+
## Minimal backtest
|
|
73
|
+
|
|
74
|
+
Save this as `quickstart.py` in the repository root and run `uv run --locked python quickstart.py`:
|
|
75
|
+
|
|
76
|
+
```python
|
|
77
|
+
from openbacktesting import Backtest, Strategy
|
|
78
|
+
from openbacktesting.test import GOOG
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
class BuyAndHold(Strategy):
|
|
82
|
+
def init(self):
|
|
83
|
+
pass
|
|
84
|
+
|
|
85
|
+
def next(self):
|
|
86
|
+
if self.bar_index == 0:
|
|
87
|
+
self.buy(qty=1)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
result = Backtest(GOOG, BuyAndHold, end_policy="close_at_last_close").run()
|
|
91
|
+
print(result[["Return [%]", "# Trades", "Max. Drawdown [%]"]])
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
This strategy requests one unit on the first bar. Default execution occurs at the next bar's open; `close_at_last_close` closes the remaining position at the final close.
|
|
95
|
+
|
|
96
|
+
`run()` returns a pandas Series. Use `result["_trades"]` for trades and `result["_equity_curve"]` for equity history. See the [results guide](https://docs.openbacktesting.com/guides/results/) for the full field list and Portfolio export; underscore-prefixed fields are native diagnostics, not a stable cross-language contract.
|
|
97
|
+
|
|
98
|
+
## Documentation
|
|
99
|
+
|
|
100
|
+
[Manual](https://docs.openbacktesting.com/)
|
|
101
|
+
|
|
102
|
+
The detailed manual and examples are currently in English.
|
|
103
|
+
|
|
104
|
+
The online manual includes sidebar navigation, page outlines, and full-text search. To preview documentation changes locally:
|
|
105
|
+
|
|
106
|
+
```sh
|
|
107
|
+
uv run --locked --group docs mkdocs serve
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Open `http://127.0.0.1:8000`. The server reloads when documentation changes. Build a static site with `bash scripts/build_docs.sh`; the output is in `build/docs/`. See [Cloudflare Pages deployment](https://docs.openbacktesting.com/deployment/) for the build settings.
|
|
111
|
+
|
|
112
|
+
| Topic | Reference |
|
|
113
|
+
| --- | --- |
|
|
114
|
+
| Getting started | [First backtest](https://docs.openbacktesting.com/quickstart/) · [Example index](https://docs.openbacktesting.com/examples/) |
|
|
115
|
+
| Strategies and data | [Strategy lifecycle](https://docs.openbacktesting.com/guides/author/) · [Market data](https://docs.openbacktesting.com/guides/data/) · [Strategy API](https://docs.openbacktesting.com/reference/strategy/) · [Backtest API](https://docs.openbacktesting.com/reference/core/) |
|
|
116
|
+
| Orders and positions | [Order, Position, and Trade](https://docs.openbacktesting.com/reference/trading/) |
|
|
117
|
+
| Indicators | [Indicator catalog](https://docs.openbacktesting.com/reference/indicators/) |
|
|
118
|
+
| Execution and optimization | [Running strategies](https://docs.openbacktesting.com/guides/runtime/) · [Parameter experiments](https://docs.openbacktesting.com/guides/optimizer/) |
|
|
119
|
+
| Results and plotting | [Results and Portfolio](https://docs.openbacktesting.com/guides/results/) · [Plotting-data export](https://docs.openbacktesting.com/guides/plotting/) |
|
|
120
|
+
| Development | [Verification and builds](https://docs.openbacktesting.com/development/) · [Current limitations](https://docs.openbacktesting.com/limitations/) |
|
|
121
|
+
|
|
122
|
+
## Scope and compatibility
|
|
123
|
+
|
|
124
|
+
- The trading model is **single asset, single settlement currency**. Portfolio reports describe one run; they are not multi-asset portfolio accounts.
|
|
125
|
+
- The package provides computation and plotting data. It includes **no chart renderer, live-trading engine, code sandbox, or Pine Script converter**, and does not promise Pine-equivalent semantics. Run only trusted strategy code.
|
|
126
|
+
- Windows support and full Pine comparisons have not been validated. See [current limitations](https://docs.openbacktesting.com/limitations/) for execution and market-model boundaries.
|
|
127
|
+
|
|
128
|
+
The distribution and import name are both `openbacktesting`; there are no legacy-name entry points. Old module-path pickles are not migrated automatically, earlier branded archives are not guaranteed to load, and experiments created under an old execution identity must be rerun. [Migration and provenance details](https://docs.openbacktesting.com/development/#provenance-and-behavioral-boundaries).
|
|
129
|
+
|
|
130
|
+
## Support and contributing
|
|
131
|
+
|
|
132
|
+
Use [GitHub Issues](https://github.com/lucidcog/openbacktesting/issues) for bugs, questions, and feature requests. Include your Python/package versions, a minimal reproducer, and expected versus actual behavior. Contributions are welcome through [pull requests](https://github.com/lucidcog/openbacktesting/pulls).
|
|
133
|
+
|
|
134
|
+
Before submitting a code change, run:
|
|
135
|
+
|
|
136
|
+
```sh
|
|
137
|
+
uv sync --locked --extra test
|
|
138
|
+
uv run --locked python -m pytest
|
|
139
|
+
uv run --locked python -m openbacktesting.test
|
|
140
|
+
uv run --locked python scripts/check_package.py
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Follow the [development guide](https://docs.openbacktesting.com/development/) for the complete checks. Public behavior changes need corresponding documentation, runnable examples, and execution validation. Code, comments, and technical documentation default to English; localized README content is intentional.
|
|
144
|
+
|
|
145
|
+
## Translations
|
|
146
|
+
|
|
147
|
+
This English README is the source of truth. Translations cover Simplified Chinese, Spanish, Brazilian Portuguese, French, German, Italian, and Hindi. Use the language links above, and follow the [translation guide](docs/readme/TRANSLATING.md) when updating them. Keep commands, API identifiers, capability boundaries, and sponsor attribution consistent across languages.
|
|
148
|
+
|
|
149
|
+
## License and provenance
|
|
150
|
+
|
|
151
|
+
The project license declaration is [Apache-2.0](LICENSE). Third-party materials retain their original licensing terms, including the [indicator reference data](tests/fixtures/indicator_expansion/README.md).
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
openbacktesting/__init__.py,sha256=OTWJEq4mjyhSGCVX58W9cCEbZdTfUw_NqyAGLgbv-o4,3089
|
|
2
|
+
openbacktesting/aggregation.py,sha256=-UcqxpSx-d7Nm505wlFo-sVZrQpAFxWFyiS8FWPIl0E,211
|
|
3
|
+
openbacktesting/colors.py,sha256=KNM7yS-S5C-W5jPZPQER5y4bsFRhhZnMq3FgF6-vvUk,6938
|
|
4
|
+
openbacktesting/engine.py,sha256=wKIJ5CMIxNGeYxvzRHtPDAIIxmQDxKSmPHr1bVbqZVo,1947
|
|
5
|
+
openbacktesting/helpers.py,sha256=CYSPSV70eVio081BKOs-b233GpxHEg6vs5GxnJoE8lg,2430
|
|
6
|
+
openbacktesting/indicator_api.py,sha256=z5KIkjRMUXHg-SlsQ6iS2iCZWNGEV4_cZQcQuH_l65E,265
|
|
7
|
+
openbacktesting/indicator_methods.py,sha256=Q-nt5Wrh4i3OPfy8RjVjfUNaIl8WHaiWlvU2ZPq7L5U,2244
|
|
8
|
+
openbacktesting/indicator_types.py,sha256=M4YBBjg0OtXppLtvw8WuWkCC56OnF2ByNRF1_ZHT0S8,374
|
|
9
|
+
openbacktesting/inputs.py,sha256=qGoqBgSic6MHix6TXl7bILcaingl-fqDs21KTTd-Ccw,1308
|
|
10
|
+
openbacktesting/lib.py,sha256=k2OSHH6XPGYOyUWSbrraFSvPH_0MovT8Th_TTIZtrm8,1163
|
|
11
|
+
openbacktesting/logs.py,sha256=knfqsk1Ck5ZJMWs0uQqFUZPv6wqq4SMeVKbTm_NDe_Y,4601
|
|
12
|
+
openbacktesting/optimization.py,sha256=TzaPvUzvttAkZTHLYBcwpN8vWRzrPynTSrPXlbBp7LA,303
|
|
13
|
+
openbacktesting/parallel.py,sha256=xdsWiNoFZD_JYqkLzoKoIA48oF6P9hoa3fFz-MJIh7U,299
|
|
14
|
+
openbacktesting/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
+
openbacktesting/runtime.py,sha256=RuWaz9z1q4donmK2hUvn0gGi8m6SAO-0aBPrNNlYdJk,11694
|
|
16
|
+
openbacktesting/strategy_data.py,sha256=XyCV781ICswKrSx99AH72S5YlK3HsGwjcTpmvPItGwU,283
|
|
17
|
+
openbacktesting/util.py,sha256=yz-xvQ3RG8NxAU4dSTbqmkmFV_ucuOzfaqD8S30cmAA,921
|
|
18
|
+
openbacktesting/broker/__init__.py,sha256=sdSujH4kAy642qp-JdeST1WyJUMMCBcTI-OEqjUkZkQ,1338
|
|
19
|
+
openbacktesting/broker/commission.py,sha256=PXXyCBw96r5ZO3glDPy9g7BtIQeSjTLXZ6jPeMF0K5Q,2503
|
|
20
|
+
openbacktesting/broker/core.py,sha256=IfF9mHgN1Q7iTie-7iVnBcKr6nMX3ZfvcIEKzVdGKx0,41633
|
|
21
|
+
openbacktesting/broker/execution.py,sha256=bCXmb9qpffde_Jkre5Lu-n-0Y8kgGHGWxzwJwaql24Y,2526
|
|
22
|
+
openbacktesting/broker/instrument.py,sha256=vCWbVKJNHnZolotRbeDJ68Bgic-s1N_kCC6FwAlS-uQ,5020
|
|
23
|
+
openbacktesting/broker/ledger.py,sha256=NQLe9_zrKZvkSjT-GLt3AmQSKd7usjxJSP2pDcCm7Qo,2311
|
|
24
|
+
openbacktesting/broker/models.py,sha256=rpLYWczjAOy0kQRvcIcJA8znK3mFZXoT4-TIx--p6Os,6623
|
|
25
|
+
openbacktesting/broker/observations.py,sha256=NMq2XoglFep0_xK-H9aXytBsmPU7JHaZcIVx4b8oJwA,3550
|
|
26
|
+
openbacktesting/broker/requests.py,sha256=uhd-TwiLhWAD8gz_JvWLPPNEUidsBe3Am9X152ASGQA,7020
|
|
27
|
+
openbacktesting/broker/sizing.py,sha256=BColfAp6ZjXpVNV9rcK0t87NW1bOLP9SvdJU0nca858,3001
|
|
28
|
+
openbacktesting/data/__init__.py,sha256=42b_B6WAd-YXTKhQV8p_5tPSiOFAjc-1V-McXcw-LxM,542
|
|
29
|
+
openbacktesting/data/aggregation.py,sha256=rESj0q-WXh-W6ww_RXiY9CJlQRWYRFtIkcgSxBob2ns,923
|
|
30
|
+
openbacktesting/data/context.py,sha256=Tnx6Ma8RCVb3nuTfoG1NegfnisQQYKrjnZVbpBbOPa0,1285
|
|
31
|
+
openbacktesting/data/core.py,sha256=xivfcMEmGBpgFpVSdlL0bX-3W49OCTBzU7vkpv3eJEA,6523
|
|
32
|
+
openbacktesting/data/generators.py,sha256=8_1-Kgp2BjAzWVH8ZQ9Nl_cihid1VHg-ay4zI3cowis,1915
|
|
33
|
+
openbacktesting/data/strategy_data.py,sha256=qmbqKecOjnQz67RweEA7XXBdneOrB2Bloa4XV7ondNU,4265
|
|
34
|
+
openbacktesting/data/timeframe.py,sha256=p7GYIuX3jB1bl_4uXtD4w0c3MoELn9ekqCCFAmLAaOE,2218
|
|
35
|
+
openbacktesting/indicators/__init__.py,sha256=m2Hwq5YQ3MkBX806vFw0aafl5PHSPoS7jGm0JjdLNkE,348
|
|
36
|
+
openbacktesting/indicators/api.py,sha256=vPhENeSacVjc7jIobm5xwDlLQCC1ghhLe8LU6TN0ZUQ,3366
|
|
37
|
+
openbacktesting/indicators/calculus.py,sha256=g1vFqbUDnTK2cYYjyRBL_yyIfX8DfBEhBy-l0qJGIVU,2896
|
|
38
|
+
openbacktesting/indicators/catalog.json,sha256=PvyO1YJZLpVolT8TjL8SbbMt0ZRlMhRZsYqxYEbOT1w,199165
|
|
39
|
+
openbacktesting/indicators/common.py,sha256=A3dQYwFhCLCXz3sNQon1AjW1K89HJq2OB1-WDLEvIWw,4083
|
|
40
|
+
openbacktesting/indicators/methods.py,sha256=PdV8zsET2rstBIp3PH1YSZox4PVw3I0nuKfx9BIpUyw,174257
|
|
41
|
+
openbacktesting/indicators/predicates.py,sha256=wFmKQwTz7I5l2EJcp_3UCR3U_9wsyU1RmyMOkYJ4eqA,4226
|
|
42
|
+
openbacktesting/indicators/registry.py,sha256=Jo6Ltx5t4c2Mc_40SuNMw5-JYGPIgju0q1BOFwfX3Lk,24293
|
|
43
|
+
openbacktesting/indicators/runtime.py,sha256=XkDBk_0wZE82sckBXO3g2z8bADSnCKMdLcRNOo6oP-k,11321
|
|
44
|
+
openbacktesting/indicators/types.py,sha256=HSXKOsAr3DVov3AooiSNSkG9oIJ0aKF14Nh2ONm_F5A,13784
|
|
45
|
+
openbacktesting/indicators/candles/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
46
|
+
openbacktesting/indicators/candles/cdl_doji.py,sha256=26c5eUTk5taGd7O0C2NjJg_BZSUIRiddkx6AV7zLItw,754
|
|
47
|
+
openbacktesting/indicators/candles/cdl_engulfing.py,sha256=dUQxphwhlIUWhiqxFchdhd0wTAZVzrolQdFFs5-lt-c,400
|
|
48
|
+
openbacktesting/indicators/candles/cdl_eveningstar.py,sha256=ETsC7Y8ndI1d3hcfdSDxVYTEqD8UMqwp8ab6hKH3400,455
|
|
49
|
+
openbacktesting/indicators/candles/cdl_hammer.py,sha256=oP8yXJ-5FcCp4l7_iTeyDIoPyNsNfAVvdIkmzSKrZ7M,389
|
|
50
|
+
openbacktesting/indicators/candles/cdl_harami.py,sha256=95tYi2jhk3_CL__w7Z6bANLTyYArVzjcnuoYQMLSwpA,389
|
|
51
|
+
openbacktesting/indicators/candles/cdl_inside.py,sha256=kP6ilywzXvFXkxe_zKp2h3erm2w0SGx8-abXz1LQgXQ,388
|
|
52
|
+
openbacktesting/indicators/candles/cdl_marubozu.py,sha256=JKMrBVoOhz3kqAjdx4mvCdshfIOepFp7iZG9lehYGVc,397
|
|
53
|
+
openbacktesting/indicators/candles/cdl_morningstar.py,sha256=0Ez4v6TMt1h8MdgRmLUqdzd5D_3vr3l36RmIPWqAQAM,455
|
|
54
|
+
openbacktesting/indicators/candles/cdl_shootingstar.py,sha256=zSA8gPZECxlOcYCT_SH66ZvWD-WBX0wH3_d_01o_Cxk,413
|
|
55
|
+
openbacktesting/indicators/candles/cdl_z.py,sha256=NHVYpLeWGUmbtL5ADliY0nv0rLElFgcAsgL2v4uP9oo,741
|
|
56
|
+
openbacktesting/indicators/candles/ha.py,sha256=TXpZhhDUZUUo_klzJ0iczuAD_TE2rXaxLtwwYyPlQ0M,517
|
|
57
|
+
openbacktesting/indicators/cycles/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
58
|
+
openbacktesting/indicators/cycles/dsp.py,sha256=lMvL2zXJjv5kGFPFg2Qs3eQdRNjdqVo8k_EZrLS8NIw,333
|
|
59
|
+
openbacktesting/indicators/cycles/ebsw.py,sha256=bUSD0FpZzRkYY8xJAuga_eWqnHD0ubcap0BrtUCFrJs,355
|
|
60
|
+
openbacktesting/indicators/cycles/ht_dcperiod.py,sha256=AmiyXLoxRdmvTJRy_lbLqCUcKpnmzbW5d8fK4SJYp_w,350
|
|
61
|
+
openbacktesting/indicators/cycles/ht_dcphase.py,sha256=ylPRj7CSCLtS2fgJ_qgXwDGsfuz0Mhb3tsun_QasxFI,345
|
|
62
|
+
openbacktesting/indicators/cycles/ht_phasor.py,sha256=VqSD12N1UGYdGlEVXZ6kcMfqbmfdsDxF_LNxWo2MZ88,457
|
|
63
|
+
openbacktesting/indicators/cycles/ht_sine.py,sha256=qTxJuKAHsm2mdk9QYWyu5dMESEwhh_VNFb7fpdbQ0_M,432
|
|
64
|
+
openbacktesting/indicators/cycles/ht_trendmode.py,sha256=19ou5WP9TcnxlAYqt-9i_DxX_-A15Q1kaAE7JDhX7HA,355
|
|
65
|
+
openbacktesting/indicators/cycles/msw.py,sha256=H-PvLGwzReaTEj--uxyvQgFXWsmRVqOUhYqIiDGaz0E,592
|
|
66
|
+
openbacktesting/indicators/momentum/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
67
|
+
openbacktesting/indicators/momentum/ac.py,sha256=z6zrd6_M9jP8EWK8zsTd2CZU9Tl3AXXMJ3rK6fWfGlQ,318
|
|
68
|
+
openbacktesting/indicators/momentum/ao.py,sha256=yPy902o0aa7ENwaZYiBTZOSbcvtoiTcvq1DtUzTgKDg,352
|
|
69
|
+
openbacktesting/indicators/momentum/apo.py,sha256=JAEsjYdFLpb2zrj13LDA5d-YRLBuWzVCVAmFBUDrUHc,369
|
|
70
|
+
openbacktesting/indicators/momentum/bias.py,sha256=FYoVEUYSOHCR7yZ3UxEB9SNmHo_BQaxCrSAMwEcW-xI,363
|
|
71
|
+
openbacktesting/indicators/momentum/bop.py,sha256=wPc7apHOYuCy6vxvIjjexzIE6c5fgcsVFfu8H82wr6g,386
|
|
72
|
+
openbacktesting/indicators/momentum/brar.py,sha256=mcKqxSoRbUZoo8My9LnEJnpox58umcTATV0ABfr24fc,607
|
|
73
|
+
openbacktesting/indicators/momentum/cci.py,sha256=v_3fCL84N2uW1lov-Pygy2aPKv8UHBOPOeUm-aYqjho,374
|
|
74
|
+
openbacktesting/indicators/momentum/cfo.py,sha256=nvEVSb5d3WSoxCEaAJ8HlpOVYIzFp-l2Dnr15WNHgFU,378
|
|
75
|
+
openbacktesting/indicators/momentum/cg.py,sha256=iodhLqkWzeBe2wdX_KLr8oFYO6M1L791Jue88pZbcQo,330
|
|
76
|
+
openbacktesting/indicators/momentum/cmo.py,sha256=usSOXgCTBZpELGvJjf7gwH9dMGjEabHqkXXet3qFVI0,378
|
|
77
|
+
openbacktesting/indicators/momentum/coppock.py,sha256=hShntq1VCUSnT0wLObC4o2FCWLW-dKVpb4EycjeoQTc,389
|
|
78
|
+
openbacktesting/indicators/momentum/crsi.py,sha256=X7cek2XMRIaw0Q9Ggx_w0BvdcsVxFkm4lYuHhCBhdUo,981
|
|
79
|
+
openbacktesting/indicators/momentum/cti.py,sha256=20ZmNqRsK0Kp4KDQVwZAD-EyQ1eiLYCWhU9Kq5cwE6k,335
|
|
80
|
+
openbacktesting/indicators/momentum/dm.py,sha256=JW_OA2AQm2reDKrEr0via_CsLw627CPYlr7_ZJOiXaI,502
|
|
81
|
+
openbacktesting/indicators/momentum/er.py,sha256=KjwoVLRx5bdYTMnmUaydN3cj__IJJ1EmTwrlUar6W1U,350
|
|
82
|
+
openbacktesting/indicators/momentum/eri.py,sha256=CIU5FRHqwRXjHrauzAeii25-dDUE-tPBqs1ergh9eNA,491
|
|
83
|
+
openbacktesting/indicators/momentum/fisher.py,sha256=LTbCdRzyFb9EDUPOo98W2bJvlHw86Wi6YpC3cLCX02A,521
|
|
84
|
+
openbacktesting/indicators/momentum/fosc.py,sha256=wO8S9XinfN3nYffKcN0-Nw0eOa_blwiczT7d74Csl0k,340
|
|
85
|
+
openbacktesting/indicators/momentum/gator.py,sha256=A8qhBxRfEjZBVLydFvKoLLqNCWHxx4Eb8qWnNaOAD8o,438
|
|
86
|
+
openbacktesting/indicators/momentum/ibs.py,sha256=RIQnugBLO138Y0KZDnwuo9JSlQhAOD1rE1qEuJmDQN0,229
|
|
87
|
+
openbacktesting/indicators/momentum/inertia.py,sha256=c1sobgY-wc5q1ejMEQmw0h3NVnIfRijL0xr6MnGBkEA,631
|
|
88
|
+
openbacktesting/indicators/momentum/kdj.py,sha256=BAHADFjhfpehV0ouD_k-e-eLNc-aIGj3OqU5yh64YF4,547
|
|
89
|
+
openbacktesting/indicators/momentum/kst.py,sha256=V0FtDq2FVlJmkGIRsZeDpo48ATf4n0cNLB1mg8Xpm74,752
|
|
90
|
+
openbacktesting/indicators/momentum/lrsi.py,sha256=wTuST1K24UWg2MufyaCJA-4zvKOFtVPPKJwyLTOLLq0,360
|
|
91
|
+
openbacktesting/indicators/momentum/macd.py,sha256=1vPM2tmIdV-WLZ6d4Izq5vCdoivP0nbF2j2N86akENc,746
|
|
92
|
+
openbacktesting/indicators/momentum/macdext.py,sha256=UhtObRI6yc9OksdhY1-rYNiqzj7QQ7OMsMAcWGswF9A,776
|
|
93
|
+
openbacktesting/indicators/momentum/macdfix.py,sha256=Ku_mcPRI7Ft8Z6b70aBcqtXEibctYQ0-KK-btyOsVgs,545
|
|
94
|
+
openbacktesting/indicators/momentum/mom.py,sha256=-MJyOvr0gN36xDDkl8pMFgATXNtQe4reUQiXB3wxMpI,335
|
|
95
|
+
openbacktesting/indicators/momentum/pgo.py,sha256=J95NpmoxQK2NL7neOA39qtsBS7z5u6qkjcz9eGYijRA,366
|
|
96
|
+
openbacktesting/indicators/momentum/pmo.py,sha256=ppFCp2HzD_Kc4nPR0pMdnptDCDxRJc1HqDrln4hQxmM,441
|
|
97
|
+
openbacktesting/indicators/momentum/po.py,sha256=YrLbqd4ibfMXV6Wu8XtsD_iFRfp0OgkG3pIfAXRrMvY,330
|
|
98
|
+
openbacktesting/indicators/momentum/ppo.py,sha256=huwDWIjUzrye2jysg8GWQRU1ODoppo-Y_7LAg8G01Gc,625
|
|
99
|
+
openbacktesting/indicators/momentum/psl.py,sha256=fYIrOYjQWgMHDtTPXlW7jt_rjbfVWOhy7LTGV1ZRM5E,412
|
|
100
|
+
openbacktesting/indicators/momentum/pvo.py,sha256=2QuQoSPJ1YZrnP2mkEYS7caEfkzus_vyjs0YixiGRsM,605
|
|
101
|
+
openbacktesting/indicators/momentum/qqe.py,sha256=ilI1d1TlU0YVlK2NycDPnmXrONdwPUIEKD0LAbjxgkA,1052
|
|
102
|
+
openbacktesting/indicators/momentum/rci.py,sha256=ox8ZdGMk6F3ibbd7-nSl6XxgwtB6ApYn7BV6HJDOGlE,677
|
|
103
|
+
openbacktesting/indicators/momentum/rmi.py,sha256=I7PWs6gL8-VZoI8juj2mzGYzs828_4zeKMmiu0iLTBY,226
|
|
104
|
+
openbacktesting/indicators/momentum/roc.py,sha256=OXVpY_0fNRk-cBEBRXDe2mIgbQVzlUcaY02qpEpmErI,358
|
|
105
|
+
openbacktesting/indicators/momentum/rocp.py,sha256=NDXAW3v8xCLEvv33migxdpWO9Pi4dMAOSmhWNQVuGh0,340
|
|
106
|
+
openbacktesting/indicators/momentum/rocr.py,sha256=qwo7OBzRwhKzGWIVlArn362KkaBQFULITtknRapaVBQ,340
|
|
107
|
+
openbacktesting/indicators/momentum/rocr100.py,sha256=BK8IBCMPb8oAZVz4_0k-LqRsX0TK2Rsd7q6GCtG2Faw,355
|
|
108
|
+
openbacktesting/indicators/momentum/rsi.py,sha256=NvCOfseBskIykjAj2K7RWg_9n9T59yn6kcDHqLSzkw0,378
|
|
109
|
+
openbacktesting/indicators/momentum/rsx.py,sha256=Aq8eKpwXqP21SQeHTt1CoYvmh8wd76VzRtu1_4jMt9k,355
|
|
110
|
+
openbacktesting/indicators/momentum/rvgi.py,sha256=AvyDPXF89iwzUbc05KNOi0JQhe2HxrrSbZzeqmKb0uE,691
|
|
111
|
+
openbacktesting/indicators/momentum/slope.py,sha256=xxW6BRMkDlLz6s58dELizKUaVkvQItwpJ-D-gGwIRQI,493
|
|
112
|
+
openbacktesting/indicators/momentum/smc_sweep.py,sha256=YM2mFDiJnKarwas1RTmpQ4okeQLLN48XJ5qeecZZs0Y,511
|
|
113
|
+
openbacktesting/indicators/momentum/smi.py,sha256=H4NE-UYTbczXe-8MTgcyCttPTytSIUsj8zAq_eddrf8,676
|
|
114
|
+
openbacktesting/indicators/momentum/smi_stochastic.py,sha256=H6Y7k-Nd-TYZgkD9HZFi1LHutgnx397brNzCR7ONWEM,668
|
|
115
|
+
openbacktesting/indicators/momentum/squeeze.py,sha256=AG1lR6YG6var-xK7we0fX58oLwA3Zsbb2vixa0WmPOM,988
|
|
116
|
+
openbacktesting/indicators/momentum/squeeze_pro.py,sha256=L1mr5UgMfffxNpWN3qcYb_jhRB3QXkRzKXV0XFFXC68,1325
|
|
117
|
+
openbacktesting/indicators/momentum/stc.py,sha256=vrUTZTIIxiOzE6PgRG23qKJfDm5_Frlw_7QSOrhMEwg,647
|
|
118
|
+
openbacktesting/indicators/momentum/stoch.py,sha256=C6k6VjeHG01LbkyHSy3L12AryQ6DXjOukWq7HS7TT8Q,562
|
|
119
|
+
openbacktesting/indicators/momentum/stochf.py,sha256=-_d_RkM0GTP1loPnPmn3AlF4qHAbwOtHGGbH5Kf4nh4,557
|
|
120
|
+
openbacktesting/indicators/momentum/stochrsi.py,sha256=erJk7RfHk2LuUMPxBeD2R7OQIuOpl9FuNPbZGdLVTqE,600
|
|
121
|
+
openbacktesting/indicators/momentum/td_seq.py,sha256=w5gDMwwxcK3BA8VHyqPtBfo0Qn82PV_37vSMfmAhJrQ,474
|
|
122
|
+
openbacktesting/indicators/momentum/trix.py,sha256=URqECRC84TwnnKU7fIjpTbdLwjIZCewdwFDsro7hEH0,551
|
|
123
|
+
openbacktesting/indicators/momentum/trixh.py,sha256=yTV5ajSdKWeN1iDiD1EFeRC6X_cL2XregaM71mApBHQ,608
|
|
124
|
+
openbacktesting/indicators/momentum/tsi.py,sha256=sbSAtxYlKtfOwPfUXv7muFNhYYSoHTLjH7GTdTpufAU,645
|
|
125
|
+
openbacktesting/indicators/momentum/uo.py,sha256=9DvqrTiJP-mZo5kX52sH7GfIdFwzSjoMI4Pn0yxATxA,585
|
|
126
|
+
openbacktesting/indicators/momentum/vwmacd.py,sha256=hTR-XulbJRKfowpKXNgDvV3CfY5CgvQ-FUYStSTP00E,624
|
|
127
|
+
openbacktesting/indicators/momentum/wavetrend.py,sha256=L2ksTZigglkcRDADVok8kkrdjzdYHUPAucmcm8U1bqg,589
|
|
128
|
+
openbacktesting/indicators/momentum/willr.py,sha256=vSeyjBq1Ckvr-fZdJcugHeug4lJBHt7fSLTNe-IjWFU,376
|
|
129
|
+
openbacktesting/indicators/overlap/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
130
|
+
openbacktesting/indicators/overlap/alligator.py,sha256=mIrHvRmpiU7FUOVqC-7gx0SVlDrIYjX7Eb4XZefC4og,426
|
|
131
|
+
openbacktesting/indicators/overlap/alma.py,sha256=iuFJLqE8HLrjEuAF_XTu4bg0AGbLsFtZ8zLYkhcQTaA,1412
|
|
132
|
+
openbacktesting/indicators/overlap/anchored_vwap.py,sha256=Z41WwPnbp3ww9u9a-aakflt-a6WADSjg899CRlktXxU,2003
|
|
133
|
+
openbacktesting/indicators/overlap/anchored_vwap_bands.py,sha256=7kYks5FuMuBucUVpRd2OkpbwGEldZLBLlsbJ-ZSEfDs,346
|
|
134
|
+
openbacktesting/indicators/overlap/avgprice.py,sha256=V-2fUgMDBdUdMAvGqh8PgshM4w-mTpi1XdNMTC7cTfE,387
|
|
135
|
+
openbacktesting/indicators/overlap/dema.py,sha256=C0jM0GGBSSag2o6UUoH7GC2DWBeKVZcG_bBPppsKp80,339
|
|
136
|
+
openbacktesting/indicators/overlap/ema.py,sha256=ZfcC8mvCUS6izc1K0hTKPB2pXaQnYby6SxfHkFTRymo,408
|
|
137
|
+
openbacktesting/indicators/overlap/frama.py,sha256=UN2g7yJe5XoM7RA_Oh2VV3sWr4LqspZM_ip4TogV_rU,1155
|
|
138
|
+
openbacktesting/indicators/overlap/fwma.py,sha256=3iyUAj7dzLvewa9P73Yc8qtrxVS77dzMKvTLLCQZHI0,353
|
|
139
|
+
openbacktesting/indicators/overlap/hilo.py,sha256=vuify9pFca46ZUyPh04HTmWaVZPZyYwOpadoAGXYOsU,711
|
|
140
|
+
openbacktesting/indicators/overlap/hl2.py,sha256=GJliH_lUW4dY9hce5dRwhzL92YneLaf-CGcpwF-bdcE,322
|
|
141
|
+
openbacktesting/indicators/overlap/hlc3.py,sha256=O1FoxB7xxk6XyhiSk5Hwqa23LqfKT_G8MAzR2YofQV0,347
|
|
142
|
+
openbacktesting/indicators/overlap/hma.py,sha256=46DciyUkQzvg-WixL6EQWhvOa8TW3UmRHD9NNpOZ5K0,334
|
|
143
|
+
openbacktesting/indicators/overlap/ht_trendline.py,sha256=XDCVV0eRS4DBRXsvlwRcaHjtm5Yyh7BODne38k8PAm8,356
|
|
144
|
+
openbacktesting/indicators/overlap/hwma.py,sha256=oZ67HWxx2FIv6bWY0j5TuJZ0NNMNIgTih9DqTGgv35o,349
|
|
145
|
+
openbacktesting/indicators/overlap/ichimoku.py,sha256=vWP3qSy_hKPvhYe0DNRiiPqkvV2R3oSDtw9D3EpqUrs,920
|
|
146
|
+
openbacktesting/indicators/overlap/jma.py,sha256=ZEi3o9bkexcPMtsBJoQyIk7_f7cubr0lg77SVdpVqKQ,354
|
|
147
|
+
openbacktesting/indicators/overlap/kama.py,sha256=vzc2m0bqqFHccwX0rLgOorFsNVW0kkF1EdWEk5cbV58,393
|
|
148
|
+
openbacktesting/indicators/overlap/linreg.py,sha256=32RccNDAPit94InMinIwp8CiGo_PtLyjbaPJl_vMlCE,605
|
|
149
|
+
openbacktesting/indicators/overlap/linregangle.py,sha256=beVN-L0ounfh_p6lrpjya6u3ascfGTCccIpv3RIiV-o,374
|
|
150
|
+
openbacktesting/indicators/overlap/linregintercept.py,sha256=3G6E2VrGIey5Gajs2FlqNUKgw2U_gDyBQ6ABzt8-6S0,394
|
|
151
|
+
openbacktesting/indicators/overlap/linregslope.py,sha256=Gfa5ce9AD3exjDppDbwD0F_6ukUUfhU5OV7y3CQ6rRM,374
|
|
152
|
+
openbacktesting/indicators/overlap/ma.py,sha256=GdOwcU4UsGvsFh_jM4JU9WtzzQgTMti4PyaA4GSUdXk,349
|
|
153
|
+
openbacktesting/indicators/overlap/ma_envelopes.py,sha256=zrm9OEUWY_3mQ4nlmZboVFODj2ByIufHOofJpzk_UQA,470
|
|
154
|
+
openbacktesting/indicators/overlap/mama.py,sha256=eDjtMlHwoxlJ0NKbqcweUffdGXBTKwIR-b7OsTq-Xmc,520
|
|
155
|
+
openbacktesting/indicators/overlap/mavp.py,sha256=xQMuMJqg2tbgkLtIYPhVB31xzYzwRDqmTlQVkRSo8Dc,484
|
|
156
|
+
openbacktesting/indicators/overlap/mcgd.py,sha256=qKRazikt6FCOSqa7wjNDpgyEzhOfaqKkT_s4wWMtdz0,347
|
|
157
|
+
openbacktesting/indicators/overlap/medprice.py,sha256=OR_sgmhLfsB5Aj8M02WzB1GIvPWnWZ4nqge6Mwlm1m0,347
|
|
158
|
+
openbacktesting/indicators/overlap/midpoint.py,sha256=mSytBbJjnNjrNFqchTnHJAYI0Vcl7a6QJF01DHsGmyQ,359
|
|
159
|
+
openbacktesting/indicators/overlap/midprice.py,sha256=x9PhFS1-H_LHtIEAOcZN2FpBpUVAo32ccir_wwvdvbM,370
|
|
160
|
+
openbacktesting/indicators/overlap/mmar.py,sha256=fd2byKJgwOt0m6-QdTrQUtLOM8CONnIVzt9KccmGfOk,619
|
|
161
|
+
openbacktesting/indicators/overlap/ohlc4.py,sha256=xnnxi9tQYL6HYSrXgDwZyRhx63qEGhCOzxFLF_iZS2o,372
|
|
162
|
+
openbacktesting/indicators/overlap/pwma.py,sha256=NlbIxwgZHw1KVWPgRf3Ox1O0oBnLSlhwkTf9TVhop8k,353
|
|
163
|
+
openbacktesting/indicators/overlap/rainbow.py,sha256=FKR1rAjPMaLUYqor_TmAw-V6q2IESggNcrkeDRwvBiA,707
|
|
164
|
+
openbacktesting/indicators/overlap/rma.py,sha256=65ex2ocM5-Io75Q6strfMC8iYduSuGxdj-Pk-lDraYc,334
|
|
165
|
+
openbacktesting/indicators/overlap/sinwma.py,sha256=foGcthkUAst1BlRfIiKaTqdWEwF-vwCF610P8WOCczo,349
|
|
166
|
+
openbacktesting/indicators/overlap/sma.py,sha256=TcyaduciYpySk21DGw0MExZx9v24ACFlWCwh3MMAGSY,493
|
|
167
|
+
openbacktesting/indicators/overlap/ssf.py,sha256=AkozCzYWKJR-SMBfcpnbTkuSrh2gwP-NmRcNkDdtVpY,354
|
|
168
|
+
openbacktesting/indicators/overlap/supertrend.py,sha256=644Tv0OUGwgK_ALjI5FCs7P6nuZtMA1mmMsEGZ5dfN4,699
|
|
169
|
+
openbacktesting/indicators/overlap/swma.py,sha256=wuWbPeAACpH-CE1uwqKa5LCESQHjx20WiDg9oMPdiHE,353
|
|
170
|
+
openbacktesting/indicators/overlap/t3.py,sha256=8pWv5zZfMvOkE7IFMlZAM8OQX6xwgVB3yAdo966JJBU,337
|
|
171
|
+
openbacktesting/indicators/overlap/tema.py,sha256=62P-HpHqmKzYU_0Jjvrdeq8o05_rGz6X5D86dnJNPW8,339
|
|
172
|
+
openbacktesting/indicators/overlap/trima.py,sha256=tRWJ4k19h_w3IrmfztuElwoYvGnrFnX6gmB1uPB4wY0,344
|
|
173
|
+
openbacktesting/indicators/overlap/tsf.py,sha256=F312IyaS4m7AghfjlQsRO6yFCpJbtwaaTBISv2aRCmE,334
|
|
174
|
+
openbacktesting/indicators/overlap/typprice.py,sha256=bzq6xj3H1bW9DC6BlufrveTMxXBXyskPwIVBPsCUnDM,367
|
|
175
|
+
openbacktesting/indicators/overlap/vidya.py,sha256=1EKa5NALbCbwKxP_sroww3D_t9LEp5rM0xLgbRA9Lqw,364
|
|
176
|
+
openbacktesting/indicators/overlap/vwap.py,sha256=E-9hQsqJMz7oiYEltRcnxsPAqW6QFfMA1qTIQpkhp28,393
|
|
177
|
+
openbacktesting/indicators/overlap/vwma.py,sha256=ISfgriy0_FvPt-_D-SyRBinR26-HJuXvpyp8ifnqrDY,362
|
|
178
|
+
openbacktesting/indicators/overlap/wcp.py,sha256=P0kz27lvM8hicTd-YKtJzts7sZCtPvzLkg1CYfxGRcE,342
|
|
179
|
+
openbacktesting/indicators/overlap/wma.py,sha256=3AUi_uQ72qQLvthwNebYl7H7uTzTtELWQ7Nxcmz2Xfw,348
|
|
180
|
+
openbacktesting/indicators/overlap/zlma.py,sha256=3uejM48jzAtQzJUsBG53wvBWTpPSUSSSUMjhgCa9iek,362
|
|
181
|
+
openbacktesting/indicators/performance/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
182
|
+
openbacktesting/indicators/performance/drawdown.py,sha256=q9ePinujoWX8ja2c_uPpzVT4qeISCMJrVGhddE43BxY,470
|
|
183
|
+
openbacktesting/indicators/performance/log_return.py,sha256=hEcoAAXmT56alzpPCiKGNaoDAgj9EsqIHy3hkBgWE4I,408
|
|
184
|
+
openbacktesting/indicators/performance/percent_return.py,sha256=hHkmnwHTemRdtucwIE_ZeySmNHvS3GL5oJKWeXwguyM,428
|
|
185
|
+
openbacktesting/indicators/statistics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
186
|
+
openbacktesting/indicators/statistics/beta.py,sha256=WYTqQp_eWxFeEcoxERFf4gt5uSuyBJEE8SH_YGONIJY,374
|
|
187
|
+
openbacktesting/indicators/statistics/correl.py,sha256=in2fj3xWj2p2giUNpsH8VNGYefn4QoziA_t3_-1hbkY,384
|
|
188
|
+
openbacktesting/indicators/statistics/entropy.py,sha256=gENEgYriWNmsl6-CP22ScfhGnP479RekQYdJPUUf0Jg,374
|
|
189
|
+
openbacktesting/indicators/statistics/kurtosis.py,sha256=fEuH3gUggQFZazB7s60ZVSu_oGud6RvfwBWDInnnzvE,362
|
|
190
|
+
openbacktesting/indicators/statistics/mad.py,sha256=5HYceQq43s3tgmVOlmvSfLxmxpFzlp88qJ_VHORofDo,337
|
|
191
|
+
openbacktesting/indicators/statistics/md.py,sha256=AiAeUNxm7nGZfmbcqpUljJQcTf3dsXj9m7F5af7GuQw,332
|
|
192
|
+
openbacktesting/indicators/statistics/median.py,sha256=oBCfnTTif16Km9hSwABcV_1FiWx5r3zzD58tJAi2kuA,352
|
|
193
|
+
openbacktesting/indicators/statistics/mode.py,sha256=juT37ywjX9WQzBoh_wE8JdIrdE5VP1ysDdhIeOSb9VU,1514
|
|
194
|
+
openbacktesting/indicators/statistics/quantile.py,sha256=lxsClHfn0YrgAPoqnQRBP5D4ixRPvxH-yf6I9_d7XVs,370
|
|
195
|
+
openbacktesting/indicators/statistics/skew.py,sha256=1wyrNTn-ZQrkH4G8knXHWsS6XgfiwgkMH79wL16Kg80,342
|
|
196
|
+
openbacktesting/indicators/statistics/stderr.py,sha256=7JFwccw9hYGzNRqA9o3cPAumpey1NSWepqa0lVuxRSg,369
|
|
197
|
+
openbacktesting/indicators/statistics/stdev.py,sha256=PhLDVlN4AqJCUpW_91xENaRPXMvJkRZZaG4Wi57_EL8,364
|
|
198
|
+
openbacktesting/indicators/statistics/variance.py,sha256=kkjWpvB_XqVA6KUP7lW0C8mPveT9fo_zbefLqlE7CUo,379
|
|
199
|
+
openbacktesting/indicators/statistics/zscore.py,sha256=9Jbwe7FLlatSvK_z1hpNZ5-w1LeTzRJOnmjoRsSjzvI,366
|
|
200
|
+
openbacktesting/indicators/trend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
201
|
+
openbacktesting/indicators/trend/adx.py,sha256=k94gWtLoRZjTxXZhnDTwznCFt1Ea7vioCxz73tyAaWQ,684
|
|
202
|
+
openbacktesting/indicators/trend/adxr.py,sha256=RbPpfcBPpvh4LcO0NAYy4L-dEQlBFqivHoidrwJvR6c,690
|
|
203
|
+
openbacktesting/indicators/trend/amat.py,sha256=ZVTec0PwHbdjj-Z0TPmk65q7_x4ULAdur0__sxiBc2c,585
|
|
204
|
+
openbacktesting/indicators/trend/aroon.py,sha256=HSyY-Uibcu5-1yBq0131Ok7f2xcBkg3tyMWA6J85xQc,535
|
|
205
|
+
openbacktesting/indicators/trend/atr_stop.py,sha256=kbedmBMm0B1v2MjQUcTupH2puEQHjysbhyfbwY2_gCU,1331
|
|
206
|
+
openbacktesting/indicators/trend/chop.py,sha256=lhBB1C_7p42WpF4QR_dIWI5Tl7aonL8NgSgJnuOoKGg,536
|
|
207
|
+
openbacktesting/indicators/trend/cksp.py,sha256=rkQpfqQMnvHOzpl2pAKqEu-lhD56-KvaVyxxs7pZam4,525
|
|
208
|
+
openbacktesting/indicators/trend/cpr.py,sha256=ufmK_bYTVXpMFqghIo_udUWxAC3sf7z7H-1iYVSaIwc,1241
|
|
209
|
+
openbacktesting/indicators/trend/decay.py,sha256=_DNcEJO4hd4FLP4HkDbGKeGm2LqOH4OFaAIM-6wovjw,376
|
|
210
|
+
openbacktesting/indicators/trend/decreasing.py,sha256=VAhKAagH9myKv-d6hPtIN3Z7zgAmKXc8AA3XJOauFqk,519
|
|
211
|
+
openbacktesting/indicators/trend/dpo.py,sha256=ik8nBIec9pCJbXejxwIHzhXkfUIPWPS7EpMkHoK22pg,407
|
|
212
|
+
openbacktesting/indicators/trend/dx.py,sha256=ndGvtGD6Lll1bVqyg88DxIx0NQVP2WOu3AO3TBXpGlg,495
|
|
213
|
+
openbacktesting/indicators/trend/edecay.py,sha256=MUDo1FIPvzgKDTpWBE5WTOoDj_XmFWarOApGFIKyUVE,347
|
|
214
|
+
openbacktesting/indicators/trend/increasing.py,sha256=oTfkbzvLUUP24mEdnbJ6ts7Xl2DkKeEklNDfZ1DABtA,519
|
|
215
|
+
openbacktesting/indicators/trend/long_run.py,sha256=DQly7A7EFftB8WycsN_y933kPgjdjxohfk-9N1Tm-gM,371
|
|
216
|
+
openbacktesting/indicators/trend/minus_dm.py,sha256=m-qk0Y53BDkRMiI4pDyesmJ4gPFjHVqoskxXMI4htKA,388
|
|
217
|
+
openbacktesting/indicators/trend/pivot_points.py,sha256=hZe1RADZC-JJxMg8wEIRjL7FnKyVevudNsq19euTQ1Y,3491
|
|
218
|
+
openbacktesting/indicators/trend/pivothigh.py,sha256=-RK8uMNy248cDenyNJqOpFyANKB4nIe3evM9Qf5vZBY,682
|
|
219
|
+
openbacktesting/indicators/trend/pivotlow.py,sha256=aK-0VcrdyhXC-nCepwqmHxMVI0hTdhDY-d5FzTOn_Ig,679
|
|
220
|
+
openbacktesting/indicators/trend/plus_dm.py,sha256=o6_fD9TlGARbk_QUsvNoDF-Df3FlNtzMhkUg85knXz0,383
|
|
221
|
+
openbacktesting/indicators/trend/pmax.py,sha256=IZLPZHvr8m10ObT0G_2HUeOG9qVzybJDbPt552PYRh0,489
|
|
222
|
+
openbacktesting/indicators/trend/psar.py,sha256=eHieSwVX_UHeuFNibITbQuWazCmLGfMB2jSDU_aqnnc,621
|
|
223
|
+
openbacktesting/indicators/trend/qstick.py,sha256=7vjCQGy8Y0DL-OBP1R5bOICfGlveVj7XOSwMvngPjHI,367
|
|
224
|
+
openbacktesting/indicators/trend/sarext.py,sha256=d8roedWEz66CymGwEcZquinIfwb3tBch9BtytfB8AQo,935
|
|
225
|
+
openbacktesting/indicators/trend/short_run.py,sha256=05adUgDVnlzF-x3K6Nq19lLBUxtdSU3XjB1kkNJsNog,376
|
|
226
|
+
openbacktesting/indicators/trend/tsignals.py,sha256=OIV3eeCqB7V-R7kwup-GDtOcBaMahzwkVO4NQj79E2w,680
|
|
227
|
+
openbacktesting/indicators/trend/ttm_trend.py,sha256=bDkmdbWytIS4n11Ksv9P2YnOkkC6RPFOmJixUrKVlRM,469
|
|
228
|
+
openbacktesting/indicators/trend/vhf.py,sha256=tW91cn09SKW7V46kwMxbs-WBE4wE_eE_Bwfc9AfCzLM,352
|
|
229
|
+
openbacktesting/indicators/trend/volatility_stop.py,sha256=4dYHWOy6MhnJ_qlYseR1WAURHcwOSZiLBr83HNlcTC0,1363
|
|
230
|
+
openbacktesting/indicators/trend/vortex.py,sha256=EZmjA9HSEhWsxV3PoMt3JKdziwWiEeOFqs3OuS2lFMY,514
|
|
231
|
+
openbacktesting/indicators/trend/xsignals.py,sha256=fLge_pl53tPxiDJF3SHiNl7XwYBIxPncS-KqwZWAMcI,746
|
|
232
|
+
openbacktesting/indicators/utility/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
233
|
+
openbacktesting/indicators/utility/barssince.py,sha256=bOzp8k4vpWE7uds_3H-9qbDtsnNW_QVkR0YT6qE382w,607
|
|
234
|
+
openbacktesting/indicators/utility/change.py,sha256=o1OCTdp6uPNF7vR11Rq2E86NtooA2zI2hl4H7fiG7vs,168
|
|
235
|
+
openbacktesting/indicators/utility/cross.py,sha256=oPQv2DjD3H_73x4dGLkxCEX7WJ2nbosqtADMbC088Xo,397
|
|
236
|
+
openbacktesting/indicators/utility/crossover.py,sha256=bW1bbj8XR-D74GuXkOU5MnP2nKfmvw6tuT1m12oe6sw,361
|
|
237
|
+
openbacktesting/indicators/utility/crossunder.py,sha256=-0D1B-9vFbFPbDvf3MJt6_NeOvERpCsh5Rf2xqXn5co,367
|
|
238
|
+
openbacktesting/indicators/utility/cum.py,sha256=AB2iQ2enpRSb2Tfatqg19BMHFjXXLjva5bG3rbY94x0,150
|
|
239
|
+
openbacktesting/indicators/utility/falling.py,sha256=J8qmRxgecZg21r76Fisok3qwnhclVtG-06avoHVkvQs,318
|
|
240
|
+
openbacktesting/indicators/utility/highest.py,sha256=vUSHPwJCwboZpkjW1c5BrFrbt7-OV45McJw-__lSFzM,179
|
|
241
|
+
openbacktesting/indicators/utility/highestbars.py,sha256=16WR8v8hs3PYahRrIkvxVu7OG1S2LsQYZWluLXYEf8M,809
|
|
242
|
+
openbacktesting/indicators/utility/lowest.py,sha256=NKwJjBeijfBk0Zk2PvPNTvyufnJDzkeUPupSusp4YP8,177
|
|
243
|
+
openbacktesting/indicators/utility/lowestbars.py,sha256=OWeq6bvCr8K2H-OsLv3tIO0UW0juV3PZs9LsKBotMeo,807
|
|
244
|
+
openbacktesting/indicators/utility/percentile_linear_interpolation.py,sha256=tYXnwjZl9afMlA3b7f8UHEFAZ4Dq-y5oqpmJDmcS3Ik,303
|
|
245
|
+
openbacktesting/indicators/utility/percentile_nearest_rank.py,sha256=dLGdhERUsX2Ca64T4H3UKokDvSx5XLQzetxVzWyvq3Q,409
|
|
246
|
+
openbacktesting/indicators/utility/percentrank.py,sha256=G7Nu_Avso1J6W7urWJ4satqogzGV-GPGh2uCqRAJ2M0,218
|
|
247
|
+
openbacktesting/indicators/utility/range.py,sha256=o22H65gVzYFjPeLDZ94sBfv5yTaupVSrmUWXvzSCphU,212
|
|
248
|
+
openbacktesting/indicators/utility/rising.py,sha256=h9EaKN8VELW9ci4o244V9PU2ZmO7po28g6CHibtFNf0,316
|
|
249
|
+
openbacktesting/indicators/utility/rolling_count.py,sha256=45LUHx1dA1yLUeqtcPND5eEHETzGa_Tiu-cZmv9Wwwo,299
|
|
250
|
+
openbacktesting/indicators/utility/rolling_sum.py,sha256=d5nSHR-f-XlEqP8rS1iEP9SaDDqHRg5MRbtL_O31IRc,187
|
|
251
|
+
openbacktesting/indicators/utility/running_max.py,sha256=2Zovmqey5oMJ2cE_fCCTGUzKiezGt_MmFmJG3w2nHDw,166
|
|
252
|
+
openbacktesting/indicators/utility/running_min.py,sha256=D-P6uMHNPLPdTalLdhIAnUvU40VtiaLbkIBXb5Zi154,166
|
|
253
|
+
openbacktesting/indicators/utility/shift.py,sha256=sR2ew3tnCFG6hmA8YRKRvUH3-VrX1bGjMNEd0yKs7eE,167
|
|
254
|
+
openbacktesting/indicators/utility/valuewhen.py,sha256=pOZAM_HPLFx6EufRSCupH-lYku6n0vRcPEBgONhPA5E,767
|
|
255
|
+
openbacktesting/indicators/volatility/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
256
|
+
openbacktesting/indicators/volatility/aberration.py,sha256=Of11ujXqAKZ0OUPafeIe07Ge-w0plRJZStYMJuZTCnk,700
|
|
257
|
+
openbacktesting/indicators/volatility/accbands.py,sha256=stQNCIWdz54f6-WmyXWc70PgGnzYT2lpyz2c5oICkOw,609
|
|
258
|
+
openbacktesting/indicators/volatility/adr.py,sha256=XR8DhgJ96CuLhqvIbd6nv0LrMCwEnWRmgfrDl4be3vk,214
|
|
259
|
+
openbacktesting/indicators/volatility/atr.py,sha256=zpw-YPx9O8DJQ-L21ogbL4KdRsu3L9TEomXLoOw71VE,425
|
|
260
|
+
openbacktesting/indicators/volatility/avolume.py,sha256=kO9QF94dGMoXSQwDymBlOlzO_2s3wa-VByW81eksZKM,357
|
|
261
|
+
openbacktesting/indicators/volatility/bbands.py,sha256=Bn-I0BPzDvu_yltuj1ByZjb0wSEka8JvZqIM4FHh0p4,665
|
|
262
|
+
openbacktesting/indicators/volatility/ce.py,sha256=4HjgARSCJeiLNynTqR298eMdd_scITp_fVa-NEL2GyI,623
|
|
263
|
+
openbacktesting/indicators/volatility/cvi.py,sha256=sLO0vwFDuGR9GiLUVIPTXtoUUk-frya4b8KFuEAii0I,348
|
|
264
|
+
openbacktesting/indicators/volatility/donchian.py,sha256=XoOgEZN91KhvQg3KX0ze2N_pnvaaX2LIEpUDqtTXVMs,654
|
|
265
|
+
openbacktesting/indicators/volatility/hvol.py,sha256=PyOfM8on9IDsJot78bSFpxM1GwPxV8wTIzD5jutG9xs,386
|
|
266
|
+
openbacktesting/indicators/volatility/hwc.py,sha256=sxeR4GpSl-ylsTsf7VF4NgPOWHX6YixQcnHXfJtsmAQ,613
|
|
267
|
+
openbacktesting/indicators/volatility/kc.py,sha256=zau9uUC9NoVGGJEi4JB2BlwgF9YYl1ak8kxV8VsxLSs,747
|
|
268
|
+
openbacktesting/indicators/volatility/massi.py,sha256=-dDV_0lOgctD8unuKWYXCMYmVAaciP0RQ6kC5F9FR1w,369
|
|
269
|
+
openbacktesting/indicators/volatility/natr.py,sha256=L8SL6opNlUkPLLzNO80C34pD8B2MtlnSMxcLCoj88MU,510
|
|
270
|
+
openbacktesting/indicators/volatility/pdist.py,sha256=pJOUm5wdYPWky0PkeMmpqf71UWOU0qHqz3nsq9Op9vY,395
|
|
271
|
+
openbacktesting/indicators/volatility/rvi.py,sha256=RmOXlTIwwaEarpe1qL--0Jvs3nn7BKI2GTb49TsBBnA,570
|
|
272
|
+
openbacktesting/indicators/volatility/starc.py,sha256=eyVQ67TFh6fqhELtBMHSb6LcUL6szcWVeFt8GbHgFg4,403
|
|
273
|
+
openbacktesting/indicators/volatility/thermo.py,sha256=DEahtfkWlqYAVOOgHng4X1_oKiYE5Y-FZzq5muzZzuk,832
|
|
274
|
+
openbacktesting/indicators/volatility/true_range.py,sha256=JgkYrFAZRq1g4ZHrjSyTsaX5wwcCyEpQo0-tHpXbcro,1147
|
|
275
|
+
openbacktesting/indicators/volatility/ui.py,sha256=NAyxdo5_a8EPdSCRWHauBJcGQczknNv1b-klZ2wBk4o,355
|
|
276
|
+
openbacktesting/indicators/volume/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
277
|
+
openbacktesting/indicators/volume/ad.py,sha256=-QRyIxj21HccAtYCRFKg0E5L7edw1OfAqXFVa7G8Gfc,379
|
|
278
|
+
openbacktesting/indicators/volume/adosc.py,sha256=7pZh6hp0JBFCJu6TmfOSsG2gHrnuEqZxt1--L4x_gG4,499
|
|
279
|
+
openbacktesting/indicators/volume/aobv.py,sha256=m53RSmD0J-4_21mLD-mdf7v2k1ucv81ksl9lT93zRAU,867
|
|
280
|
+
openbacktesting/indicators/volume/cmf.py,sha256=qsPBDZj2RVdQM5wtxIOmO_h1EtsdQI9Hn-EdXk2pqGg,421
|
|
281
|
+
openbacktesting/indicators/volume/efi.py,sha256=C40DVMIrFT3j3aT1GmnNUKbHussiGYUHhjRzA-HpVtU,413
|
|
282
|
+
openbacktesting/indicators/volume/emv.py,sha256=okOzhLVIZG5HKUvlJ-gjizKbp4Q-lDh0iOwh36GJXLM,364
|
|
283
|
+
openbacktesting/indicators/volume/eom.py,sha256=gteOluIebawphISIQDUL2pDG2atkzWXY6Mo8oQb1QhM,504
|
|
284
|
+
openbacktesting/indicators/volume/iii.py,sha256=acSg4JMiVJBvQiW2IxCvR4Byx8z6ucVA-ETFxTQd4YQ,287
|
|
285
|
+
openbacktesting/indicators/volume/kvo.py,sha256=OVFQL66MHTAH4GvPZJ3jRDj7jDNRqPg1qkj3P0OKNZQ,690
|
|
286
|
+
openbacktesting/indicators/volume/marketfi.py,sha256=YcRpxQzU3u0ICX4TsihcFKoL10P7bQd_U1sFWD6TOds,369
|
|
287
|
+
openbacktesting/indicators/volume/mfi.py,sha256=nrKPbuf1XY5ORnKkKCf6xZIjIXujpjyWp1ziDanih6U,421
|
|
288
|
+
openbacktesting/indicators/volume/nvi.py,sha256=rcKbk_F1R-j4iCwKTzuR-QnnOubYVln3FROln_BfbWo,862
|
|
289
|
+
openbacktesting/indicators/volume/obv.py,sha256=6oFeW1vKbZVQyh-28bB-uOaXZ-ABmeBUL5J2iV7AgwA,333
|
|
290
|
+
openbacktesting/indicators/volume/pvi.py,sha256=UmFNmj0TvdDt1ylJmpLV8C0jGwkLbMlq7aVbiFyi4pA,862
|
|
291
|
+
openbacktesting/indicators/volume/pvol.py,sha256=n0spbLb6JuDNXBg7P66bAIF2R-jjT1ljp72TeCntMck,338
|
|
292
|
+
openbacktesting/indicators/volume/pvr.py,sha256=3g95elu7Wtibj2zz514wdc4EF74H9gkyO9_BsJbmCB8,333
|
|
293
|
+
openbacktesting/indicators/volume/pvt.py,sha256=DiE-3gS6noZKes_CHWtJQJ9s1O1FBrDdYpztl0NEdIc,353
|
|
294
|
+
openbacktesting/indicators/volume/rvol.py,sha256=mWVeax3uwyz4UK9mGbBWW-rYFw6rqrVzAYSyaaGzNsw,251
|
|
295
|
+
openbacktesting/indicators/volume/vfi.py,sha256=xFcBmQHDpwmiWaxeaGLWbkA3GvmfKUzMFEZbo3flJ3k,479
|
|
296
|
+
openbacktesting/indicators/volume/vosc.py,sha256=SgDixTmVevcDLdpVC5K3FPyGeIzw5RRCo9avTxC21VM,352
|
|
297
|
+
openbacktesting/indicators/volume/wad.py,sha256=sm8rcz48eduP1VTKfW_2-_mCB2apOg2jmDLg5lUqm2g,341
|
|
298
|
+
openbacktesting/indicators/volume/wvad.py,sha256=52MTXahFvp2Kcb6CT4Fem2JhSRjh_DU1FmbuVPpT4R0,280
|
|
299
|
+
openbacktesting/optimizer/__init__.py,sha256=KIKPTWpYuNShrxUfRXsU4OFcMIpPiqrt1Tp4ro6BTTs,636
|
|
300
|
+
openbacktesting/optimizer/_semantics.py,sha256=5QSZND1ph3A8TzEwcDTM7ZpUdlQr3zfjqH6FRa9HLwE,6957
|
|
301
|
+
openbacktesting/optimizer/identity.py,sha256=vebaGakqTJtNxjXvu2b-0RYYrY-PjqWVZ2xPDFmaklw,1848
|
|
302
|
+
openbacktesting/optimizer/models.py,sha256=x-06ITVhnWswazHv2eFeOWVzICZYZck9PPJ1-xwB2nc,2795
|
|
303
|
+
openbacktesting/optimizer/plan.py,sha256=z2xIM2FUptPSNd7dwkfQNYVmlAE2KDh7abtDFAU44Tc,5593
|
|
304
|
+
openbacktesting/optimizer/portfolio-result.schema.json,sha256=zjkv_6UIR-v8eWHajUl2G0fRJ0lPN3duk5K_dedQdxw,153837
|
|
305
|
+
openbacktesting/optimizer/query.py,sha256=2lGUqHv6mDazJmJ2k6GqFedlRKcg-KFDWnWuPujbU64,11015
|
|
306
|
+
openbacktesting/optimizer/runner.py,sha256=RNmzAhsRcQEmQgclbdRMgeOqlPXM1nWyDvEL_mJw1Bw,4482
|
|
307
|
+
openbacktesting/optimizer/storage.py,sha256=GpytDQWrQT9_boGKE_uSzsSkS-4J8MsNXR0TwUNv4tA,11005
|
|
308
|
+
openbacktesting/optimizer/validation.py,sha256=CC2zIahB9E3SRlC-SPD_lfUrwPp7QG_PRCBCmxfySc8,2267
|
|
309
|
+
openbacktesting/plotting/__init__.py,sha256=XRumFV6Bk0mRC9zoUkPhEdjVx9oCAF9Gpgjd5zfRIHU,519
|
|
310
|
+
openbacktesting/plotting/collector.py,sha256=uWUv8wMIduiUNdTcXiOFUOyKvuDVq3Z4yEq7Tf15xIk,19305
|
|
311
|
+
openbacktesting/plotting/encoding.py,sha256=U4xnJef1SE2BZifyM596rJsOgNnv2VeuVORIICmrS4E,3390
|
|
312
|
+
openbacktesting/plotting/types.py,sha256=IudfEXL12ZcdJ_6t8jSDwGGbOEz3x03sawmQFlA-6sg,2484
|
|
313
|
+
openbacktesting/portfolio/__init__.py,sha256=F1rfiU4Hr9m5jnsjWeHJEJBGuk7aI0y0kyF_X6Ks4Vk,620
|
|
314
|
+
openbacktesting/portfolio/analysis.py,sha256=kYmKX6ilVkU64VSEygdJom4iwFpVAJRGsbFJygOzq1w,8849
|
|
315
|
+
openbacktesting/portfolio/builder.py,sha256=uLxwWpKlpfDBlUM-GF5z-es2pfIy7IX4IiFRD0k9lDw,16281
|
|
316
|
+
openbacktesting/portfolio/catalog.json,sha256=zBYKrGjvBXYEKUQSM_pjCclvYi87i_Gp8wo9q71sKlw,44896
|
|
317
|
+
openbacktesting/portfolio/helpers.py,sha256=Lv4fDacMc8LizaN2yoNMxBJ6TJqOmrvpAKhsIz-4kt0,3755
|
|
318
|
+
openbacktesting/portfolio/metrics.py,sha256=FYH-vgVlpo_HA4EvCJVaYVzOxkIxPvogkV6rlKwwH8Y,7286
|
|
319
|
+
openbacktesting/portfolio/models.py,sha256=evFXV2zPmlDEeWDmbVvU__c5C3_v8H7lNcRfMBYdFa0,1873
|
|
320
|
+
openbacktesting/portfolio/periods.py,sha256=hVkG3HDpq1GObKWRpRuetoN8sBxct8bxrddoGMYTvDc,6894
|
|
321
|
+
openbacktesting/portfolio/rates.py,sha256=4AcMltcNebtQ5iKD2XCtxaggHwZz5NtRdYk6gVV7AYs,580
|
|
322
|
+
openbacktesting/portfolio/snapshot.py,sha256=v7LuDGf1G12ett0xYjiHy89z5lSquDZfG-qYb_ZwWjc,3957
|
|
323
|
+
openbacktesting/portfolio/stats.py,sha256=K0xo4KH-G0Y1A5CECiHYlQqfz4TIJUxXHRKgCL-OAO4,11123
|
|
324
|
+
openbacktesting/portfolio/trades.py,sha256=WxHD7bAN7nJL6JD81H8yBA-zIlPObwvJTyiLPvDzLlI,5231
|
|
325
|
+
openbacktesting/portfolio/trading.py,sha256=iGIYopDe_H7xdc07Lwl5blLTCRRdP1JDX2TvlnYcAcI,6963
|
|
326
|
+
openbacktesting/simulation/__init__.py,sha256=pDThA2XTWi-W7L40AKhVircRKDeAvw8IrdFg1uKbpsw,479
|
|
327
|
+
openbacktesting/simulation/collection.py,sha256=F7PEyO0du7Di7abqVManV1M-8QK4zDEMug0nR_GS9tg,283
|
|
328
|
+
openbacktesting/simulation/config.py,sha256=dnR87tHfVItEDqFeKyVl-B2F2oW1sN54Ee9APBqS-ng,10174
|
|
329
|
+
openbacktesting/simulation/core.py,sha256=bacNc18fc5Nek8lUpZurD3Myq4Rvdpj-dA95R2ax4yg,24716
|
|
330
|
+
openbacktesting/simulation/optimization.py,sha256=kyff_vPeJrWjeVSLVdnSMAXEeCBZzv1g0AC_7tGukAE,11054
|
|
331
|
+
openbacktesting/simulation/parallel.py,sha256=AH85r6w3C1oIyktfov4flOzds-l0vfjsIlB6bPeW9EA,5370
|
|
332
|
+
openbacktesting/simulation/variants.py,sha256=mucahZ825uXOGQKjSrMcyIh0_xZOqqrVfuI8dDGhEws,3855
|
|
333
|
+
openbacktesting/strategy/__init__.py,sha256=8loBDhv4xE2SentWYEqQXTU3sl_P8nJI8F-iPU8Mam8,556
|
|
334
|
+
openbacktesting/strategy/bar_state.py,sha256=ftCX2tzBCOSiE6tdBcCoB_Lgfz91VH9YA8HezXbGA6M,391
|
|
335
|
+
openbacktesting/strategy/base.py,sha256=C4dCG-xC8COo23YNYf6HunU9PXiK1IJDVfXh-ZmMaj4,30786
|
|
336
|
+
openbacktesting/strategy/declaration.py,sha256=xgSe1WpyQEePUEHBSejGgktE8gwO6U-rdAOzMjT7oy8,4545
|
|
337
|
+
openbacktesting/strategy/helpers.py,sha256=aU0Ubm6IFNoHtu-B1WiLur_40t3y5MvED021hgw7bhY,7543
|
|
338
|
+
openbacktesting/strategy/inputs.py,sha256=VdVKdVi5BUbNoXkDpfhB2QqOT-fTb4WGUNd-oDvBECU,18975
|
|
339
|
+
openbacktesting/strategy/sizing.py,sha256=pS6CLJ52obzbkNL9_F9eJElID-0VKqcSrBk7rN5RZGE,3055
|
|
340
|
+
openbacktesting/strategy/templates.py,sha256=23UCiuSJATqNaee6nsi8Ngr6pYXj62NiJzGqYo4GeyU,5728
|
|
341
|
+
openbacktesting/test/BTCUSD.csv,sha256=_yU9l4kQgOUib5nYqPM0Yhzs8zxeHY5SeMtXKAJFUtk,8765
|
|
342
|
+
openbacktesting/test/EURUSD.csv,sha256=gel3kFoAbMj7wDTr24PJmajta6ABkdx-pe9bOG-3SoI,279689
|
|
343
|
+
openbacktesting/test/GOOG.csv,sha256=YOlhpWdJCxV_cYiN-eavs2GQo0pApihqo4mI4jQ_Gxo,97833
|
|
344
|
+
openbacktesting/test/__init__.py,sha256=EMPGxhXiqCGESOA7PXjZHaxJW1Jnxc5R8VTLf-ETjCI,835
|
|
345
|
+
openbacktesting/test/__main__.py,sha256=eEEPHQmkIIZrAxBpb946YVbZDXAQCrc9NH_UVi_bSwU,368
|
|
346
|
+
openbacktesting/test/_test.py,sha256=TpxIHlO8bur-zSFcVoIJ1gbcKh4SPoLG-f6MoGesrpE,51063
|
|
347
|
+
openbacktesting-0.2.0.dist-info/METADATA,sha256=AN-ygxUVRACAD6wtVOm3hVfF6iiJN58jkaUbGZ_GjRw,8999
|
|
348
|
+
openbacktesting-0.2.0.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
|
|
349
|
+
openbacktesting-0.2.0.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
350
|
+
openbacktesting-0.2.0.dist-info/RECORD,,
|