back-trader-python 1.4.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.
- back_trader_python-1.4.0.dist-info/METADATA +1491 -0
- back_trader_python-1.4.0.dist-info/RECORD +465 -0
- back_trader_python-1.4.0.dist-info/WHEEL +5 -0
- back_trader_python-1.4.0.dist-info/licenses/LICENSE +674 -0
- back_trader_python-1.4.0.dist-info/top_level.txt +1 -0
- backtrader/__init__.py +148 -0
- backtrader/_cerebro/__init__.py +5 -0
- backtrader/_cerebro/channel.py +382 -0
- backtrader/_cerebro/execution.py +377 -0
- backtrader/_cerebro/lifecycle.py +143 -0
- backtrader/_cerebro/notifications.py +150 -0
- backtrader/_cerebro/presentation.py +230 -0
- backtrader/_cerebro/registry.py +593 -0
- backtrader/_cerebro/runnext.py +551 -0
- backtrader/_cerebro/runonce.py +142 -0
- backtrader/analyzer.py +594 -0
- backtrader/analyzers/__init__.py +50 -0
- backtrader/analyzers/annualreturn.py +226 -0
- backtrader/analyzers/calmar.py +165 -0
- backtrader/analyzers/drawdown.py +287 -0
- backtrader/analyzers/leverage.py +112 -0
- backtrader/analyzers/logreturnsrolling.py +190 -0
- backtrader/analyzers/periodstats.py +153 -0
- backtrader/analyzers/positions.py +119 -0
- backtrader/analyzers/pyfolio.py +470 -0
- backtrader/analyzers/returns.py +192 -0
- backtrader/analyzers/sharpe.py +307 -0
- backtrader/analyzers/sharpe_ratio_stats.py +534 -0
- backtrader/analyzers/sqn.py +112 -0
- backtrader/analyzers/timereturn.py +192 -0
- backtrader/analyzers/total_value.py +75 -0
- backtrader/analyzers/tradeanalyzer.py +278 -0
- backtrader/analyzers/transactions.py +141 -0
- backtrader/analyzers/vwr.py +245 -0
- backtrader/bokeh/__init__.py +155 -0
- backtrader/bokeh/analyzers/__init__.py +13 -0
- backtrader/bokeh/analyzers/plot.py +192 -0
- backtrader/bokeh/analyzers/recorder.py +181 -0
- backtrader/bokeh/app.py +1094 -0
- backtrader/bokeh/live/__init__.py +11 -0
- backtrader/bokeh/live/client.py +352 -0
- backtrader/bokeh/live/datahandler.py +346 -0
- backtrader/bokeh/plot_adapter.py +200 -0
- backtrader/bokeh/schemes/__init__.py +14 -0
- backtrader/bokeh/schemes/blackly.py +76 -0
- backtrader/bokeh/schemes/scheme.py +150 -0
- backtrader/bokeh/schemes/tradimo.py +82 -0
- backtrader/bokeh/tab.py +125 -0
- backtrader/bokeh/tabs/__init__.py +30 -0
- backtrader/bokeh/tabs/analyzer.py +120 -0
- backtrader/bokeh/tabs/config.py +154 -0
- backtrader/bokeh/tabs/live.py +109 -0
- backtrader/bokeh/tabs/log.py +185 -0
- backtrader/bokeh/tabs/metadata.py +182 -0
- backtrader/bokeh/tabs/performance.py +359 -0
- backtrader/bokeh/tabs/source.py +70 -0
- backtrader/bokeh/utils/__init__.py +8 -0
- backtrader/bokeh/utils/helpers.py +167 -0
- backtrader/bokeh/webapp.py +164 -0
- backtrader/broker.py +478 -0
- backtrader/brokers/__init__.py +36 -0
- backtrader/brokers/bbroker.py +2576 -0
- backtrader/brokers/btapibroker.py +8227 -0
- backtrader/brokers/hft/__init__.py +89 -0
- backtrader/brokers/hft/binance_bbo.py +625 -0
- backtrader/brokers/hft/binance_bbo_compare.py +1398 -0
- backtrader/brokers/hft/examples.py +1228 -0
- backtrader/brokers/hft/exchange.py +380 -0
- backtrader/brokers/hft/latency.py +309 -0
- backtrader/brokers/hft/matching_core.py +572 -0
- backtrader/brokers/hft/queue.py +238 -0
- backtrader/brokers/hft/recorder.py +88 -0
- backtrader/brokers/hft/state.py +138 -0
- backtrader/brokers/impact_models.py +118 -0
- backtrader/brokers/mixbroker.py +895 -0
- backtrader/brokers/tickbroker.py +1991 -0
- backtrader/btrun/__init__.py +12 -0
- backtrader/btrun/btrun.py +1218 -0
- backtrader/cerebro.py +828 -0
- backtrader/channel.py +682 -0
- backtrader/channels/__init__.py +23 -0
- backtrader/channels/bridge.py +186 -0
- backtrader/channels/funding.py +248 -0
- backtrader/channels/live_queue.py +216 -0
- backtrader/channels/live_validator.py +294 -0
- backtrader/channels/orderbook.py +257 -0
- backtrader/channels/tick.py +202 -0
- backtrader/comminfo.py +665 -0
- backtrader/commissions/__init__.py +106 -0
- backtrader/commissions/ctpoption.py +993 -0
- backtrader/configs/account_config_example.yaml +8 -0
- backtrader/dataseries.py +379 -0
- backtrader/errors.py +106 -0
- backtrader/events.py +980 -0
- backtrader/feed.py +1523 -0
- backtrader/feeds/__init__.py +75 -0
- backtrader/feeds/barrier.py +2006 -0
- backtrader/feeds/blaze.py +118 -0
- backtrader/feeds/btapifeed.py +1538 -0
- backtrader/feeds/btcsv.py +203 -0
- backtrader/feeds/chainer.py +114 -0
- backtrader/feeds/cryptohftdata.py +164 -0
- backtrader/feeds/csvgeneric.py +1205 -0
- backtrader/feeds/ctpcohort.py +1051 -0
- backtrader/feeds/influxfeed.py +158 -0
- backtrader/feeds/livefeed.py +71 -0
- backtrader/feeds/mixed_channel.py +108 -0
- backtrader/feeds/mt4csv.py +42 -0
- backtrader/feeds/pandafeed.py +381 -0
- backtrader/feeds/quandl.py +256 -0
- backtrader/feeds/rollover.py +229 -0
- backtrader/feeds/sierrachart.py +30 -0
- backtrader/feeds/vchart.py +162 -0
- backtrader/feeds/vchartcsv.py +84 -0
- backtrader/feeds/vchartfile.py +153 -0
- backtrader/feeds/yahoo.py +399 -0
- backtrader/fillers.py +148 -0
- backtrader/filters/__init__.py +34 -0
- backtrader/filters/bsplitter.py +127 -0
- backtrader/filters/calendardays.py +121 -0
- backtrader/filters/datafiller.py +192 -0
- backtrader/filters/datafilter.py +74 -0
- backtrader/filters/daysteps.py +96 -0
- backtrader/filters/heikinashi.py +63 -0
- backtrader/filters/renko.py +164 -0
- backtrader/filters/session.py +289 -0
- backtrader/flt.py +80 -0
- backtrader/functions.py +960 -0
- backtrader/indicator.py +449 -0
- backtrader/indicators/__init__.py +148 -0
- backtrader/indicators/accdecoscillator.py +110 -0
- backtrader/indicators/aroon.py +300 -0
- backtrader/indicators/atr.py +315 -0
- backtrader/indicators/awesomeoscillator.py +122 -0
- backtrader/indicators/basicops.py +834 -0
- backtrader/indicators/bollinger.py +223 -0
- backtrader/indicators/cci.py +89 -0
- backtrader/indicators/channels_ext.py +83 -0
- backtrader/indicators/contrib/__init__.py +228 -0
- backtrader/indicators/contrib/absolutely_no_lag_lwma.py +28 -0
- backtrader/indicators/contrib/absolutely_no_lag_lwma_color.py +44 -0
- backtrader/indicators/contrib/accumulation_distribution_line.py +92 -0
- backtrader/indicators/contrib/adx_cross_hull_style_indicator.py +249 -0
- backtrader/indicators/contrib/adxdmi.py +34 -0
- backtrader/indicators/contrib/ai_acceleration_deceleration_oscillator.py +34 -0
- backtrader/indicators/contrib/altr_trend_signal_v22.py +85 -0
- backtrader/indicators/contrib/anchored_momentum_line.py +115 -0
- backtrader/indicators/contrib/any_range_cld_tail_indicator.py +82 -0
- backtrader/indicators/contrib/aroon_horn_sign_indicator.py +96 -0
- backtrader/indicators/contrib/aroon_oscillator_sign_alert.py +50 -0
- backtrader/indicators/contrib/arrows_curves_indicator.py +112 -0
- backtrader/indicators/contrib/as_ctrend_indicator.py +143 -0
- backtrader/indicators/contrib/asimmetric_stoch_nr_indicator.py +187 -0
- backtrader/indicators/contrib/atr_normalize_histogram.py +118 -0
- backtrader/indicators/contrib/average_change_candle.py +165 -0
- backtrader/indicators/contrib/bb_squeeze_indicator.py +60 -0
- backtrader/indicators/contrib/bezier_st_dev_indicator.py +135 -0
- backtrader/indicators/contrib/binary_wave_indicator.py +233 -0
- backtrader/indicators/contrib/blau_c_momentum_indicator.py +123 -0
- backtrader/indicators/contrib/blau_cmi_indicator.py +141 -0
- backtrader/indicators/contrib/blau_csi.py +76 -0
- backtrader/indicators/contrib/blau_ergodic.py +53 -0
- backtrader/indicators/contrib/blau_t_stoch_i.py +72 -0
- backtrader/indicators/contrib/blau_ts_stochastic.py +85 -0
- backtrader/indicators/contrib/blau_tvi.py +55 -0
- backtrader/indicators/contrib/brain_trend2_indicator.py +128 -0
- backtrader/indicators/contrib/brain_trend_signal_proxy.py +47 -0
- backtrader/indicators/contrib/brake_parb_indicator.py +85 -0
- backtrader/indicators/contrib/breakout_bars_trend_v2.py +121 -0
- backtrader/indicators/contrib/bsi_indicator.py +87 -0
- backtrader/indicators/contrib/bulls_bears_eyes.py +67 -0
- backtrader/indicators/contrib/bulls_power.py +56 -0
- backtrader/indicators/contrib/bw_wise_man1_signal.py +102 -0
- backtrader/indicators/contrib/bykov_trend_indicator.py +85 -0
- backtrader/indicators/contrib/candle_stop_color.py +46 -0
- backtrader/indicators/contrib/candles_x_smoothed_indicator.py +69 -0
- backtrader/indicators/contrib/candlesticks_bw.py +45 -0
- backtrader/indicators/contrib/caudate_x_period_candle_color.py +56 -0
- backtrader/indicators/contrib/cci_histogram_indicator.py +53 -0
- backtrader/indicators/contrib/cci_woodies_indicator.py +80 -0
- backtrader/indicators/contrib/center_of_gravity_candle_indicator.py +83 -0
- backtrader/indicators/contrib/center_of_gravity_indicator.py +70 -0
- backtrader/indicators/contrib/cg_oscillator.py +40 -0
- backtrader/indicators/contrib/close_line_cci.py +38 -0
- backtrader/indicators/contrib/close_price_fractals.py +47 -0
- backtrader/indicators/contrib/color3rd_gen_xma_indicator.py +122 -0
- backtrader/indicators/contrib/color_bb_candles_indicator.py +108 -0
- backtrader/indicators/contrib/color_coppock_indicator.py +157 -0
- backtrader/indicators/contrib/color_hma.py +71 -0
- backtrader/indicators/contrib/color_j_variation_indicator.py +53 -0
- backtrader/indicators/contrib/color_metro_de_marker_indicator.py +78 -0
- backtrader/indicators/contrib/color_metro_stochastic_indicator.py +93 -0
- backtrader/indicators/contrib/color_metro_wpr_indicator.py +85 -0
- backtrader/indicators/contrib/color_schaff_de_marker_trend_cycle.py +92 -0
- backtrader/indicators/contrib/color_schaff_trend_cycle_indicator.py +203 -0
- backtrader/indicators/contrib/color_step_xccx_indicator.py +193 -0
- backtrader/indicators/contrib/color_x2_ma.py +49 -0
- backtrader/indicators/contrib/color_x_derivative.py +63 -0
- backtrader/indicators/contrib/color_zerolag_de_marker.py +84 -0
- backtrader/indicators/contrib/corrected_average_indicator.py +127 -0
- backtrader/indicators/contrib/darvas_boxes_system.py +73 -0
- backtrader/indicators/contrib/dema_range_channel_color.py +42 -0
- backtrader/indicators/contrib/derivative_indicator.py +95 -0
- backtrader/indicators/contrib/digital_ft01_indicator.py +112 -0
- backtrader/indicators/contrib/digital_macd.py +200 -0
- backtrader/indicators/contrib/donchian_channels_system.py +45 -0
- backtrader/indicators/contrib/dots_indicator.py +93 -0
- backtrader/indicators/contrib/ef_distance_indicator.py +82 -0
- backtrader/indicators/contrib/ema_rsi_va.py +80 -0
- backtrader/indicators/contrib/envelopes_jp_alonso.py +32 -0
- backtrader/indicators/contrib/f2a_ao_indicator.py +120 -0
- backtrader/indicators/contrib/fatl_filter.py +179 -0
- backtrader/indicators/contrib/fibo_candles_indicator.py +78 -0
- backtrader/indicators/contrib/fine_tuning_ma.py +100 -0
- backtrader/indicators/contrib/fisher_org_v1.py +102 -0
- backtrader/indicators/contrib/fisher_org_v1_sign.py +118 -0
- backtrader/indicators/contrib/force_index_ema.py +96 -0
- backtrader/indicators/contrib/force_index_ema_2.py +27 -0
- backtrader/indicators/contrib/forecast_oscilator.py +145 -0
- backtrader/indicators/contrib/fractal_amambk.py +81 -0
- backtrader/indicators/contrib/frama_series.py +84 -0
- backtrader/indicators/contrib/frasm_av2_indicator.py +104 -0
- backtrader/indicators/contrib/go_indicator.py +93 -0
- backtrader/indicators/contrib/hlr_indicator.py +95 -0
- backtrader/indicators/contrib/hma.py +50 -0
- backtrader/indicators/contrib/i4_drfv2.py +34 -0
- backtrader/indicators/contrib/i4_drfv3.py +38 -0
- backtrader/indicators/contrib/i_anch_mom_indicator.py +72 -0
- backtrader/indicators/contrib/i_de_marker_sign_indicator.py +64 -0
- backtrader/indicators/contrib/i_gap_indicator.py +45 -0
- backtrader/indicators/contrib/i_stoch_komposter_indicator.py +77 -0
- backtrader/indicators/contrib/i_trend_indicator.py +125 -0
- backtrader/indicators/contrib/iamma_indicator.py +39 -0
- backtrader/indicators/contrib/indexed_moving_average.py +33 -0
- backtrader/indicators/contrib/instantaneous_trend_filter_indicator.py +51 -0
- backtrader/indicators/contrib/inverse_reaction_indicator.py +41 -0
- backtrader/indicators/contrib/irsi_sign_indicator.py +95 -0
- backtrader/indicators/contrib/iwpr_sign_indicator.py +59 -0
- backtrader/indicators/contrib/j_brain_trend1_sig_indicator.py +233 -0
- backtrader/indicators/contrib/j_tpo_proxy.py +32 -0
- backtrader/indicators/contrib/jma_slope_indicator.py +73 -0
- backtrader/indicators/contrib/kalman_filter_indicator.py +119 -0
- backtrader/indicators/contrib/kalman_filter_line.py +127 -0
- backtrader/indicators/contrib/kama_indicator.py +150 -0
- backtrader/indicators/contrib/karacatica_indicator.py +99 -0
- backtrader/indicators/contrib/kdj_indicator.py +59 -0
- backtrader/indicators/contrib/kwan_ccc_indicator.py +195 -0
- backtrader/indicators/contrib/kwan_nrp_indicator.py +113 -0
- backtrader/indicators/contrib/kwan_rdp_indicator.py +192 -0
- backtrader/indicators/contrib/laguerre_adx_indicator.py +85 -0
- backtrader/indicators/contrib/laguerre_filter_indicator.py +66 -0
- backtrader/indicators/contrib/laguerre_plus_di_proxy.py +57 -0
- backtrader/indicators/contrib/laguerre_roc_indicator.py +81 -0
- backtrader/indicators/contrib/le_man_signal_indicator.py +63 -0
- backtrader/indicators/contrib/linear_reg_slope_v2_indicator.py +136 -0
- backtrader/indicators/contrib/loco_indicator.py +88 -0
- backtrader/indicators/contrib/lrma_indicator.py +185 -0
- backtrader/indicators/contrib/lsma_angle_indicator.py +106 -0
- backtrader/indicators/contrib/ma_rounding_channel_indicator.py +149 -0
- backtrader/indicators/contrib/macd2_indicator.py +61 -0
- backtrader/indicators/contrib/macd_candle_indicator.py +80 -0
- backtrader/indicators/contrib/malr_indicator.py +77 -0
- backtrader/indicators/contrib/momentum_candle_sign_indicator.py +51 -0
- backtrader/indicators/contrib/moving_average_fn_indicator.py +139 -0
- backtrader/indicators/contrib/mt5_stochastic_close_close.py +57 -0
- backtrader/indicators/contrib/muv_nor_diff_cloud_indicator.py +107 -0
- backtrader/indicators/contrib/non_lag_dot_indicator.py +124 -0
- backtrader/indicators/contrib/nrtr_extr_indicator.py +95 -0
- backtrader/indicators/contrib/nrtr_indicator.py +95 -0
- backtrader/indicators/contrib/p_channel_system.py +40 -0
- backtrader/indicators/contrib/percent_envelope.py +37 -0
- backtrader/indicators/contrib/percentage_crossover_channel.py +47 -0
- backtrader/indicators/contrib/pivot_zig_zag_proxy.py +47 -0
- backtrader/indicators/contrib/price_channel_stop_indicator.py +104 -0
- backtrader/indicators/contrib/price_extreme_channel.py +35 -0
- backtrader/indicators/contrib/qqe_cloud_indicator.py +129 -0
- backtrader/indicators/contrib/ravi_indicator.py +40 -0
- backtrader/indicators/contrib/raw_close_close_stochastic.py +74 -0
- backtrader/indicators/contrib/rd_trend_trigger_indicator.py +51 -0
- backtrader/indicators/contrib/renko_level.py +85 -0
- backtrader/indicators/contrib/renko_line_break.py +91 -0
- backtrader/indicators/contrib/rftl_indicator.py +41 -0
- backtrader/indicators/contrib/rkd_indicator.py +53 -0
- backtrader/indicators/contrib/roc2_vg_indicator.py +68 -0
- backtrader/indicators/contrib/rsi_histogram_indicator.py +43 -0
- backtrader/indicators/contrib/rsi_slowdown.py +57 -0
- backtrader/indicators/contrib/rsioma_v2.py +41 -0
- backtrader/indicators/contrib/rvi_histogram_indicator.py +107 -0
- backtrader/indicators/contrib/safe_adx.py +89 -0
- backtrader/indicators/contrib/shared_strategy_indicators.py +1651 -0
- backtrader/indicators/contrib/sidus_indicator.py +105 -0
- backtrader/indicators/contrib/silver_trend_indicator.py +79 -0
- backtrader/indicators/contrib/sliding_range_color.py +56 -0
- backtrader/indicators/contrib/slow_stoch.py +42 -0
- backtrader/indicators/contrib/smoothed_adx_indicator.py +86 -0
- backtrader/indicators/contrib/smoothed_rsi.py +31 -0
- backtrader/indicators/contrib/spearman_rank_correlation_histogram.py +60 -0
- backtrader/indicators/contrib/stalin_indicator.py +152 -0
- backtrader/indicators/contrib/starter_laguerre_filter.py +62 -0
- backtrader/indicators/contrib/step_manrtr_indicator.py +137 -0
- backtrader/indicators/contrib/stochastic_histogram_indicator.py +143 -0
- backtrader/indicators/contrib/t3_alarm_indicator.py +125 -0
- backtrader/indicators/contrib/t3_average.py +76 -0
- backtrader/indicators/contrib/t3_indicator.py +40 -0
- backtrader/indicators/contrib/the20s_v020_signal.py +93 -0
- backtrader/indicators/contrib/three_candles_indicator.py +70 -0
- backtrader/indicators/contrib/three_line_break_indicator.py +64 -0
- backtrader/indicators/contrib/time_line.py +57 -0
- backtrader/indicators/contrib/trading_channel_index_proxy.py +48 -0
- backtrader/indicators/contrib/trend_arrows_indicator.py +109 -0
- backtrader/indicators/contrib/trend_continuation_indicator.py +127 -0
- backtrader/indicators/contrib/trend_intensity_index_proxy.py +51 -0
- backtrader/indicators/contrib/trend_manager_indicator.py +39 -0
- backtrader/indicators/contrib/tri_x_candle_indicator.py +51 -0
- backtrader/indicators/contrib/trigger_line.py +66 -0
- backtrader/indicators/contrib/triple_ema_rate.py +34 -0
- backtrader/indicators/contrib/trvi_indicator.py +194 -0
- backtrader/indicators/contrib/two_pb_ideal_xosma_indicator.py +127 -0
- backtrader/indicators/contrib/ultra_absolutely_no_lag_lwma_color.py +92 -0
- backtrader/indicators/contrib/ultra_wpr_indicator.py +173 -0
- backtrader/indicators/contrib/up_down_candle_strength.py +68 -0
- backtrader/indicators/contrib/vinin_i_trend_indicator.py +139 -0
- backtrader/indicators/contrib/volume_weighted_ma_indicator.py +78 -0
- backtrader/indicators/contrib/volume_weighted_ma_st_dev_indicator.py +111 -0
- backtrader/indicators/contrib/vwap_close_indicator.py +65 -0
- backtrader/indicators/contrib/vwma_candle.py +57 -0
- backtrader/indicators/contrib/vwma_digit_system.py +70 -0
- backtrader/indicators/contrib/wami.py +43 -0
- backtrader/indicators/contrib/wprsi_signal_indicator.py +105 -0
- backtrader/indicators/contrib/x_de_marker_histogram_vol_direct_indicator.py +145 -0
- backtrader/indicators/contrib/x_fisher_indicator.py +64 -0
- backtrader/indicators/contrib/xcci_histogram_vol_direct_indicator.py +56 -0
- backtrader/indicators/contrib/xcci_histogram_vol_indicator.py +85 -0
- backtrader/indicators/contrib/xma_ichimoku.py +163 -0
- backtrader/indicators/contrib/xma_ishimoku_channel_indicator.py +65 -0
- backtrader/indicators/contrib/xma_ishimoku_line.py +68 -0
- backtrader/indicators/contrib/xma_range_bands_indicator.py +107 -0
- backtrader/indicators/contrib/xmacd_indicator.py +70 -0
- backtrader/indicators/contrib/xrsi_de_marker_histogram.py +67 -0
- backtrader/indicators/contrib/xrsi_histogram_vol_direct_indicator.py +52 -0
- backtrader/indicators/contrib/xrsi_histogram_vol_indicator.py +81 -0
- backtrader/indicators/contrib/xrvi_indicator.py +130 -0
- backtrader/indicators/contrib/zero_lag_macd.py +36 -0
- backtrader/indicators/contrib/zig_zag_recent_pivot_signal.py +90 -0
- backtrader/indicators/contrib/zpf_indicator.py +115 -0
- backtrader/indicators/crossover.py +337 -0
- backtrader/indicators/dema.py +175 -0
- backtrader/indicators/demarker.py +270 -0
- backtrader/indicators/deviation.py +284 -0
- backtrader/indicators/directionalmove.py +1071 -0
- backtrader/indicators/dma.py +112 -0
- backtrader/indicators/dpo.py +96 -0
- backtrader/indicators/dv2.py +56 -0
- backtrader/indicators/ema.py +145 -0
- backtrader/indicators/envelope.py +475 -0
- backtrader/indicators/hadelta.py +198 -0
- backtrader/indicators/heikinashi.py +153 -0
- backtrader/indicators/hma.py +153 -0
- backtrader/indicators/hurst.py +151 -0
- backtrader/indicators/ichimoku.py +267 -0
- backtrader/indicators/kama.py +181 -0
- backtrader/indicators/kst.py +159 -0
- backtrader/indicators/lrsi.py +125 -0
- backtrader/indicators/mabase.py +147 -0
- backtrader/indicators/macd.py +322 -0
- backtrader/indicators/momentum.py +267 -0
- backtrader/indicators/moneyflow.py +237 -0
- backtrader/indicators/mt5atr.py +124 -0
- backtrader/indicators/myind.py +179 -0
- backtrader/indicators/obv.py +94 -0
- backtrader/indicators/ols.py +265 -0
- backtrader/indicators/oscillator.py +161 -0
- backtrader/indicators/percentchange.py +83 -0
- backtrader/indicators/percentrank.py +46 -0
- backtrader/indicators/pivotpoint.py +469 -0
- backtrader/indicators/prettygoodoscillator.py +113 -0
- backtrader/indicators/priceops_ext.py +123 -0
- backtrader/indicators/priceoscillator.py +262 -0
- backtrader/indicators/psar.py +212 -0
- backtrader/indicators/rmi.py +69 -0
- backtrader/indicators/rsi.py +440 -0
- backtrader/indicators/sma.py +141 -0
- backtrader/indicators/smma.py +116 -0
- backtrader/indicators/spread.py +54 -0
- backtrader/indicators/stochastic.py +263 -0
- backtrader/indicators/supertrend.py +436 -0
- backtrader/indicators/trend_ext.py +105 -0
- backtrader/indicators/trix.py +202 -0
- backtrader/indicators/tsi.py +155 -0
- backtrader/indicators/ultimateoscillator.py +158 -0
- backtrader/indicators/vortex.py +62 -0
- backtrader/indicators/williams.py +194 -0
- backtrader/indicators/wma.py +103 -0
- backtrader/indicators/zlema.py +135 -0
- backtrader/indicators/zlind.py +104 -0
- backtrader/linebuffer.py +3155 -0
- backtrader/lineiterator.py +2911 -0
- backtrader/lineroot.py +1106 -0
- backtrader/lineseries.py +2559 -0
- backtrader/live_trading/__init__.py +31 -0
- backtrader/live_trading/interface.py +404 -0
- backtrader/mathsupport.py +94 -0
- backtrader/metabase.py +1804 -0
- backtrader/mixins/__init__.py +21 -0
- backtrader/mixins/singleton.py +118 -0
- backtrader/observer.py +106 -0
- backtrader/observers/__init__.py +45 -0
- backtrader/observers/benchmark.py +126 -0
- backtrader/observers/broker.py +184 -0
- backtrader/observers/buysell.py +144 -0
- backtrader/observers/drawdown.py +161 -0
- backtrader/observers/logreturns.py +113 -0
- backtrader/observers/timereturn.py +86 -0
- backtrader/observers/trade_logger.py +2972 -0
- backtrader/observers/tradelogger.py +6 -0
- backtrader/observers/trades.py +258 -0
- backtrader/order.py +1114 -0
- backtrader/parameters.py +2345 -0
- backtrader/plot/__init__.py +54 -0
- backtrader/plot/finance.py +1022 -0
- backtrader/plot/formatters.py +200 -0
- backtrader/plot/locator.py +353 -0
- backtrader/plot/multicursor.py +495 -0
- backtrader/plot/plot.py +2500 -0
- backtrader/plot/plot_plotly.py +1351 -0
- backtrader/plot/scheme.py +253 -0
- backtrader/plot/utils.py +104 -0
- backtrader/position.py +290 -0
- backtrader/position_modes.py +132 -0
- backtrader/profiles.py +254 -0
- backtrader/reports/__init__.py +39 -0
- backtrader/reports/charts.py +371 -0
- backtrader/reports/performance.py +620 -0
- backtrader/reports/reporter.py +660 -0
- backtrader/resamplerfilter.py +1001 -0
- backtrader/signal.py +118 -0
- backtrader/signals/__init__.py +17 -0
- backtrader/sizer.py +114 -0
- backtrader/sizers/__init__.py +26 -0
- backtrader/sizers/fixedsize.py +161 -0
- backtrader/sizers/percents_sizer.py +119 -0
- backtrader/store.py +221 -0
- backtrader/stores/__init__.py +33 -0
- backtrader/stores/btapistore.py +15506 -0
- backtrader/stores/livestore.py +137 -0
- backtrader/stores/vchartfile.py +96 -0
- backtrader/strategy.py +3655 -0
- backtrader/talib.py +280 -0
- backtrader/test_helpers.py +96 -0
- backtrader/timer.py +358 -0
- backtrader/trade.py +442 -0
- backtrader/tradingcal.py +361 -0
- backtrader/utils/__init__.py +68 -0
- backtrader/utils/autodict.py +251 -0
- backtrader/utils/date.py +71 -0
- backtrader/utils/dateintern.py +509 -0
- backtrader/utils/flushfile.py +94 -0
- backtrader/utils/fractal.py +101 -0
- backtrader/utils/get_metrics.py +101 -0
- backtrader/utils/load_data.py +209 -0
- backtrader/utils/log_message.py +998 -0
- backtrader/utils/ordereddefaultdict.py +75 -0
- backtrader/utils/py3.py +296 -0
- backtrader/version.py +21 -0
- backtrader/writer.py +372 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
"""Acceleration/Deceleration Oscillator Module - AC indicator.
|
|
3
|
+
|
|
4
|
+
This module provides the Acceleration/Deceleration Oscillator (AC)
|
|
5
|
+
developed by Bill Williams to measure the acceleration of driving force.
|
|
6
|
+
|
|
7
|
+
Classes:
|
|
8
|
+
AccelerationDecelerationOscillator: AC indicator (alias: AccDeOsc).
|
|
9
|
+
|
|
10
|
+
Example:
|
|
11
|
+
class MyStrategy(bt.Strategy):
|
|
12
|
+
def __init__(self):
|
|
13
|
+
self.ac = bt.indicators.AccDeOsc(self.data)
|
|
14
|
+
|
|
15
|
+
def next(self):
|
|
16
|
+
if self.ac.accde[0] > 0 and self.ac.accde[-1] < 0:
|
|
17
|
+
self.buy()
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
import math
|
|
21
|
+
|
|
22
|
+
from . import Indicator
|
|
23
|
+
from .awesomeoscillator import AwesomeOscillator
|
|
24
|
+
from .sma import SMA
|
|
25
|
+
|
|
26
|
+
__all__ = ["AccelerationDecelerationOscillator", "AccDeOsc"]
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class AccelerationDecelerationOscillator(Indicator):
|
|
30
|
+
"""
|
|
31
|
+
Acceleration/Deceleration Technical Indicator (AC) measures acceleration
|
|
32
|
+
and deceleration of the current driving force. This indicator will change
|
|
33
|
+
the direction before any changes in the driving force, which, it its turn, will
|
|
34
|
+
change its direction before the price.
|
|
35
|
+
|
|
36
|
+
Formula:
|
|
37
|
+
- AcdDecOsc = AwesomeOscillator - SMA(AwesomeOscillator, period)
|
|
38
|
+
|
|
39
|
+
See:
|
|
40
|
+
- https://www.metatrader5.com/en/terminal/help/indicators/bw_indicators/ao
|
|
41
|
+
- https://www.ifcmarkets.com/en/ntx-indicators/ntx-indicators-accelerator-decelerator-oscillator
|
|
42
|
+
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
alias = ("AccDeOsc",)
|
|
46
|
+
lines = ("accde",)
|
|
47
|
+
|
|
48
|
+
params = (
|
|
49
|
+
("period", 5),
|
|
50
|
+
("movav", SMA),
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
plotlines = {"accde": {"_method": "bar", "alpha": 0.50, "width": 1.0}}
|
|
54
|
+
|
|
55
|
+
def __init__(self):
|
|
56
|
+
"""Initialize the AC indicator.
|
|
57
|
+
|
|
58
|
+
Creates an Awesome Oscillator sub-indicator for calculation.
|
|
59
|
+
"""
|
|
60
|
+
super().__init__()
|
|
61
|
+
self.ao = AwesomeOscillator(self.data)
|
|
62
|
+
|
|
63
|
+
def next(self):
|
|
64
|
+
"""Calculate AC for the current bar.
|
|
65
|
+
|
|
66
|
+
Formula: AC = AO - SMA(AO, period)
|
|
67
|
+
"""
|
|
68
|
+
ao_val = self.ao[0]
|
|
69
|
+
period = self.p.period
|
|
70
|
+
|
|
71
|
+
# Calculate SMA of AO
|
|
72
|
+
ao_sum = ao_val
|
|
73
|
+
for i in range(1, period):
|
|
74
|
+
ao_sum += self.ao[-i]
|
|
75
|
+
ao_sma = ao_sum / period
|
|
76
|
+
|
|
77
|
+
self.lines.accde[0] = ao_val - ao_sma
|
|
78
|
+
|
|
79
|
+
def once(self, start, end):
|
|
80
|
+
"""Calculate AC in runonce mode.
|
|
81
|
+
|
|
82
|
+
Calculates AC = AO - SMA(AO, period) for all bars.
|
|
83
|
+
"""
|
|
84
|
+
ao_array = self.ao.lines[0].array
|
|
85
|
+
larray = self.lines.accde.array
|
|
86
|
+
period = self.p.period
|
|
87
|
+
|
|
88
|
+
while len(larray) < end:
|
|
89
|
+
larray.append(float("nan"))
|
|
90
|
+
|
|
91
|
+
for i in range(start, min(end, len(ao_array))):
|
|
92
|
+
ao_val = ao_array[i] if i < len(ao_array) else 0.0
|
|
93
|
+
|
|
94
|
+
if isinstance(ao_val, float) and math.isnan(ao_val):
|
|
95
|
+
larray[i] = float("nan")
|
|
96
|
+
continue
|
|
97
|
+
|
|
98
|
+
if i < period - 1:
|
|
99
|
+
larray[i] = float("nan")
|
|
100
|
+
else:
|
|
101
|
+
ao_sum = 0.0
|
|
102
|
+
for j in range(period):
|
|
103
|
+
idx = i - j
|
|
104
|
+
if idx >= 0 and idx < len(ao_array):
|
|
105
|
+
ao_sum += ao_array[idx]
|
|
106
|
+
ao_sma = ao_sum / period
|
|
107
|
+
larray[i] = ao_val - ao_sma
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
AccDeOsc = AccelerationDecelerationOscillator
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
"""Aroon Indicator Module - Aroon trend indicator.
|
|
3
|
+
|
|
4
|
+
This module provides the Aroon indicator developed by Tushar Chande in 1995
|
|
5
|
+
to identify trend strength and direction.
|
|
6
|
+
|
|
7
|
+
Classes:
|
|
8
|
+
_AroonBase: Base class for Aroon indicators.
|
|
9
|
+
AroonUp: Aroon Up component.
|
|
10
|
+
AroonDown: Aroon Down component.
|
|
11
|
+
AroonUpDown: Combined Aroon Up and Down (alias: AroonIndicator).
|
|
12
|
+
AroonOscillator: Aroon Oscillator (alias: AroonOsc).
|
|
13
|
+
AroonUpDownOscillator: Combined AroonUpDown and Oscillator (alias: AroonUpDownOsc).
|
|
14
|
+
|
|
15
|
+
Example:
|
|
16
|
+
class MyStrategy(bt.Strategy):
|
|
17
|
+
def __init__(self):
|
|
18
|
+
self.aroon = bt.indicators.AroonUpDown(self.data, period=14)
|
|
19
|
+
|
|
20
|
+
def next(self):
|
|
21
|
+
if self.aroon.aroonup[0] > self.aroon.aroondown[0]:
|
|
22
|
+
self.buy()
|
|
23
|
+
elif self.aroon.aroonup[0] < self.aroon.aroondown[0]:
|
|
24
|
+
self.sell()
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
from . import FindFirstIndexHighest, FindFirstIndexLowest, Indicator
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class _AroonBase(Indicator):
|
|
31
|
+
"""
|
|
32
|
+
Base class which does the calculation of the AroonUp/AroonDown values and
|
|
33
|
+
defines the common parameters.
|
|
34
|
+
|
|
35
|
+
It uses the class attributes _up and _down (boolean flags) to decide which
|
|
36
|
+
value has to be calculated.
|
|
37
|
+
|
|
38
|
+
Values are not assigned to lines but rather stored in the "up" and "down"
|
|
39
|
+
instance variables, which can be used by subclasses to for assignment or
|
|
40
|
+
further calculations
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
_up = False
|
|
44
|
+
_down = False
|
|
45
|
+
|
|
46
|
+
params = (
|
|
47
|
+
("period", 14),
|
|
48
|
+
("upperband", 70),
|
|
49
|
+
("lowerband", 30),
|
|
50
|
+
)
|
|
51
|
+
plotinfo = {"plotymargin": 0.05, "plotyhlines": [0, 100]}
|
|
52
|
+
|
|
53
|
+
def _plotlabel(self):
|
|
54
|
+
plabels = [self.p.period]
|
|
55
|
+
return plabels
|
|
56
|
+
|
|
57
|
+
def _plotinit(self):
|
|
58
|
+
self.plotinfo.plotyhlines += [self.p.lowerband, self.p.upperband]
|
|
59
|
+
|
|
60
|
+
def __init__(self):
|
|
61
|
+
"""Initialize the Aroon base indicator.
|
|
62
|
+
|
|
63
|
+
Sets up Aroon Up/Down calculations based on _up and _down flags.
|
|
64
|
+
"""
|
|
65
|
+
# Look backwards period + 1 for current data because the formula mus
|
|
66
|
+
# produce values between 0 and 100 and can only do that if the
|
|
67
|
+
# calculated hhidx/llidx go from 0 to period (hence period + 1 values)
|
|
68
|
+
idxperiod = self.p.period + 1
|
|
69
|
+
|
|
70
|
+
if self._up:
|
|
71
|
+
hhidx = FindFirstIndexHighest(self.data.high, period=idxperiod)
|
|
72
|
+
self.up = (100.0 / self.p.period) * (self.p.period - hhidx)
|
|
73
|
+
|
|
74
|
+
if self._down:
|
|
75
|
+
llidx = FindFirstIndexLowest(self.data.low, period=idxperiod)
|
|
76
|
+
self.down = (100.0 / self.p.period) * (self.p.period - llidx)
|
|
77
|
+
|
|
78
|
+
super().__init__()
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
class AroonUp(_AroonBase):
|
|
82
|
+
"""
|
|
83
|
+
This is the AroonUp from the indicator AroonUpDown developed by Tushar
|
|
84
|
+
Chande in 1995.
|
|
85
|
+
|
|
86
|
+
Formula:
|
|
87
|
+
- up = 100 * (period - distance to the highest high) / period
|
|
88
|
+
|
|
89
|
+
Note:
|
|
90
|
+
The lines oscillate between 0 and 100. That means that the "distance" to
|
|
91
|
+
the last highest or lowest must go from 0 to period so that the formula
|
|
92
|
+
can yield 0 and 100.
|
|
93
|
+
|
|
94
|
+
Hence, the lookback period is period + 1, because the current bar is also
|
|
95
|
+
taken into account.
|
|
96
|
+
And therefore, this indicator needs an effective
|
|
97
|
+
lookback period of period + 1.
|
|
98
|
+
|
|
99
|
+
See:
|
|
100
|
+
- http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:aroon
|
|
101
|
+
"""
|
|
102
|
+
|
|
103
|
+
_up = True
|
|
104
|
+
|
|
105
|
+
lines = ("aroonup",)
|
|
106
|
+
|
|
107
|
+
def __init__(self):
|
|
108
|
+
"""Initialize the Aroon Up indicator.
|
|
109
|
+
|
|
110
|
+
Calculates Aroon Up values using parent class logic.
|
|
111
|
+
"""
|
|
112
|
+
super().__init__()
|
|
113
|
+
|
|
114
|
+
def next(self):
|
|
115
|
+
"""Calculate Aroon Up for the current bar.
|
|
116
|
+
|
|
117
|
+
Copies the up value from the parent calculation.
|
|
118
|
+
"""
|
|
119
|
+
self.lines.aroonup[0] = self.up[0]
|
|
120
|
+
|
|
121
|
+
def once(self, start, end):
|
|
122
|
+
"""Calculate Aroon Up in runonce mode.
|
|
123
|
+
|
|
124
|
+
Copies up values across all bars.
|
|
125
|
+
"""
|
|
126
|
+
up_array = self.up.lines[0].array
|
|
127
|
+
aroonup_array = self.lines.aroonup.array
|
|
128
|
+
|
|
129
|
+
while len(aroonup_array) < end:
|
|
130
|
+
aroonup_array.append(float("nan"))
|
|
131
|
+
|
|
132
|
+
for i in range(start, min(end, len(up_array))):
|
|
133
|
+
aroonup_array[i] = up_array[i] if i < len(up_array) else 0.0
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
class AroonDown(_AroonBase):
|
|
137
|
+
"""
|
|
138
|
+
This is the AroonDown from the indicator AroonUpDown developed by Tushar
|
|
139
|
+
Chande in 1995.
|
|
140
|
+
|
|
141
|
+
Formula:
|
|
142
|
+
- down = 100 * (period - distance to the lowest low) / period
|
|
143
|
+
|
|
144
|
+
Note:
|
|
145
|
+
The lines oscillate between 0 and 100. That means that the "distance" to
|
|
146
|
+
the last highest or lowest must go from 0 to period so that the formula
|
|
147
|
+
can yield 0 and 100.
|
|
148
|
+
|
|
149
|
+
Hence, the lookback period is period + 1, because the current bar is also
|
|
150
|
+
taken into account.
|
|
151
|
+
And therefore, this indicator needs an effective
|
|
152
|
+
lookback period of period + 1.
|
|
153
|
+
|
|
154
|
+
See:
|
|
155
|
+
- http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:aroon
|
|
156
|
+
"""
|
|
157
|
+
|
|
158
|
+
_down = True
|
|
159
|
+
|
|
160
|
+
lines = ("aroondown",)
|
|
161
|
+
|
|
162
|
+
def __init__(self):
|
|
163
|
+
"""Initialize the Aroon Down indicator.
|
|
164
|
+
|
|
165
|
+
Calculates Aroon Down values using parent class logic.
|
|
166
|
+
"""
|
|
167
|
+
super().__init__()
|
|
168
|
+
|
|
169
|
+
def next(self):
|
|
170
|
+
"""Calculate Aroon Down for the current bar.
|
|
171
|
+
|
|
172
|
+
Copies the down value from the parent calculation.
|
|
173
|
+
"""
|
|
174
|
+
self.lines.aroondown[0] = self.down[0]
|
|
175
|
+
|
|
176
|
+
def once(self, start, end):
|
|
177
|
+
"""Calculate Aroon Down in runonce mode.
|
|
178
|
+
|
|
179
|
+
Copies down values across all bars.
|
|
180
|
+
"""
|
|
181
|
+
down_array = self.down.lines[0].array
|
|
182
|
+
aroondown_array = self.lines.aroondown.array
|
|
183
|
+
|
|
184
|
+
while len(aroondown_array) < end:
|
|
185
|
+
aroondown_array.append(float("nan"))
|
|
186
|
+
|
|
187
|
+
for i in range(start, min(end, len(down_array))):
|
|
188
|
+
aroondown_array[i] = down_array[i] if i < len(down_array) else 0.0
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
class AroonUpDown(AroonUp, AroonDown):
|
|
192
|
+
"""
|
|
193
|
+
Developed by Tushar Chande in 1995.
|
|
194
|
+
|
|
195
|
+
It tries to determine if a trend exists or not by calculating how far away
|
|
196
|
+
within a given period the last highs/lows are (AroonUp/AroonDown)
|
|
197
|
+
|
|
198
|
+
Formula:
|
|
199
|
+
- up = 100 * (period - distance to the highest high) / period
|
|
200
|
+
- down = 100 * (period - distance to the lowest low) / period
|
|
201
|
+
|
|
202
|
+
Note:
|
|
203
|
+
The lines oscillate between 0 and 100. That means that the "distance" to
|
|
204
|
+
the last highest or lowest must go from 0 to period so that the formula
|
|
205
|
+
can yield 0 and 100.
|
|
206
|
+
|
|
207
|
+
Hence, the lookback period is period + 1, because the current bar is also
|
|
208
|
+
taken into account.
|
|
209
|
+
And therefore, this indicator needs an effective
|
|
210
|
+
lookback period of period + 1.
|
|
211
|
+
|
|
212
|
+
See:
|
|
213
|
+
- http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:aroon
|
|
214
|
+
"""
|
|
215
|
+
|
|
216
|
+
alias = ("AroonIndicator",)
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
class AroonOscillator(_AroonBase):
|
|
220
|
+
"""
|
|
221
|
+
It is a variation of the AroonUpDown indicator which shows the current
|
|
222
|
+
difference between the AroonUp and AroonDown value, trying to present a
|
|
223
|
+
visualization which indicates which is stronger (greater than 0 -> AroonUp
|
|
224
|
+
and less than 0 -> AroonDown)
|
|
225
|
+
|
|
226
|
+
Formula:
|
|
227
|
+
- aroonosc = aroonup - aroondown
|
|
228
|
+
|
|
229
|
+
See:
|
|
230
|
+
- http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:aroon
|
|
231
|
+
"""
|
|
232
|
+
|
|
233
|
+
_up = True
|
|
234
|
+
_down = True
|
|
235
|
+
|
|
236
|
+
alias = ("AroonOsc",)
|
|
237
|
+
|
|
238
|
+
lines = ("aroonosc",)
|
|
239
|
+
|
|
240
|
+
def _plotinit(self):
|
|
241
|
+
super()._plotinit()
|
|
242
|
+
|
|
243
|
+
for yhline in self.plotinfo.plotyhlines[:]:
|
|
244
|
+
self.plotinfo.plotyhlines.append(-yhline)
|
|
245
|
+
|
|
246
|
+
def __init__(self):
|
|
247
|
+
"""Initialize the Aroon Oscillator indicator.
|
|
248
|
+
|
|
249
|
+
Calculates both up and down values for oscillator calculation.
|
|
250
|
+
"""
|
|
251
|
+
super().__init__()
|
|
252
|
+
|
|
253
|
+
def next(self):
|
|
254
|
+
"""Calculate Aroon Oscillator for the current bar.
|
|
255
|
+
|
|
256
|
+
Oscillator = Aroon Up - Aroon Down.
|
|
257
|
+
"""
|
|
258
|
+
self.lines.aroonosc[0] = self.up[0] - self.down[0]
|
|
259
|
+
|
|
260
|
+
def once(self, start, end):
|
|
261
|
+
"""Calculate Aroon Oscillator in runonce mode.
|
|
262
|
+
|
|
263
|
+
Computes oscillator as difference of up and down values.
|
|
264
|
+
"""
|
|
265
|
+
import math
|
|
266
|
+
|
|
267
|
+
up_array = self.up.lines[0].array
|
|
268
|
+
down_array = self.down.lines[0].array
|
|
269
|
+
aroonosc_array = self.lines.aroonosc.array
|
|
270
|
+
|
|
271
|
+
while len(aroonosc_array) < end:
|
|
272
|
+
aroonosc_array.append(float("nan"))
|
|
273
|
+
|
|
274
|
+
for i in range(start, min(end, len(up_array), len(down_array))):
|
|
275
|
+
up_val = up_array[i] if i < len(up_array) else 0.0
|
|
276
|
+
down_val = down_array[i] if i < len(down_array) else 0.0
|
|
277
|
+
|
|
278
|
+
if (
|
|
279
|
+
isinstance(up_val, float)
|
|
280
|
+
and math.isnan(up_val)
|
|
281
|
+
or isinstance(down_val, float)
|
|
282
|
+
and math.isnan(down_val)
|
|
283
|
+
):
|
|
284
|
+
aroonosc_array[i] = float("nan")
|
|
285
|
+
else:
|
|
286
|
+
aroonosc_array[i] = up_val - down_val
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
class AroonUpDownOscillator(AroonUpDown, AroonOscillator):
|
|
290
|
+
"""
|
|
291
|
+
Presents together the indicators AroonUpDown and AroonOsc
|
|
292
|
+
|
|
293
|
+
Formula:
|
|
294
|
+
(None uses the aforementioned indicators)
|
|
295
|
+
|
|
296
|
+
See:
|
|
297
|
+
- http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:aroon
|
|
298
|
+
"""
|
|
299
|
+
|
|
300
|
+
alias = ("AroonUpDownOsc",)
|