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.
Files changed (465) hide show
  1. back_trader_python-1.4.0.dist-info/METADATA +1491 -0
  2. back_trader_python-1.4.0.dist-info/RECORD +465 -0
  3. back_trader_python-1.4.0.dist-info/WHEEL +5 -0
  4. back_trader_python-1.4.0.dist-info/licenses/LICENSE +674 -0
  5. back_trader_python-1.4.0.dist-info/top_level.txt +1 -0
  6. backtrader/__init__.py +148 -0
  7. backtrader/_cerebro/__init__.py +5 -0
  8. backtrader/_cerebro/channel.py +382 -0
  9. backtrader/_cerebro/execution.py +377 -0
  10. backtrader/_cerebro/lifecycle.py +143 -0
  11. backtrader/_cerebro/notifications.py +150 -0
  12. backtrader/_cerebro/presentation.py +230 -0
  13. backtrader/_cerebro/registry.py +593 -0
  14. backtrader/_cerebro/runnext.py +551 -0
  15. backtrader/_cerebro/runonce.py +142 -0
  16. backtrader/analyzer.py +594 -0
  17. backtrader/analyzers/__init__.py +50 -0
  18. backtrader/analyzers/annualreturn.py +226 -0
  19. backtrader/analyzers/calmar.py +165 -0
  20. backtrader/analyzers/drawdown.py +287 -0
  21. backtrader/analyzers/leverage.py +112 -0
  22. backtrader/analyzers/logreturnsrolling.py +190 -0
  23. backtrader/analyzers/periodstats.py +153 -0
  24. backtrader/analyzers/positions.py +119 -0
  25. backtrader/analyzers/pyfolio.py +470 -0
  26. backtrader/analyzers/returns.py +192 -0
  27. backtrader/analyzers/sharpe.py +307 -0
  28. backtrader/analyzers/sharpe_ratio_stats.py +534 -0
  29. backtrader/analyzers/sqn.py +112 -0
  30. backtrader/analyzers/timereturn.py +192 -0
  31. backtrader/analyzers/total_value.py +75 -0
  32. backtrader/analyzers/tradeanalyzer.py +278 -0
  33. backtrader/analyzers/transactions.py +141 -0
  34. backtrader/analyzers/vwr.py +245 -0
  35. backtrader/bokeh/__init__.py +155 -0
  36. backtrader/bokeh/analyzers/__init__.py +13 -0
  37. backtrader/bokeh/analyzers/plot.py +192 -0
  38. backtrader/bokeh/analyzers/recorder.py +181 -0
  39. backtrader/bokeh/app.py +1094 -0
  40. backtrader/bokeh/live/__init__.py +11 -0
  41. backtrader/bokeh/live/client.py +352 -0
  42. backtrader/bokeh/live/datahandler.py +346 -0
  43. backtrader/bokeh/plot_adapter.py +200 -0
  44. backtrader/bokeh/schemes/__init__.py +14 -0
  45. backtrader/bokeh/schemes/blackly.py +76 -0
  46. backtrader/bokeh/schemes/scheme.py +150 -0
  47. backtrader/bokeh/schemes/tradimo.py +82 -0
  48. backtrader/bokeh/tab.py +125 -0
  49. backtrader/bokeh/tabs/__init__.py +30 -0
  50. backtrader/bokeh/tabs/analyzer.py +120 -0
  51. backtrader/bokeh/tabs/config.py +154 -0
  52. backtrader/bokeh/tabs/live.py +109 -0
  53. backtrader/bokeh/tabs/log.py +185 -0
  54. backtrader/bokeh/tabs/metadata.py +182 -0
  55. backtrader/bokeh/tabs/performance.py +359 -0
  56. backtrader/bokeh/tabs/source.py +70 -0
  57. backtrader/bokeh/utils/__init__.py +8 -0
  58. backtrader/bokeh/utils/helpers.py +167 -0
  59. backtrader/bokeh/webapp.py +164 -0
  60. backtrader/broker.py +478 -0
  61. backtrader/brokers/__init__.py +36 -0
  62. backtrader/brokers/bbroker.py +2576 -0
  63. backtrader/brokers/btapibroker.py +8227 -0
  64. backtrader/brokers/hft/__init__.py +89 -0
  65. backtrader/brokers/hft/binance_bbo.py +625 -0
  66. backtrader/brokers/hft/binance_bbo_compare.py +1398 -0
  67. backtrader/brokers/hft/examples.py +1228 -0
  68. backtrader/brokers/hft/exchange.py +380 -0
  69. backtrader/brokers/hft/latency.py +309 -0
  70. backtrader/brokers/hft/matching_core.py +572 -0
  71. backtrader/brokers/hft/queue.py +238 -0
  72. backtrader/brokers/hft/recorder.py +88 -0
  73. backtrader/brokers/hft/state.py +138 -0
  74. backtrader/brokers/impact_models.py +118 -0
  75. backtrader/brokers/mixbroker.py +895 -0
  76. backtrader/brokers/tickbroker.py +1991 -0
  77. backtrader/btrun/__init__.py +12 -0
  78. backtrader/btrun/btrun.py +1218 -0
  79. backtrader/cerebro.py +828 -0
  80. backtrader/channel.py +682 -0
  81. backtrader/channels/__init__.py +23 -0
  82. backtrader/channels/bridge.py +186 -0
  83. backtrader/channels/funding.py +248 -0
  84. backtrader/channels/live_queue.py +216 -0
  85. backtrader/channels/live_validator.py +294 -0
  86. backtrader/channels/orderbook.py +257 -0
  87. backtrader/channels/tick.py +202 -0
  88. backtrader/comminfo.py +665 -0
  89. backtrader/commissions/__init__.py +106 -0
  90. backtrader/commissions/ctpoption.py +993 -0
  91. backtrader/configs/account_config_example.yaml +8 -0
  92. backtrader/dataseries.py +379 -0
  93. backtrader/errors.py +106 -0
  94. backtrader/events.py +980 -0
  95. backtrader/feed.py +1523 -0
  96. backtrader/feeds/__init__.py +75 -0
  97. backtrader/feeds/barrier.py +2006 -0
  98. backtrader/feeds/blaze.py +118 -0
  99. backtrader/feeds/btapifeed.py +1538 -0
  100. backtrader/feeds/btcsv.py +203 -0
  101. backtrader/feeds/chainer.py +114 -0
  102. backtrader/feeds/cryptohftdata.py +164 -0
  103. backtrader/feeds/csvgeneric.py +1205 -0
  104. backtrader/feeds/ctpcohort.py +1051 -0
  105. backtrader/feeds/influxfeed.py +158 -0
  106. backtrader/feeds/livefeed.py +71 -0
  107. backtrader/feeds/mixed_channel.py +108 -0
  108. backtrader/feeds/mt4csv.py +42 -0
  109. backtrader/feeds/pandafeed.py +381 -0
  110. backtrader/feeds/quandl.py +256 -0
  111. backtrader/feeds/rollover.py +229 -0
  112. backtrader/feeds/sierrachart.py +30 -0
  113. backtrader/feeds/vchart.py +162 -0
  114. backtrader/feeds/vchartcsv.py +84 -0
  115. backtrader/feeds/vchartfile.py +153 -0
  116. backtrader/feeds/yahoo.py +399 -0
  117. backtrader/fillers.py +148 -0
  118. backtrader/filters/__init__.py +34 -0
  119. backtrader/filters/bsplitter.py +127 -0
  120. backtrader/filters/calendardays.py +121 -0
  121. backtrader/filters/datafiller.py +192 -0
  122. backtrader/filters/datafilter.py +74 -0
  123. backtrader/filters/daysteps.py +96 -0
  124. backtrader/filters/heikinashi.py +63 -0
  125. backtrader/filters/renko.py +164 -0
  126. backtrader/filters/session.py +289 -0
  127. backtrader/flt.py +80 -0
  128. backtrader/functions.py +960 -0
  129. backtrader/indicator.py +449 -0
  130. backtrader/indicators/__init__.py +148 -0
  131. backtrader/indicators/accdecoscillator.py +110 -0
  132. backtrader/indicators/aroon.py +300 -0
  133. backtrader/indicators/atr.py +315 -0
  134. backtrader/indicators/awesomeoscillator.py +122 -0
  135. backtrader/indicators/basicops.py +834 -0
  136. backtrader/indicators/bollinger.py +223 -0
  137. backtrader/indicators/cci.py +89 -0
  138. backtrader/indicators/channels_ext.py +83 -0
  139. backtrader/indicators/contrib/__init__.py +228 -0
  140. backtrader/indicators/contrib/absolutely_no_lag_lwma.py +28 -0
  141. backtrader/indicators/contrib/absolutely_no_lag_lwma_color.py +44 -0
  142. backtrader/indicators/contrib/accumulation_distribution_line.py +92 -0
  143. backtrader/indicators/contrib/adx_cross_hull_style_indicator.py +249 -0
  144. backtrader/indicators/contrib/adxdmi.py +34 -0
  145. backtrader/indicators/contrib/ai_acceleration_deceleration_oscillator.py +34 -0
  146. backtrader/indicators/contrib/altr_trend_signal_v22.py +85 -0
  147. backtrader/indicators/contrib/anchored_momentum_line.py +115 -0
  148. backtrader/indicators/contrib/any_range_cld_tail_indicator.py +82 -0
  149. backtrader/indicators/contrib/aroon_horn_sign_indicator.py +96 -0
  150. backtrader/indicators/contrib/aroon_oscillator_sign_alert.py +50 -0
  151. backtrader/indicators/contrib/arrows_curves_indicator.py +112 -0
  152. backtrader/indicators/contrib/as_ctrend_indicator.py +143 -0
  153. backtrader/indicators/contrib/asimmetric_stoch_nr_indicator.py +187 -0
  154. backtrader/indicators/contrib/atr_normalize_histogram.py +118 -0
  155. backtrader/indicators/contrib/average_change_candle.py +165 -0
  156. backtrader/indicators/contrib/bb_squeeze_indicator.py +60 -0
  157. backtrader/indicators/contrib/bezier_st_dev_indicator.py +135 -0
  158. backtrader/indicators/contrib/binary_wave_indicator.py +233 -0
  159. backtrader/indicators/contrib/blau_c_momentum_indicator.py +123 -0
  160. backtrader/indicators/contrib/blau_cmi_indicator.py +141 -0
  161. backtrader/indicators/contrib/blau_csi.py +76 -0
  162. backtrader/indicators/contrib/blau_ergodic.py +53 -0
  163. backtrader/indicators/contrib/blau_t_stoch_i.py +72 -0
  164. backtrader/indicators/contrib/blau_ts_stochastic.py +85 -0
  165. backtrader/indicators/contrib/blau_tvi.py +55 -0
  166. backtrader/indicators/contrib/brain_trend2_indicator.py +128 -0
  167. backtrader/indicators/contrib/brain_trend_signal_proxy.py +47 -0
  168. backtrader/indicators/contrib/brake_parb_indicator.py +85 -0
  169. backtrader/indicators/contrib/breakout_bars_trend_v2.py +121 -0
  170. backtrader/indicators/contrib/bsi_indicator.py +87 -0
  171. backtrader/indicators/contrib/bulls_bears_eyes.py +67 -0
  172. backtrader/indicators/contrib/bulls_power.py +56 -0
  173. backtrader/indicators/contrib/bw_wise_man1_signal.py +102 -0
  174. backtrader/indicators/contrib/bykov_trend_indicator.py +85 -0
  175. backtrader/indicators/contrib/candle_stop_color.py +46 -0
  176. backtrader/indicators/contrib/candles_x_smoothed_indicator.py +69 -0
  177. backtrader/indicators/contrib/candlesticks_bw.py +45 -0
  178. backtrader/indicators/contrib/caudate_x_period_candle_color.py +56 -0
  179. backtrader/indicators/contrib/cci_histogram_indicator.py +53 -0
  180. backtrader/indicators/contrib/cci_woodies_indicator.py +80 -0
  181. backtrader/indicators/contrib/center_of_gravity_candle_indicator.py +83 -0
  182. backtrader/indicators/contrib/center_of_gravity_indicator.py +70 -0
  183. backtrader/indicators/contrib/cg_oscillator.py +40 -0
  184. backtrader/indicators/contrib/close_line_cci.py +38 -0
  185. backtrader/indicators/contrib/close_price_fractals.py +47 -0
  186. backtrader/indicators/contrib/color3rd_gen_xma_indicator.py +122 -0
  187. backtrader/indicators/contrib/color_bb_candles_indicator.py +108 -0
  188. backtrader/indicators/contrib/color_coppock_indicator.py +157 -0
  189. backtrader/indicators/contrib/color_hma.py +71 -0
  190. backtrader/indicators/contrib/color_j_variation_indicator.py +53 -0
  191. backtrader/indicators/contrib/color_metro_de_marker_indicator.py +78 -0
  192. backtrader/indicators/contrib/color_metro_stochastic_indicator.py +93 -0
  193. backtrader/indicators/contrib/color_metro_wpr_indicator.py +85 -0
  194. backtrader/indicators/contrib/color_schaff_de_marker_trend_cycle.py +92 -0
  195. backtrader/indicators/contrib/color_schaff_trend_cycle_indicator.py +203 -0
  196. backtrader/indicators/contrib/color_step_xccx_indicator.py +193 -0
  197. backtrader/indicators/contrib/color_x2_ma.py +49 -0
  198. backtrader/indicators/contrib/color_x_derivative.py +63 -0
  199. backtrader/indicators/contrib/color_zerolag_de_marker.py +84 -0
  200. backtrader/indicators/contrib/corrected_average_indicator.py +127 -0
  201. backtrader/indicators/contrib/darvas_boxes_system.py +73 -0
  202. backtrader/indicators/contrib/dema_range_channel_color.py +42 -0
  203. backtrader/indicators/contrib/derivative_indicator.py +95 -0
  204. backtrader/indicators/contrib/digital_ft01_indicator.py +112 -0
  205. backtrader/indicators/contrib/digital_macd.py +200 -0
  206. backtrader/indicators/contrib/donchian_channels_system.py +45 -0
  207. backtrader/indicators/contrib/dots_indicator.py +93 -0
  208. backtrader/indicators/contrib/ef_distance_indicator.py +82 -0
  209. backtrader/indicators/contrib/ema_rsi_va.py +80 -0
  210. backtrader/indicators/contrib/envelopes_jp_alonso.py +32 -0
  211. backtrader/indicators/contrib/f2a_ao_indicator.py +120 -0
  212. backtrader/indicators/contrib/fatl_filter.py +179 -0
  213. backtrader/indicators/contrib/fibo_candles_indicator.py +78 -0
  214. backtrader/indicators/contrib/fine_tuning_ma.py +100 -0
  215. backtrader/indicators/contrib/fisher_org_v1.py +102 -0
  216. backtrader/indicators/contrib/fisher_org_v1_sign.py +118 -0
  217. backtrader/indicators/contrib/force_index_ema.py +96 -0
  218. backtrader/indicators/contrib/force_index_ema_2.py +27 -0
  219. backtrader/indicators/contrib/forecast_oscilator.py +145 -0
  220. backtrader/indicators/contrib/fractal_amambk.py +81 -0
  221. backtrader/indicators/contrib/frama_series.py +84 -0
  222. backtrader/indicators/contrib/frasm_av2_indicator.py +104 -0
  223. backtrader/indicators/contrib/go_indicator.py +93 -0
  224. backtrader/indicators/contrib/hlr_indicator.py +95 -0
  225. backtrader/indicators/contrib/hma.py +50 -0
  226. backtrader/indicators/contrib/i4_drfv2.py +34 -0
  227. backtrader/indicators/contrib/i4_drfv3.py +38 -0
  228. backtrader/indicators/contrib/i_anch_mom_indicator.py +72 -0
  229. backtrader/indicators/contrib/i_de_marker_sign_indicator.py +64 -0
  230. backtrader/indicators/contrib/i_gap_indicator.py +45 -0
  231. backtrader/indicators/contrib/i_stoch_komposter_indicator.py +77 -0
  232. backtrader/indicators/contrib/i_trend_indicator.py +125 -0
  233. backtrader/indicators/contrib/iamma_indicator.py +39 -0
  234. backtrader/indicators/contrib/indexed_moving_average.py +33 -0
  235. backtrader/indicators/contrib/instantaneous_trend_filter_indicator.py +51 -0
  236. backtrader/indicators/contrib/inverse_reaction_indicator.py +41 -0
  237. backtrader/indicators/contrib/irsi_sign_indicator.py +95 -0
  238. backtrader/indicators/contrib/iwpr_sign_indicator.py +59 -0
  239. backtrader/indicators/contrib/j_brain_trend1_sig_indicator.py +233 -0
  240. backtrader/indicators/contrib/j_tpo_proxy.py +32 -0
  241. backtrader/indicators/contrib/jma_slope_indicator.py +73 -0
  242. backtrader/indicators/contrib/kalman_filter_indicator.py +119 -0
  243. backtrader/indicators/contrib/kalman_filter_line.py +127 -0
  244. backtrader/indicators/contrib/kama_indicator.py +150 -0
  245. backtrader/indicators/contrib/karacatica_indicator.py +99 -0
  246. backtrader/indicators/contrib/kdj_indicator.py +59 -0
  247. backtrader/indicators/contrib/kwan_ccc_indicator.py +195 -0
  248. backtrader/indicators/contrib/kwan_nrp_indicator.py +113 -0
  249. backtrader/indicators/contrib/kwan_rdp_indicator.py +192 -0
  250. backtrader/indicators/contrib/laguerre_adx_indicator.py +85 -0
  251. backtrader/indicators/contrib/laguerre_filter_indicator.py +66 -0
  252. backtrader/indicators/contrib/laguerre_plus_di_proxy.py +57 -0
  253. backtrader/indicators/contrib/laguerre_roc_indicator.py +81 -0
  254. backtrader/indicators/contrib/le_man_signal_indicator.py +63 -0
  255. backtrader/indicators/contrib/linear_reg_slope_v2_indicator.py +136 -0
  256. backtrader/indicators/contrib/loco_indicator.py +88 -0
  257. backtrader/indicators/contrib/lrma_indicator.py +185 -0
  258. backtrader/indicators/contrib/lsma_angle_indicator.py +106 -0
  259. backtrader/indicators/contrib/ma_rounding_channel_indicator.py +149 -0
  260. backtrader/indicators/contrib/macd2_indicator.py +61 -0
  261. backtrader/indicators/contrib/macd_candle_indicator.py +80 -0
  262. backtrader/indicators/contrib/malr_indicator.py +77 -0
  263. backtrader/indicators/contrib/momentum_candle_sign_indicator.py +51 -0
  264. backtrader/indicators/contrib/moving_average_fn_indicator.py +139 -0
  265. backtrader/indicators/contrib/mt5_stochastic_close_close.py +57 -0
  266. backtrader/indicators/contrib/muv_nor_diff_cloud_indicator.py +107 -0
  267. backtrader/indicators/contrib/non_lag_dot_indicator.py +124 -0
  268. backtrader/indicators/contrib/nrtr_extr_indicator.py +95 -0
  269. backtrader/indicators/contrib/nrtr_indicator.py +95 -0
  270. backtrader/indicators/contrib/p_channel_system.py +40 -0
  271. backtrader/indicators/contrib/percent_envelope.py +37 -0
  272. backtrader/indicators/contrib/percentage_crossover_channel.py +47 -0
  273. backtrader/indicators/contrib/pivot_zig_zag_proxy.py +47 -0
  274. backtrader/indicators/contrib/price_channel_stop_indicator.py +104 -0
  275. backtrader/indicators/contrib/price_extreme_channel.py +35 -0
  276. backtrader/indicators/contrib/qqe_cloud_indicator.py +129 -0
  277. backtrader/indicators/contrib/ravi_indicator.py +40 -0
  278. backtrader/indicators/contrib/raw_close_close_stochastic.py +74 -0
  279. backtrader/indicators/contrib/rd_trend_trigger_indicator.py +51 -0
  280. backtrader/indicators/contrib/renko_level.py +85 -0
  281. backtrader/indicators/contrib/renko_line_break.py +91 -0
  282. backtrader/indicators/contrib/rftl_indicator.py +41 -0
  283. backtrader/indicators/contrib/rkd_indicator.py +53 -0
  284. backtrader/indicators/contrib/roc2_vg_indicator.py +68 -0
  285. backtrader/indicators/contrib/rsi_histogram_indicator.py +43 -0
  286. backtrader/indicators/contrib/rsi_slowdown.py +57 -0
  287. backtrader/indicators/contrib/rsioma_v2.py +41 -0
  288. backtrader/indicators/contrib/rvi_histogram_indicator.py +107 -0
  289. backtrader/indicators/contrib/safe_adx.py +89 -0
  290. backtrader/indicators/contrib/shared_strategy_indicators.py +1651 -0
  291. backtrader/indicators/contrib/sidus_indicator.py +105 -0
  292. backtrader/indicators/contrib/silver_trend_indicator.py +79 -0
  293. backtrader/indicators/contrib/sliding_range_color.py +56 -0
  294. backtrader/indicators/contrib/slow_stoch.py +42 -0
  295. backtrader/indicators/contrib/smoothed_adx_indicator.py +86 -0
  296. backtrader/indicators/contrib/smoothed_rsi.py +31 -0
  297. backtrader/indicators/contrib/spearman_rank_correlation_histogram.py +60 -0
  298. backtrader/indicators/contrib/stalin_indicator.py +152 -0
  299. backtrader/indicators/contrib/starter_laguerre_filter.py +62 -0
  300. backtrader/indicators/contrib/step_manrtr_indicator.py +137 -0
  301. backtrader/indicators/contrib/stochastic_histogram_indicator.py +143 -0
  302. backtrader/indicators/contrib/t3_alarm_indicator.py +125 -0
  303. backtrader/indicators/contrib/t3_average.py +76 -0
  304. backtrader/indicators/contrib/t3_indicator.py +40 -0
  305. backtrader/indicators/contrib/the20s_v020_signal.py +93 -0
  306. backtrader/indicators/contrib/three_candles_indicator.py +70 -0
  307. backtrader/indicators/contrib/three_line_break_indicator.py +64 -0
  308. backtrader/indicators/contrib/time_line.py +57 -0
  309. backtrader/indicators/contrib/trading_channel_index_proxy.py +48 -0
  310. backtrader/indicators/contrib/trend_arrows_indicator.py +109 -0
  311. backtrader/indicators/contrib/trend_continuation_indicator.py +127 -0
  312. backtrader/indicators/contrib/trend_intensity_index_proxy.py +51 -0
  313. backtrader/indicators/contrib/trend_manager_indicator.py +39 -0
  314. backtrader/indicators/contrib/tri_x_candle_indicator.py +51 -0
  315. backtrader/indicators/contrib/trigger_line.py +66 -0
  316. backtrader/indicators/contrib/triple_ema_rate.py +34 -0
  317. backtrader/indicators/contrib/trvi_indicator.py +194 -0
  318. backtrader/indicators/contrib/two_pb_ideal_xosma_indicator.py +127 -0
  319. backtrader/indicators/contrib/ultra_absolutely_no_lag_lwma_color.py +92 -0
  320. backtrader/indicators/contrib/ultra_wpr_indicator.py +173 -0
  321. backtrader/indicators/contrib/up_down_candle_strength.py +68 -0
  322. backtrader/indicators/contrib/vinin_i_trend_indicator.py +139 -0
  323. backtrader/indicators/contrib/volume_weighted_ma_indicator.py +78 -0
  324. backtrader/indicators/contrib/volume_weighted_ma_st_dev_indicator.py +111 -0
  325. backtrader/indicators/contrib/vwap_close_indicator.py +65 -0
  326. backtrader/indicators/contrib/vwma_candle.py +57 -0
  327. backtrader/indicators/contrib/vwma_digit_system.py +70 -0
  328. backtrader/indicators/contrib/wami.py +43 -0
  329. backtrader/indicators/contrib/wprsi_signal_indicator.py +105 -0
  330. backtrader/indicators/contrib/x_de_marker_histogram_vol_direct_indicator.py +145 -0
  331. backtrader/indicators/contrib/x_fisher_indicator.py +64 -0
  332. backtrader/indicators/contrib/xcci_histogram_vol_direct_indicator.py +56 -0
  333. backtrader/indicators/contrib/xcci_histogram_vol_indicator.py +85 -0
  334. backtrader/indicators/contrib/xma_ichimoku.py +163 -0
  335. backtrader/indicators/contrib/xma_ishimoku_channel_indicator.py +65 -0
  336. backtrader/indicators/contrib/xma_ishimoku_line.py +68 -0
  337. backtrader/indicators/contrib/xma_range_bands_indicator.py +107 -0
  338. backtrader/indicators/contrib/xmacd_indicator.py +70 -0
  339. backtrader/indicators/contrib/xrsi_de_marker_histogram.py +67 -0
  340. backtrader/indicators/contrib/xrsi_histogram_vol_direct_indicator.py +52 -0
  341. backtrader/indicators/contrib/xrsi_histogram_vol_indicator.py +81 -0
  342. backtrader/indicators/contrib/xrvi_indicator.py +130 -0
  343. backtrader/indicators/contrib/zero_lag_macd.py +36 -0
  344. backtrader/indicators/contrib/zig_zag_recent_pivot_signal.py +90 -0
  345. backtrader/indicators/contrib/zpf_indicator.py +115 -0
  346. backtrader/indicators/crossover.py +337 -0
  347. backtrader/indicators/dema.py +175 -0
  348. backtrader/indicators/demarker.py +270 -0
  349. backtrader/indicators/deviation.py +284 -0
  350. backtrader/indicators/directionalmove.py +1071 -0
  351. backtrader/indicators/dma.py +112 -0
  352. backtrader/indicators/dpo.py +96 -0
  353. backtrader/indicators/dv2.py +56 -0
  354. backtrader/indicators/ema.py +145 -0
  355. backtrader/indicators/envelope.py +475 -0
  356. backtrader/indicators/hadelta.py +198 -0
  357. backtrader/indicators/heikinashi.py +153 -0
  358. backtrader/indicators/hma.py +153 -0
  359. backtrader/indicators/hurst.py +151 -0
  360. backtrader/indicators/ichimoku.py +267 -0
  361. backtrader/indicators/kama.py +181 -0
  362. backtrader/indicators/kst.py +159 -0
  363. backtrader/indicators/lrsi.py +125 -0
  364. backtrader/indicators/mabase.py +147 -0
  365. backtrader/indicators/macd.py +322 -0
  366. backtrader/indicators/momentum.py +267 -0
  367. backtrader/indicators/moneyflow.py +237 -0
  368. backtrader/indicators/mt5atr.py +124 -0
  369. backtrader/indicators/myind.py +179 -0
  370. backtrader/indicators/obv.py +94 -0
  371. backtrader/indicators/ols.py +265 -0
  372. backtrader/indicators/oscillator.py +161 -0
  373. backtrader/indicators/percentchange.py +83 -0
  374. backtrader/indicators/percentrank.py +46 -0
  375. backtrader/indicators/pivotpoint.py +469 -0
  376. backtrader/indicators/prettygoodoscillator.py +113 -0
  377. backtrader/indicators/priceops_ext.py +123 -0
  378. backtrader/indicators/priceoscillator.py +262 -0
  379. backtrader/indicators/psar.py +212 -0
  380. backtrader/indicators/rmi.py +69 -0
  381. backtrader/indicators/rsi.py +440 -0
  382. backtrader/indicators/sma.py +141 -0
  383. backtrader/indicators/smma.py +116 -0
  384. backtrader/indicators/spread.py +54 -0
  385. backtrader/indicators/stochastic.py +263 -0
  386. backtrader/indicators/supertrend.py +436 -0
  387. backtrader/indicators/trend_ext.py +105 -0
  388. backtrader/indicators/trix.py +202 -0
  389. backtrader/indicators/tsi.py +155 -0
  390. backtrader/indicators/ultimateoscillator.py +158 -0
  391. backtrader/indicators/vortex.py +62 -0
  392. backtrader/indicators/williams.py +194 -0
  393. backtrader/indicators/wma.py +103 -0
  394. backtrader/indicators/zlema.py +135 -0
  395. backtrader/indicators/zlind.py +104 -0
  396. backtrader/linebuffer.py +3155 -0
  397. backtrader/lineiterator.py +2911 -0
  398. backtrader/lineroot.py +1106 -0
  399. backtrader/lineseries.py +2559 -0
  400. backtrader/live_trading/__init__.py +31 -0
  401. backtrader/live_trading/interface.py +404 -0
  402. backtrader/mathsupport.py +94 -0
  403. backtrader/metabase.py +1804 -0
  404. backtrader/mixins/__init__.py +21 -0
  405. backtrader/mixins/singleton.py +118 -0
  406. backtrader/observer.py +106 -0
  407. backtrader/observers/__init__.py +45 -0
  408. backtrader/observers/benchmark.py +126 -0
  409. backtrader/observers/broker.py +184 -0
  410. backtrader/observers/buysell.py +144 -0
  411. backtrader/observers/drawdown.py +161 -0
  412. backtrader/observers/logreturns.py +113 -0
  413. backtrader/observers/timereturn.py +86 -0
  414. backtrader/observers/trade_logger.py +2972 -0
  415. backtrader/observers/tradelogger.py +6 -0
  416. backtrader/observers/trades.py +258 -0
  417. backtrader/order.py +1114 -0
  418. backtrader/parameters.py +2345 -0
  419. backtrader/plot/__init__.py +54 -0
  420. backtrader/plot/finance.py +1022 -0
  421. backtrader/plot/formatters.py +200 -0
  422. backtrader/plot/locator.py +353 -0
  423. backtrader/plot/multicursor.py +495 -0
  424. backtrader/plot/plot.py +2500 -0
  425. backtrader/plot/plot_plotly.py +1351 -0
  426. backtrader/plot/scheme.py +253 -0
  427. backtrader/plot/utils.py +104 -0
  428. backtrader/position.py +290 -0
  429. backtrader/position_modes.py +132 -0
  430. backtrader/profiles.py +254 -0
  431. backtrader/reports/__init__.py +39 -0
  432. backtrader/reports/charts.py +371 -0
  433. backtrader/reports/performance.py +620 -0
  434. backtrader/reports/reporter.py +660 -0
  435. backtrader/resamplerfilter.py +1001 -0
  436. backtrader/signal.py +118 -0
  437. backtrader/signals/__init__.py +17 -0
  438. backtrader/sizer.py +114 -0
  439. backtrader/sizers/__init__.py +26 -0
  440. backtrader/sizers/fixedsize.py +161 -0
  441. backtrader/sizers/percents_sizer.py +119 -0
  442. backtrader/store.py +221 -0
  443. backtrader/stores/__init__.py +33 -0
  444. backtrader/stores/btapistore.py +15506 -0
  445. backtrader/stores/livestore.py +137 -0
  446. backtrader/stores/vchartfile.py +96 -0
  447. backtrader/strategy.py +3655 -0
  448. backtrader/talib.py +280 -0
  449. backtrader/test_helpers.py +96 -0
  450. backtrader/timer.py +358 -0
  451. backtrader/trade.py +442 -0
  452. backtrader/tradingcal.py +361 -0
  453. backtrader/utils/__init__.py +68 -0
  454. backtrader/utils/autodict.py +251 -0
  455. backtrader/utils/date.py +71 -0
  456. backtrader/utils/dateintern.py +509 -0
  457. backtrader/utils/flushfile.py +94 -0
  458. backtrader/utils/fractal.py +101 -0
  459. backtrader/utils/get_metrics.py +101 -0
  460. backtrader/utils/load_data.py +209 -0
  461. backtrader/utils/log_message.py +998 -0
  462. backtrader/utils/ordereddefaultdict.py +75 -0
  463. backtrader/utils/py3.py +296 -0
  464. backtrader/version.py +21 -0
  465. 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",)