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,153 @@
1
+ #!/usr/bin/env python
2
+ """Heikin Ashi Indicator Module - Heikin Ashi candlesticks.
3
+
4
+ This module provides the Heikin Ashi candlestick indicator which
5
+ creates alternative candlestick charts for trend identification.
6
+
7
+ Classes:
8
+ HeikinAshi: Heikin Ashi candlestick lines.
9
+
10
+ Example:
11
+ class MyStrategy(bt.Strategy):
12
+ def __init__(self):
13
+ self.ha = bt.indicators.HeikinAshi(self.data)
14
+
15
+ def next(self):
16
+ # Use Heikin Ashi close for trend analysis
17
+ if self.data.close[0] > self.ha.ha_close[0]:
18
+ self.buy()
19
+ """
20
+
21
+ from . import Indicator
22
+
23
+ __all__ = ["HeikinAshi"]
24
+
25
+
26
+ class HeikinAshi(Indicator):
27
+ """
28
+ Heikin Ashi candlesticks in the forms of lines
29
+
30
+ Formula:
31
+ ha_open = (ha_open(-1) + ha_close(-1)) / 2
32
+ ha_high = max (hi, ha_open, ha_close)
33
+ ha_low = min (lo, ha_open, ha_close)
34
+ ha_close = (open + high + low + close) / 4
35
+
36
+ See also:
37
+ https://en.wikipedia.org/wiki/Candlestick_chart#Heikin_Ashi_candlesticks
38
+ http://stockcharts.com/school/doku.php?id=chart_school:chart_analysis:heikin_ashi
39
+ """
40
+
41
+ lines = (
42
+ "ha_open",
43
+ "ha_high",
44
+ "ha_low",
45
+ "ha_close",
46
+ )
47
+
48
+ linealias = (
49
+ (
50
+ "ha_open",
51
+ "open",
52
+ ),
53
+ (
54
+ "ha_high",
55
+ "high",
56
+ ),
57
+ (
58
+ "ha_low",
59
+ "low",
60
+ ),
61
+ (
62
+ "ha_close",
63
+ "close",
64
+ ),
65
+ )
66
+
67
+ plotinfo = {"subplot": False}
68
+
69
+ _nextforce = True
70
+
71
+ def __init__(self):
72
+ """Initialize the Heikin Ashi indicator.
73
+
74
+ Uses next()/once() methods for calculation to avoid recursive
75
+ line operation issues.
76
+ """
77
+ # CRITICAL FIX: Call super().__init__() FIRST to ensure proper initialization
78
+ super().__init__()
79
+ # Use next()/once() methods for calculation to avoid recursive line operation issues
80
+ # that cause strategy's next() to never be called
81
+
82
+ def next(self):
83
+ """Calculate Heikin Ashi values for the current bar.
84
+
85
+ Calculates ha_close, ha_open, ha_high, and ha_low using:
86
+ - ha_close = (open + high + low + close) / 4
87
+ - ha_open = (prev_ha_open + prev_ha_close) / 2
88
+ - ha_high = max(high, ha_open, ha_close)
89
+ - ha_low = min(low, ha_open, ha_close)
90
+ """
91
+ # ha_close = (open + high + low + close) / 4
92
+ ha_close = (
93
+ self.data.open[0] + self.data.high[0] + self.data.low[0] + self.data.close[0]
94
+ ) / 4.0
95
+ self.lines.ha_close[0] = ha_close
96
+
97
+ # ha_open = (ha_open[-1] + ha_close[-1]) / 2
98
+ # Uses PREVIOUS bar's ha_open and PREVIOUS bar's ha_close
99
+ if len(self) > 1:
100
+ ha_open = (self.lines.ha_open[-1] + self.lines.ha_close[-1]) / 2.0
101
+ else:
102
+ # First bar: seed with average of open and close
103
+ ha_open = (self.data.open[0] + self.data.close[0]) / 2.0
104
+ self.lines.ha_open[0] = ha_open
105
+
106
+ # ha_high = max(high, ha_open, ha_close)
107
+ self.lines.ha_high[0] = max(self.data.high[0], ha_open, ha_close)
108
+
109
+ # ha_low = min(low, ha_open, ha_close)
110
+ self.lines.ha_low[0] = min(self.data.low[0], ha_open, ha_close)
111
+
112
+ def prenext(self):
113
+ """Calculate Heikin Ashi values before minimum period is reached.
114
+
115
+ Uses the same calculation as next() to show values from the start.
116
+ """
117
+ # Same calculation as next() for prenext period
118
+ self.next()
119
+
120
+ def once(self, start, end):
121
+ """Batch calculation for runonce mode - matches next() logic exactly"""
122
+ o_array = self.data.open.array
123
+ h_array = self.data.high.array
124
+ l_array = self.data.low.array
125
+ c_array = self.data.close.array
126
+
127
+ ha_open_array = self.lines.ha_open.array
128
+ ha_high_array = self.lines.ha_high.array
129
+ ha_low_array = self.lines.ha_low.array
130
+ ha_close_array = self.lines.ha_close.array
131
+
132
+ # Ensure arrays are properly sized
133
+ for arr in [ha_open_array, ha_high_array, ha_low_array, ha_close_array]:
134
+ while len(arr) < end:
135
+ arr.append(float("nan"))
136
+
137
+ data_len = min(end, len(o_array), len(h_array), len(l_array), len(c_array))
138
+ for i in range(start, data_len):
139
+ # ha_close = (open + high + low + close) / 4
140
+ ha_close = (o_array[i] + h_array[i] + l_array[i] + c_array[i]) / 4.0
141
+ ha_close_array[i] = ha_close
142
+
143
+ # ha_open = (ha_open[-1] + ha_close[-1]) / 2
144
+ # Uses PREVIOUS bar's ha_open and PREVIOUS bar's ha_close
145
+ if i > 0:
146
+ ha_open = (ha_open_array[i - 1] + ha_close_array[i - 1]) / 2.0
147
+ else:
148
+ ha_open = (o_array[i] + c_array[i]) / 2.0
149
+ ha_open_array[i] = ha_open
150
+
151
+ # ha_high and ha_low
152
+ ha_high_array[i] = max(h_array[i], ha_open, ha_close)
153
+ ha_low_array[i] = min(l_array[i], ha_open, ha_close)
@@ -0,0 +1,153 @@
1
+ #!/usr/bin/env python
2
+ """HMA Indicator Module - Hull Moving Average.
3
+
4
+ This module provides the HMA (Hull Moving Average) indicator developed
5
+ by Alan Hull to reduce lag while maintaining smoothness.
6
+
7
+ Classes:
8
+ HullMovingAverage: HMA indicator (aliases: HMA, HullMA).
9
+
10
+ Example:
11
+ class MyStrategy(bt.Strategy):
12
+ def __init__(self):
13
+ self.hma = bt.indicators.HMA(self.data.close, period=30)
14
+
15
+ def next(self):
16
+ if self.data.close[0] > self.hma[0]:
17
+ self.buy()
18
+ """
19
+
20
+ import math
21
+
22
+ from . import MovingAverageBase
23
+ from .wma import WMA
24
+
25
+
26
+ class HullMovingAverage(MovingAverageBase):
27
+ """By Alan Hull
28
+
29
+ The Hull Moving Average solves the age-old dilemma of making a moving
30
+ average more responsive to current price activity whilst maintaining curve
31
+ smoothness. In fact, the HMA almost eliminates lag altogether and manages to
32
+ improve smoothing at the same time.
33
+
34
+ Formula:
35
+ - hma = wma(2 * wma(data, period // 2) - wma(data, period), sqrt(period))
36
+
37
+ See also:
38
+ - http://alanhull.com/hull-moving-average
39
+
40
+ Note:
41
+
42
+ - Please note that the final minimum period is not the period passed with
43
+ the parameter `period`. A final moving average on moving average is
44
+ done in which the period is the *square root* of the original.
45
+
46
+ In the default case of `30`, the final minimum period before the
47
+ moving average produces a non-NAN value is ``34``
48
+ """
49
+
50
+ alias = (
51
+ "HMA",
52
+ "HullMA",
53
+ )
54
+ lines = ("hma",)
55
+
56
+ # param 'period' is inherited from MovingAverageBase
57
+ params = (("_movav", WMA),)
58
+
59
+ def __init__(self):
60
+ """Initialize the Hull Moving Average.
61
+
62
+ Creates full-period and half-period WMAs for the HMA calculation.
63
+ """
64
+ super().__init__()
65
+ self.wma_full = self.p._movav(self.data, period=self.p.period)
66
+ self.wma_half = self.p._movav(self.data, period=self.p.period // 2)
67
+ self.sqrtperiod = int(pow(self.p.period, 0.5))
68
+ # minperiod calculation
69
+ self._minperiod = max(self._minperiod, self.p.period + self.sqrtperiod - 1)
70
+
71
+ def _calc_wma(self, values, period):
72
+ """Calculate WMA for a list of values.
73
+
74
+ Args:
75
+ values: List of values to average.
76
+ period: Period for WMA calculation.
77
+
78
+ Returns:
79
+ float: Weighted moving average value.
80
+ """
81
+ if len(values) < period:
82
+ return float("nan")
83
+ coef = 2.0 / (period * (period + 1.0))
84
+ weights = tuple(float(x) for x in range(1, period + 1))
85
+ weighted_sum = 0.0
86
+ for i in range(period):
87
+ weighted_sum += weights[period - 1 - i] * values[-(i + 1)]
88
+ return coef * weighted_sum
89
+
90
+ def next(self):
91
+ """Calculate HMA for the current bar.
92
+
93
+ Formula: HMA = WMA(2*WMA(n/2) - WMA(n), sqrt(n))
94
+ """
95
+ # Get raw values for final WMA calculation
96
+ sqrtperiod = self.sqrtperiod
97
+ raw_values = []
98
+ for i in range(sqrtperiod):
99
+ wma2_val = 2.0 * self.wma_half[-i]
100
+ wma_val = self.wma_full[-i]
101
+ raw_values.append(wma2_val - wma_val)
102
+ raw_values.reverse()
103
+
104
+ self.lines.hma[0] = self._calc_wma(raw_values, sqrtperiod)
105
+
106
+ def once(self, start, end):
107
+ """Calculate HMA in runonce mode."""
108
+ wma_full_array = self.wma_full.lines[0].array
109
+ wma_half_array = self.wma_half.lines[0].array
110
+ larray = self.lines.hma.array
111
+ period = self.p.period
112
+ sqrtperiod = self.sqrtperiod
113
+
114
+ while len(larray) < end:
115
+ larray.append(float("nan"))
116
+
117
+ minperiod = period + sqrtperiod - 1
118
+ for i in range(min(minperiod - 1, len(wma_full_array))):
119
+ if i < len(larray):
120
+ larray[i] = float("nan")
121
+
122
+ # WMA coefficient
123
+ coef = 2.0 / (sqrtperiod * (sqrtperiod + 1.0))
124
+ weights = tuple(float(x) for x in range(1, sqrtperiod + 1))
125
+
126
+ for i in range(minperiod - 1, min(end, len(wma_full_array), len(wma_half_array))):
127
+ # Calculate raw = 2 * wma_half - wma_full for last sqrtperiod values
128
+ weighted_sum = 0.0
129
+ valid = True
130
+ for j in range(sqrtperiod):
131
+ idx = i - j
132
+ if idx >= 0 and idx < len(wma_full_array) and idx < len(wma_half_array):
133
+ wma_full_val = wma_full_array[idx]
134
+ wma_half_val = wma_half_array[idx]
135
+ if isinstance(wma_full_val, float) and math.isnan(wma_full_val):
136
+ valid = False
137
+ break
138
+ if isinstance(wma_half_val, float) and math.isnan(wma_half_val):
139
+ valid = False
140
+ break
141
+ raw = 2.0 * wma_half_val - wma_full_val
142
+ weighted_sum += weights[sqrtperiod - 1 - j] * raw
143
+ else:
144
+ valid = False
145
+ break
146
+
147
+ if valid and i < len(larray):
148
+ larray[i] = coef * weighted_sum
149
+ elif i < len(larray):
150
+ larray[i] = float("nan")
151
+
152
+
153
+ HMA = HullMovingAverage
@@ -0,0 +1,151 @@
1
+ #!/usr/bin/env python
2
+ """Hurst Exponent Module - Hurst exponent indicator.
3
+
4
+ This module provides the Hurst Exponent indicator for measuring
5
+ long-term memory of time series.
6
+
7
+ Classes:
8
+ HurstExponent: Hurst exponent indicator (alias: Hurst).
9
+
10
+ Example:
11
+ class MyStrategy(bt.Strategy):
12
+ def __init__(self):
13
+ # Use at least 2000 samples for stable Hurst values
14
+ self.hurst = bt.indicators.Hurst(self.data.close, period=2000)
15
+
16
+ def next(self):
17
+ # H > 0.5: trending series, H < 0.5: mean-reverting
18
+ if len(self.data) >= 2000:
19
+ if self.hurst[0] > 0.5:
20
+ # Trend following strategy
21
+ pass
22
+ """
23
+
24
+ from numpy import asarray, isnan, log10, polyfit, sqrt, std, subtract
25
+
26
+ from . import PeriodN
27
+
28
+ __all__ = ["HurstExponent", "Hurst"]
29
+
30
+
31
+ class HurstExponent(PeriodN):
32
+ """
33
+ References:
34
+
35
+ - https://www.quantopian.com/posts/hurst-exponent
36
+ - https://www.quantopian.com/posts/some-code-from-ernie-chans-new-book-implemented-in-python
37
+
38
+ Interpretation of the results
39
+
40
+ 1. Geometric random walk (H=0.5)
41
+ 2. Mean-reverting series (H<0.5)
42
+ 3. Trending Series (H>0.5)
43
+
44
+ Important notes:
45
+
46
+ - The default period is ``40``, but experimentation by users has shown
47
+ that it would be advisable to have at least 2000 samples (i.e.: a
48
+ period of at least 2000) to have stable values.
49
+
50
+ - The `lag_start` and `lag_end` values will default to be ``2`` and
51
+ ``self.p.period / 2`` unless the parameters are specified.
52
+
53
+ Experimentation by users has also shown that values of around 10 and 500 produce good results
54
+
55
+ The original values (40, 2, self.p.period / 2) are kept for backwards
56
+ compatibility
57
+
58
+ """
59
+
60
+ frompackages = (("numpy", ("asarray", "log10", "polyfit", "sqrt", "std", "subtract")),)
61
+
62
+ alias = ("Hurst",)
63
+ lines = ("hurst",)
64
+ params = (
65
+ ("period", 40), # 2000 was proposed
66
+ ("lag_start", None), # 10 was proposed
67
+ ("lag_end", None), # 500 was proposed
68
+ )
69
+
70
+ def _plotlabel(self):
71
+ plabels = [self.p.period]
72
+ plabels += [self._lag_start]
73
+ plabels += [self._lag_end]
74
+ return plabels
75
+
76
+ def __init__(self):
77
+ """Initialize the Hurst Exponent indicator.
78
+
79
+ Prepares lag arrays for calculating the Hurst exponent,
80
+ which measures the long-term memory of a time series.
81
+ """
82
+ super().__init__()
83
+ # Prepare the lag array
84
+ self._lag_start = lag_start = self.p.lag_start or 2
85
+ self._lag_end = lag_end = self.p.lag_end or (self.p.period // 2)
86
+ self.lags = asarray(range(lag_start, lag_end))
87
+ self.log10lags = log10(self.lags)
88
+
89
+ def next(self):
90
+ """Calculate Hurst Exponent for the current bar."""
91
+ # Fetch the data
92
+ ts = asarray(self.data.get(size=self.p.period))
93
+
94
+ # Calculate the array of the variances of the lagged differences
95
+ tau = [sqrt(std(subtract(ts[lag:], ts[:-lag]))) for lag in self.lags]
96
+
97
+ # Use a linear fit to estimate the Hurst Exponent
98
+ poly = polyfit(self.log10lags, log10(tau), 1)
99
+
100
+ # Return the Hurst exponent from the polyfit output
101
+ self.lines.hurst[0] = poly[0] * 2.0
102
+
103
+ def once(self, start, end):
104
+ """Calculate Hurst Exponent in runonce mode"""
105
+ dst = self.lines[0].array
106
+ src = self.data.array
107
+ period = self.p.period
108
+ lags = self.lags
109
+ log10lags = self.log10lags
110
+
111
+ # Ensure destination array is large enough
112
+ while len(dst) < end:
113
+ dst.append(float("nan"))
114
+
115
+ # Calculate Hurst Exponent for each index
116
+ for i in range(start, end):
117
+ if i >= period - 1:
118
+ # Get data slice for this period
119
+ start_idx = i - period + 1
120
+ end_idx = i + 1
121
+ if end_idx <= len(src):
122
+ ts = asarray([float(x) for x in src[start_idx:end_idx]])
123
+
124
+ # Calculate the array of the variances of the lagged differences
125
+ tau = []
126
+ for lag in lags:
127
+ if lag < len(ts):
128
+ lagged_diff = subtract(ts[lag:], ts[:-lag])
129
+ if len(lagged_diff) > 0:
130
+ tau_val = sqrt(std(lagged_diff))
131
+ if not isnan(tau_val) and tau_val > 0:
132
+ tau.append(tau_val)
133
+
134
+ # Use a linear fit to estimate the Hurst Exponent
135
+ if len(tau) > 1 and len(tau) == len(lags):
136
+ try:
137
+ log10tau = log10(tau)
138
+ poly = polyfit(log10lags, log10tau, 1)
139
+ hurst = poly[0] * 2.0
140
+ dst[i] = float(hurst) if not isnan(hurst) else float("nan")
141
+ except (ValueError, TypeError, FloatingPointError):
142
+ dst[i] = float("nan")
143
+ else:
144
+ dst[i] = float("nan")
145
+ else:
146
+ dst[i] = float("nan")
147
+ else:
148
+ dst[i] = float("nan")
149
+
150
+
151
+ Hurst = HurstExponent