From a7de9361404a0c8a1806a652e69c48319d597e39 Mon Sep 17 00:00:00 2001
From: baobach <95854748+baobach@users.noreply.github.com>
Date: Sun, 31 Mar 2024 14:27:47 +0700
Subject: [PATCH 01/21] Update copyright year to 2024

---
 backtrader/__init__.py                                     | 2 +-
 backtrader/analyzer.py                                     | 2 +-
 backtrader/analyzers/__init__.py                           | 2 +-
 backtrader/analyzers/annualreturn.py                       | 2 +-
 backtrader/analyzers/calmar.py                             | 2 +-
 backtrader/analyzers/drawdown.py                           | 2 +-
 backtrader/analyzers/leverage.py                           | 2 +-
 backtrader/analyzers/logreturnsrolling.py                  | 2 +-
 backtrader/analyzers/periodstats.py                        | 2 +-
 backtrader/analyzers/positions.py                          | 2 +-
 backtrader/analyzers/pyfolio.py                            | 2 +-
 backtrader/analyzers/returns.py                            | 2 +-
 backtrader/analyzers/sharpe.py                             | 2 +-
 backtrader/analyzers/sqn.py                                | 2 +-
 backtrader/analyzers/timereturn.py                         | 2 +-
 backtrader/analyzers/tradeanalyzer.py                      | 2 +-
 backtrader/analyzers/transactions.py                       | 2 +-
 backtrader/analyzers/vwr.py                                | 2 +-
 backtrader/broker.py                                       | 2 +-
 backtrader/brokers/__init__.py                             | 2 +-
 backtrader/brokers/bbroker.py                              | 2 +-
 backtrader/brokers/ibbroker.py                             | 2 +-
 backtrader/brokers/oandabroker.py                          | 2 +-
 backtrader/brokers/vcbroker.py                             | 2 +-
 backtrader/btrun/__init__.py                               | 2 +-
 backtrader/btrun/btrun.py                                  | 2 +-
 backtrader/cerebro.py                                      | 2 +-
 backtrader/comminfo.py                                     | 2 +-
 backtrader/commissions/__init__.py                         | 2 +-
 backtrader/dataseries.py                                   | 2 +-
 backtrader/errors.py                                       | 2 +-
 backtrader/feed.py                                         | 2 +-
 backtrader/feeds/__init__.py                               | 2 +-
 backtrader/feeds/blaze.py                                  | 2 +-
 backtrader/feeds/btcsv.py                                  | 2 +-
 backtrader/feeds/chainer.py                                | 2 +-
 backtrader/feeds/csvgeneric.py                             | 2 +-
 backtrader/feeds/ibdata.py                                 | 2 +-
 backtrader/feeds/influxfeed.py                             | 2 +-
 backtrader/feeds/mt4csv.py                                 | 4 ++--
 backtrader/feeds/oanda.py                                  | 2 +-
 backtrader/feeds/pandafeed.py                              | 2 +-
 backtrader/feeds/quandl.py                                 | 2 +-
 backtrader/feeds/rollover.py                               | 2 +-
 backtrader/feeds/sierrachart.py                            | 2 +-
 backtrader/feeds/vcdata.py                                 | 2 +-
 backtrader/feeds/vchart.py                                 | 2 +-
 backtrader/feeds/vchartcsv.py                              | 2 +-
 backtrader/feeds/vchartfile.py                             | 2 +-
 backtrader/feeds/yahoo.py                                  | 2 +-
 backtrader/fillers.py                                      | 2 +-
 backtrader/filters/__init__.py                             | 2 +-
 backtrader/filters/bsplitter.py                            | 2 +-
 backtrader/filters/calendardays.py                         | 2 +-
 backtrader/filters/datafiller.py                           | 2 +-
 backtrader/filters/datafilter.py                           | 2 +-
 backtrader/filters/daysteps.py                             | 2 +-
 backtrader/filters/heikinashi.py                           | 2 +-
 backtrader/filters/renko.py                                | 2 +-
 backtrader/filters/session.py                              | 2 +-
 backtrader/flt.py                                          | 2 +-
 backtrader/functions.py                                    | 2 +-
 backtrader/indicator.py                                    | 2 +-
 backtrader/indicators/__init__.py                          | 2 +-
 backtrader/indicators/accdecoscillator.py                  | 2 +-
 backtrader/indicators/aroon.py                             | 2 +-
 backtrader/indicators/atr.py                               | 2 +-
 backtrader/indicators/awesomeoscillator.py                 | 2 +-
 backtrader/indicators/basicops.py                          | 2 +-
 backtrader/indicators/bollinger.py                         | 2 +-
 backtrader/indicators/cci.py                               | 2 +-
 backtrader/indicators/contrib/__init__.py                  | 2 +-
 backtrader/indicators/contrib/vortex.py                    | 4 ++--
 backtrader/indicators/crossover.py                         | 2 +-
 backtrader/indicators/dema.py                              | 2 +-
 backtrader/indicators/deviation.py                         | 2 +-
 backtrader/indicators/directionalmove.py                   | 2 +-
 backtrader/indicators/dma.py                               | 2 +-
 backtrader/indicators/dpo.py                               | 2 +-
 backtrader/indicators/dv2.py                               | 2 +-
 backtrader/indicators/ema.py                               | 2 +-
 backtrader/indicators/envelope.py                          | 2 +-
 backtrader/indicators/hadelta.py                           | 2 +-
 backtrader/indicators/heikinashi.py                        | 2 +-
 backtrader/indicators/hma.py                               | 2 +-
 backtrader/indicators/hurst.py                             | 2 +-
 backtrader/indicators/ichimoku.py                          | 2 +-
 backtrader/indicators/kama.py                              | 2 +-
 backtrader/indicators/kst.py                               | 2 +-
 backtrader/indicators/lrsi.py                              | 2 +-
 backtrader/indicators/mabase.py                            | 2 +-
 backtrader/indicators/macd.py                              | 2 +-
 backtrader/indicators/momentum.py                          | 2 +-
 backtrader/indicators/ols.py                               | 2 +-
 backtrader/indicators/oscillator.py                        | 2 +-
 backtrader/indicators/percentchange.py                     | 2 +-
 backtrader/indicators/percentrank.py                       | 2 +-
 backtrader/indicators/pivotpoint.py                        | 2 +-
 backtrader/indicators/prettygoodoscillator.py              | 2 +-
 backtrader/indicators/priceoscillator.py                   | 2 +-
 backtrader/indicators/psar.py                              | 2 +-
 backtrader/indicators/rmi.py                               | 2 +-
 backtrader/indicators/rsi.py                               | 2 +-
 backtrader/indicators/sma.py                               | 2 +-
 backtrader/indicators/smma.py                              | 2 +-
 backtrader/indicators/stochastic.py                        | 2 +-
 backtrader/indicators/trix.py                              | 2 +-
 backtrader/indicators/tsi.py                               | 2 +-
 backtrader/indicators/ultimateoscillator.py                | 2 +-
 backtrader/indicators/vortex.py                            | 2 +-
 backtrader/indicators/williams.py                          | 2 +-
 backtrader/indicators/wma.py                               | 2 +-
 backtrader/indicators/zlema.py                             | 2 +-
 backtrader/indicators/zlind.py                             | 2 +-
 backtrader/linebuffer.py                                   | 2 +-
 backtrader/lineiterator.py                                 | 2 +-
 backtrader/lineroot.py                                     | 2 +-
 backtrader/lineseries.py                                   | 2 +-
 backtrader/mathsupport.py                                  | 2 +-
 backtrader/metabase.py                                     | 2 +-
 backtrader/observer.py                                     | 2 +-
 backtrader/observers/__init__.py                           | 2 +-
 backtrader/observers/benchmark.py                          | 2 +-
 backtrader/observers/broker.py                             | 2 +-
 backtrader/observers/buysell.py                            | 2 +-
 backtrader/observers/drawdown.py                           | 2 +-
 backtrader/observers/logreturns.py                         | 2 +-
 backtrader/observers/timereturn.py                         | 2 +-
 backtrader/observers/trades.py                             | 2 +-
 backtrader/order.py                                        | 2 +-
 backtrader/plot/__init__.py                                | 2 +-
 backtrader/plot/finance.py                                 | 2 +-
 backtrader/plot/formatters.py                              | 2 +-
 backtrader/plot/locator.py                                 | 2 +-
 backtrader/plot/plot.py                                    | 2 +-
 backtrader/plot/scheme.py                                  | 2 +-
 backtrader/plot/utils.py                                   | 2 +-
 backtrader/position.py                                     | 2 +-
 backtrader/resamplerfilter.py                              | 2 +-
 backtrader/signal.py                                       | 2 +-
 backtrader/signals/__init__.py                             | 2 +-
 backtrader/sizer.py                                        | 2 +-
 backtrader/sizers/__init__.py                              | 2 +-
 backtrader/sizers/fixedsize.py                             | 2 +-
 backtrader/sizers/percents_sizer.py                        | 2 +-
 backtrader/store.py                                        | 2 +-
 backtrader/stores/__init__.py                              | 2 +-
 backtrader/stores/ibstore.py                               | 2 +-
 backtrader/stores/oandastore.py                            | 2 +-
 backtrader/stores/vchartfile.py                            | 2 +-
 backtrader/stores/vcstore.py                               | 2 +-
 backtrader/strategies/__init__.py                          | 2 +-
 backtrader/strategies/sma_crossover.py                     | 2 +-
 backtrader/strategy.py                                     | 2 +-
 backtrader/studies/__init__.py                             | 2 +-
 backtrader/studies/contrib/__init__.py                     | 2 +-
 backtrader/studies/contrib/fractal.py                      | 2 +-
 backtrader/talib.py                                        | 2 +-
 backtrader/timer.py                                        | 2 +-
 backtrader/trade.py                                        | 2 +-
 backtrader/tradingcal.py                                   | 2 +-
 backtrader/utils/__init__.py                               | 2 +-
 backtrader/utils/autodict.py                               | 2 +-
 backtrader/utils/date.py                                   | 2 +-
 backtrader/utils/dateintern.py                             | 2 +-
 backtrader/utils/ordereddefaultdict.py                     | 2 +-
 backtrader/utils/py3.py                                    | 2 +-
 backtrader/version.py                                      | 2 +-
 backtrader/writer.py                                       | 2 +-
 samples/analyzer-annualreturn/analyzer-annualreturn.py     | 2 +-
 samples/bidask-to-ohlc/bidask-to-ohlc.py                   | 2 +-
 samples/bracket/bracket.py                                 | 2 +-
 samples/btfd/btfd.py                                       | 2 +-
 samples/calendar-days/calendar-days.py                     | 2 +-
 samples/calmar/calmar-test.py                              | 2 +-
 samples/cheat-on-open/cheat-on-open.py                     | 2 +-
 samples/commission-schemes/commission-schemes.py           | 2 +-
 samples/credit-interest/credit-interest.py                 | 2 +-
 samples/data-bid-ask/bidask.py                             | 2 +-
 samples/data-filler/data-filler.py                         | 2 +-
 samples/data-filler/relativevolume.py                      | 2 +-
 samples/data-multitimeframe/data-multitimeframe.py         | 2 +-
 samples/data-pandas/data-pandas-optix.py                   | 2 +-
 samples/data-pandas/data-pandas.py                         | 2 +-
 samples/data-replay/data-replay.py                         | 2 +-
 samples/data-resample/data-resample.py                     | 2 +-
 samples/daysteps/daysteps.py                               | 2 +-
 samples/future-spot/future-spot.py                         | 2 +-
 samples/gold-vs-sp500/gold-vs-sp500.py                     | 2 +-
 samples/ib-cash-bid-ask/ib-cash-bid-ask.py                 | 2 +-
 samples/ibtest/ibtest.py                                   | 2 +-
 samples/kselrsi/ksignal.py                                 | 2 +-
 samples/lineplotter/lineplotter.py                         | 2 +-
 samples/lrsi/lrsi-test.py                                  | 2 +-
 samples/macd-settings/macd-settings.py                     | 2 +-
 samples/memory-savings/memory-savings.py                   | 2 +-
 samples/mixing-timeframes/mixing-timeframes.py             | 2 +-
 samples/multi-copy/multi-copy.py                           | 2 +-
 samples/multi-example/mult-values.py                       | 2 +-
 samples/multidata-strategy/multidata-strategy-unaligned.py | 2 +-
 samples/multidata-strategy/multidata-strategy.py           | 2 +-
 samples/multitrades/mtradeobserver.py                      | 2 +-
 samples/multitrades/multitrades.py                         | 2 +-
 samples/oandatest/oandatest.py                             | 2 +-
 samples/observer-benchmark/observer-benchmark.py           | 2 +-
 samples/observers/observers-default-drawdown.py            | 2 +-
 samples/observers/observers-default.py                     | 2 +-
 samples/observers/observers-orderobserver.py               | 2 +-
 samples/observers/orderobserver.py                         | 2 +-
 samples/oco/oco.py                                         | 2 +-
 samples/optimization/optimization.py                       | 2 +-
 samples/order-close/close-daily.py                         | 2 +-
 samples/order-close/close-minute.py                        | 2 +-
 samples/order-execution/order-execution.py                 | 2 +-
 samples/order-history/order-history.py                     | 2 +-
 samples/order_target/order_target.py                       | 2 +-
 samples/partial-plot/partial-plot.py                       | 2 +-
 samples/pinkfish-challenge/pinkfish-challenge.py           | 2 +-
 samples/pivot-point/pivotpoint.py                          | 2 +-
 samples/pivot-point/ppsample.py                            | 2 +-
 samples/plot-same-axis/plot-same-axis.py                   | 2 +-
 samples/psar/psar-intraday.py                              | 2 +-
 samples/psar/psar.py                                       | 2 +-
 samples/pyfolio2/pyfoliotest.py                            | 2 +-
 samples/pyfoliotest/pyfoliotest.py                         | 2 +-
 samples/relative-volume/relative-volume.py                 | 2 +-
 samples/relative-volume/relvolbybar.py                     | 2 +-
 samples/renko/renko.py                                     | 2 +-
 samples/resample-tickdata/resample-tickdata.py             | 2 +-
 samples/rollover/rollover.py                               | 2 +-
 samples/sharpe-timereturn/sharpe-timereturn.py             | 2 +-
 samples/signals-strategy/signals-strategy.py               | 2 +-
 samples/sigsmacross/sigsmacross.py                         | 2 +-
 samples/sigsmacross/sigsmacross2.py                        | 2 +-
 samples/sizertest/sizertest.py                             | 2 +-
 samples/slippage/slippage.py                               | 2 +-
 samples/stop-trading/stop-loss-approaches.py               | 2 +-
 samples/stoptrail/trail.py                                 | 2 +-
 samples/strategy-selection/strategy-selection.py           | 2 +-
 samples/talib/tablibsartest.py                             | 2 +-
 samples/talib/talibtest.py                                 | 2 +-
 samples/timers/scheduled-min.py                            | 2 +-
 samples/timers/scheduled.py                                | 2 +-
 samples/tradingcalendar/tcal-intra.py                      | 2 +-
 samples/tradingcalendar/tcal.py                            | 2 +-
 samples/vctest/vctest.py                                   | 2 +-
 samples/volumefilling/volumefilling.py                     | 2 +-
 samples/vwr/vwr.py                                         | 2 +-
 samples/weekdays-filler/weekdaysaligner.py                 | 2 +-
 samples/weekdays-filler/weekdaysfiller.py                  | 2 +-
 samples/writer-test/writer-test.py                         | 2 +-
 samples/yahoo-test/yahoo-test.py                           | 2 +-
 setup.py                                                   | 2 +-
 tests/test_analyzer-sqn.py                                 | 2 +-
 tests/test_analyzer-timereturn.py                          | 2 +-
 tests/test_comminfo.py                                     | 2 +-
 tests/test_data_multiframe.py                              | 2 +-
 tests/test_data_replay.py                                  | 2 +-
 tests/test_data_resample.py                                | 2 +-
 tests/test_ind_accdecosc.py                                | 2 +-
 tests/test_ind_aroonoscillator.py                          | 2 +-
 tests/test_ind_aroonupdown.py                              | 2 +-
 tests/test_ind_atr.py                                      | 2 +-
 tests/test_ind_awesomeoscillator.py                        | 2 +-
 tests/test_ind_bbands.py                                   | 2 +-
 tests/test_ind_cci.py                                      | 2 +-
 tests/test_ind_dema.py                                     | 2 +-
 tests/test_ind_demaenvelope.py                             | 2 +-
 tests/test_ind_demaosc.py                                  | 2 +-
 tests/test_ind_dm.py                                       | 2 +-
 tests/test_ind_dma.py                                      | 2 +-
 tests/test_ind_downmove.py                                 | 2 +-
 tests/test_ind_dpo.py                                      | 2 +-
 tests/test_ind_dv2.py                                      | 2 +-
 tests/test_ind_ema.py                                      | 2 +-
 tests/test_ind_emaenvelope.py                              | 2 +-
 tests/test_ind_emaosc.py                                   | 2 +-
 tests/test_ind_envelope.py                                 | 2 +-
 tests/test_ind_heikinashi.py                               | 2 +-
 tests/test_ind_highest.py                                  | 2 +-
 tests/test_ind_hma.py                                      | 2 +-
 tests/test_ind_ichimoku.py                                 | 2 +-
 tests/test_ind_kama.py                                     | 2 +-
 tests/test_ind_kamaenvelope.py                             | 2 +-
 tests/test_ind_kamaosc.py                                  | 2 +-
 tests/test_ind_kst.py                                      | 2 +-
 tests/test_ind_lowest.py                                   | 2 +-
 tests/test_ind_lrsi.py                                     | 2 +-
 tests/test_ind_macdhisto.py                                | 2 +-
 tests/test_ind_minperiod.py                                | 2 +-
 tests/test_ind_momentum.py                                 | 2 +-
 tests/test_ind_momentumoscillator.py                       | 2 +-
 tests/test_ind_oscillator.py                               | 2 +-
 tests/test_ind_pctchange.py                                | 2 +-
 tests/test_ind_pctrank.py                                  | 2 +-
 tests/test_ind_pgo.py                                      | 2 +-
 tests/test_ind_ppo.py                                      | 2 +-
 tests/test_ind_pposhort.py                                 | 2 +-
 tests/test_ind_priceosc.py                                 | 2 +-
 tests/test_ind_rmi.py                                      | 2 +-
 tests/test_ind_roc.py                                      | 2 +-
 tests/test_ind_rsi.py                                      | 2 +-
 tests/test_ind_rsi_safe.py                                 | 2 +-
 tests/test_ind_sma.py                                      | 2 +-
 tests/test_ind_smaenvelope.py                              | 2 +-
 tests/test_ind_smaosc.py                                   | 2 +-
 tests/test_ind_smma.py                                     | 2 +-
 tests/test_ind_smmaenvelope.py                             | 2 +-
 tests/test_ind_smmaosc.py                                  | 2 +-
 tests/test_ind_stochastic.py                               | 2 +-
 tests/test_ind_stochasticfull.py                           | 2 +-
 tests/test_ind_sumn.py                                     | 2 +-
 tests/test_ind_tema.py                                     | 2 +-
 tests/test_ind_temaenvelope.py                             | 2 +-
 tests/test_ind_temaosc.py                                  | 2 +-
 tests/test_ind_trix.py                                     | 2 +-
 tests/test_ind_tsi.py                                      | 2 +-
 tests/test_ind_ultosc.py                                   | 2 +-
 tests/test_ind_upmove.py                                   | 2 +-
 tests/test_ind_vortex.py                                   | 2 +-
 tests/test_ind_williamsad.py                               | 2 +-
 tests/test_ind_williamsr.py                                | 2 +-
 tests/test_ind_wma.py                                      | 2 +-
 tests/test_ind_wmaenvelope.py                              | 2 +-
 tests/test_ind_wmaosc.py                                   | 2 +-
 tests/test_ind_zlema.py                                    | 2 +-
 tests/test_ind_zlind.py                                    | 2 +-
 tests/test_metaclass.py                                    | 2 +-
 tests/test_order.py                                        | 2 +-
 tests/test_position.py                                     | 2 +-
 tests/test_strategy_optimized.py                           | 2 +-
 tests/test_strategy_unoptimized.py                         | 2 +-
 tests/test_study_fractal.py                                | 2 +-
 tests/test_trade.py                                        | 2 +-
 tests/test_writer.py                                       | 2 +-
 tests/testcommon.py                                        | 2 +-
 tools/bt-run.py                                            | 2 +-
 tools/rewrite-data.py                                      | 2 +-
 tools/yahoodownload.py                                     | 2 +-
 339 files changed, 341 insertions(+), 341 deletions(-)

diff --git a/backtrader/__init__.py b/backtrader/__init__.py
index 15770f55a..79402d15c 100644
--- a/backtrader/__init__.py
+++ b/backtrader/__init__.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzer.py b/backtrader/analyzer.py
index 51abc02a5..a07a91a67 100644
--- a/backtrader/analyzer.py
+++ b/backtrader/analyzer.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/__init__.py b/backtrader/analyzers/__init__.py
index e54cc09ad..e0a57f53f 100644
--- a/backtrader/analyzers/__init__.py
+++ b/backtrader/analyzers/__init__.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/annualreturn.py b/backtrader/analyzers/annualreturn.py
index d29024b52..cb20d3d32 100644
--- a/backtrader/analyzers/annualreturn.py
+++ b/backtrader/analyzers/annualreturn.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/calmar.py b/backtrader/analyzers/calmar.py
index 97cb59c04..310c764a3 100644
--- a/backtrader/analyzers/calmar.py
+++ b/backtrader/analyzers/calmar.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/drawdown.py b/backtrader/analyzers/drawdown.py
index 022168972..909abf04a 100644
--- a/backtrader/analyzers/drawdown.py
+++ b/backtrader/analyzers/drawdown.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/leverage.py b/backtrader/analyzers/leverage.py
index 749362f00..9ad2d5b6b 100644
--- a/backtrader/analyzers/leverage.py
+++ b/backtrader/analyzers/leverage.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/logreturnsrolling.py b/backtrader/analyzers/logreturnsrolling.py
index 4dc8a8465..81a7136ba 100644
--- a/backtrader/analyzers/logreturnsrolling.py
+++ b/backtrader/analyzers/logreturnsrolling.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/periodstats.py b/backtrader/analyzers/periodstats.py
index 07271baec..50bdf96d6 100644
--- a/backtrader/analyzers/periodstats.py
+++ b/backtrader/analyzers/periodstats.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/positions.py b/backtrader/analyzers/positions.py
index 7d2e1d7c4..3be365f0c 100644
--- a/backtrader/analyzers/positions.py
+++ b/backtrader/analyzers/positions.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/pyfolio.py b/backtrader/analyzers/pyfolio.py
index d15bc9d04..95d2788a4 100644
--- a/backtrader/analyzers/pyfolio.py
+++ b/backtrader/analyzers/pyfolio.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/returns.py b/backtrader/analyzers/returns.py
index ceb39e31e..23d67c3d0 100644
--- a/backtrader/analyzers/returns.py
+++ b/backtrader/analyzers/returns.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/sharpe.py b/backtrader/analyzers/sharpe.py
index d6971c636..6988d21dd 100644
--- a/backtrader/analyzers/sharpe.py
+++ b/backtrader/analyzers/sharpe.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/sqn.py b/backtrader/analyzers/sqn.py
index 56732f856..2ce71a6d8 100644
--- a/backtrader/analyzers/sqn.py
+++ b/backtrader/analyzers/sqn.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/timereturn.py b/backtrader/analyzers/timereturn.py
index 70374e368..8407ae649 100644
--- a/backtrader/analyzers/timereturn.py
+++ b/backtrader/analyzers/timereturn.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/tradeanalyzer.py b/backtrader/analyzers/tradeanalyzer.py
index 2714d0124..c9b549331 100644
--- a/backtrader/analyzers/tradeanalyzer.py
+++ b/backtrader/analyzers/tradeanalyzer.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/transactions.py b/backtrader/analyzers/transactions.py
index dbeb94e94..07e1a4129 100644
--- a/backtrader/analyzers/transactions.py
+++ b/backtrader/analyzers/transactions.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/vwr.py b/backtrader/analyzers/vwr.py
index 2bd758aed..e2990a304 100644
--- a/backtrader/analyzers/vwr.py
+++ b/backtrader/analyzers/vwr.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/broker.py b/backtrader/broker.py
index b88de5b21..5493864b5 100644
--- a/backtrader/broker.py
+++ b/backtrader/broker.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/brokers/__init__.py b/backtrader/brokers/__init__.py
index 0efd3ce67..111d67535 100644
--- a/backtrader/brokers/__init__.py
+++ b/backtrader/brokers/__init__.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/brokers/bbroker.py b/backtrader/brokers/bbroker.py
index 1c7a64d80..3ae614b89 100644
--- a/backtrader/brokers/bbroker.py
+++ b/backtrader/brokers/bbroker.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/brokers/ibbroker.py b/backtrader/brokers/ibbroker.py
index 20e63dffc..5109dce27 100644
--- a/backtrader/brokers/ibbroker.py
+++ b/backtrader/brokers/ibbroker.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/brokers/oandabroker.py b/backtrader/brokers/oandabroker.py
index c584904be..4fe63e4d6 100644
--- a/backtrader/brokers/oandabroker.py
+++ b/backtrader/brokers/oandabroker.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/brokers/vcbroker.py b/backtrader/brokers/vcbroker.py
index 4c98d94e5..f70a79ccd 100644
--- a/backtrader/brokers/vcbroker.py
+++ b/backtrader/brokers/vcbroker.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/btrun/__init__.py b/backtrader/btrun/__init__.py
index e3b9c4a6f..334a8f8e5 100644
--- a/backtrader/btrun/__init__.py
+++ b/backtrader/btrun/__init__.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/btrun/btrun.py b/backtrader/btrun/btrun.py
index f93727629..790b21145 100644
--- a/backtrader/btrun/btrun.py
+++ b/backtrader/btrun/btrun.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/cerebro.py b/backtrader/cerebro.py
index 9b18e7775..7d9403668 100644
--- a/backtrader/cerebro.py
+++ b/backtrader/cerebro.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/comminfo.py b/backtrader/comminfo.py
index 6bfd8e015..b28960313 100644
--- a/backtrader/comminfo.py
+++ b/backtrader/comminfo.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/commissions/__init__.py b/backtrader/commissions/__init__.py
index 209627eb6..1900aff0f 100644
--- a/backtrader/commissions/__init__.py
+++ b/backtrader/commissions/__init__.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/dataseries.py b/backtrader/dataseries.py
index f35c170f4..4b9dd662b 100644
--- a/backtrader/dataseries.py
+++ b/backtrader/dataseries.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/errors.py b/backtrader/errors.py
index 5f3dcdb33..c0c026811 100644
--- a/backtrader/errors.py
+++ b/backtrader/errors.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feed.py b/backtrader/feed.py
index 84c6b2b89..09824a455 100644
--- a/backtrader/feed.py
+++ b/backtrader/feed.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/__init__.py b/backtrader/feeds/__init__.py
index 8054715dc..aba95718e 100644
--- a/backtrader/feeds/__init__.py
+++ b/backtrader/feeds/__init__.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/blaze.py b/backtrader/feeds/blaze.py
index 5496e50b8..c9f0f67b2 100644
--- a/backtrader/feeds/blaze.py
+++ b/backtrader/feeds/blaze.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/btcsv.py b/backtrader/feeds/btcsv.py
index 1d00e0745..ce005ef34 100644
--- a/backtrader/feeds/btcsv.py
+++ b/backtrader/feeds/btcsv.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/chainer.py b/backtrader/feeds/chainer.py
index 9cce29df9..6a7352d22 100644
--- a/backtrader/feeds/chainer.py
+++ b/backtrader/feeds/chainer.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/csvgeneric.py b/backtrader/feeds/csvgeneric.py
index cc6a30d0c..6fedf07f5 100644
--- a/backtrader/feeds/csvgeneric.py
+++ b/backtrader/feeds/csvgeneric.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/ibdata.py b/backtrader/feeds/ibdata.py
index 66b012552..e93ceb6d5 100644
--- a/backtrader/feeds/ibdata.py
+++ b/backtrader/feeds/ibdata.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/influxfeed.py b/backtrader/feeds/influxfeed.py
index 7f047b8ae..acc9165e9 100644
--- a/backtrader/feeds/influxfeed.py
+++ b/backtrader/feeds/influxfeed.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/mt4csv.py b/backtrader/feeds/mt4csv.py
index 74dc7dbca..327461bf8 100644
--- a/backtrader/feeds/mt4csv.py
+++ b/backtrader/feeds/mt4csv.py
@@ -2,8 +2,8 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/oanda.py b/backtrader/feeds/oanda.py
index 2581772ea..5ef27eaf8 100644
--- a/backtrader/feeds/oanda.py
+++ b/backtrader/feeds/oanda.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/pandafeed.py b/backtrader/feeds/pandafeed.py
index cc90953ae..349023fa0 100644
--- a/backtrader/feeds/pandafeed.py
+++ b/backtrader/feeds/pandafeed.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/quandl.py b/backtrader/feeds/quandl.py
index 08ea1b2c3..b94cc5088 100644
--- a/backtrader/feeds/quandl.py
+++ b/backtrader/feeds/quandl.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/rollover.py b/backtrader/feeds/rollover.py
index 689118d27..f9b0ea403 100644
--- a/backtrader/feeds/rollover.py
+++ b/backtrader/feeds/rollover.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/sierrachart.py b/backtrader/feeds/sierrachart.py
index ce12323ce..7fe679ba3 100644
--- a/backtrader/feeds/sierrachart.py
+++ b/backtrader/feeds/sierrachart.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/vcdata.py b/backtrader/feeds/vcdata.py
index f60a0e760..0febde794 100644
--- a/backtrader/feeds/vcdata.py
+++ b/backtrader/feeds/vcdata.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/vchart.py b/backtrader/feeds/vchart.py
index 9f042c718..f1588b58b 100644
--- a/backtrader/feeds/vchart.py
+++ b/backtrader/feeds/vchart.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/vchartcsv.py b/backtrader/feeds/vchartcsv.py
index d5dbdf345..b27b8b275 100644
--- a/backtrader/feeds/vchartcsv.py
+++ b/backtrader/feeds/vchartcsv.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/vchartfile.py b/backtrader/feeds/vchartfile.py
index 1e7b84ec6..daa4bc6e2 100644
--- a/backtrader/feeds/vchartfile.py
+++ b/backtrader/feeds/vchartfile.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/yahoo.py b/backtrader/feeds/yahoo.py
index d9a05212a..666c87e04 100644
--- a/backtrader/feeds/yahoo.py
+++ b/backtrader/feeds/yahoo.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/fillers.py b/backtrader/fillers.py
index 3bd298f88..d2d639dd4 100644
--- a/backtrader/fillers.py
+++ b/backtrader/fillers.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/filters/__init__.py b/backtrader/filters/__init__.py
index 3e6cad695..a93629bd1 100644
--- a/backtrader/filters/__init__.py
+++ b/backtrader/filters/__init__.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/filters/bsplitter.py b/backtrader/filters/bsplitter.py
index 997aa2a51..7df92e0b0 100644
--- a/backtrader/filters/bsplitter.py
+++ b/backtrader/filters/bsplitter.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/filters/calendardays.py b/backtrader/filters/calendardays.py
index 8f1345eb2..4074cc453 100644
--- a/backtrader/filters/calendardays.py
+++ b/backtrader/filters/calendardays.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/filters/datafiller.py b/backtrader/filters/datafiller.py
index 87fe0521c..270c3cd3e 100644
--- a/backtrader/filters/datafiller.py
+++ b/backtrader/filters/datafiller.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/filters/datafilter.py b/backtrader/filters/datafilter.py
index f9fa8e25f..15fea96ec 100644
--- a/backtrader/filters/datafilter.py
+++ b/backtrader/filters/datafilter.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/filters/daysteps.py b/backtrader/filters/daysteps.py
index 7d56bd222..4c0719aec 100644
--- a/backtrader/filters/daysteps.py
+++ b/backtrader/filters/daysteps.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/filters/heikinashi.py b/backtrader/filters/heikinashi.py
index 08165e73a..0d1f50c93 100644
--- a/backtrader/filters/heikinashi.py
+++ b/backtrader/filters/heikinashi.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/filters/renko.py b/backtrader/filters/renko.py
index d07c080e7..cd64385a4 100644
--- a/backtrader/filters/renko.py
+++ b/backtrader/filters/renko.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/filters/session.py b/backtrader/filters/session.py
index 60e437b5b..3d351d252 100644
--- a/backtrader/filters/session.py
+++ b/backtrader/filters/session.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/flt.py b/backtrader/flt.py
index 018385dae..718d56785 100644
--- a/backtrader/flt.py
+++ b/backtrader/flt.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/functions.py b/backtrader/functions.py
index 40109bba7..87bbb7afa 100644
--- a/backtrader/functions.py
+++ b/backtrader/functions.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicator.py b/backtrader/indicator.py
index b46b31785..15e1ad56a 100644
--- a/backtrader/indicator.py
+++ b/backtrader/indicator.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/__init__.py b/backtrader/indicators/__init__.py
index da7735c23..f201e16b7 100644
--- a/backtrader/indicators/__init__.py
+++ b/backtrader/indicators/__init__.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/accdecoscillator.py b/backtrader/indicators/accdecoscillator.py
index e3496932d..44abf2163 100644
--- a/backtrader/indicators/accdecoscillator.py
+++ b/backtrader/indicators/accdecoscillator.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/aroon.py b/backtrader/indicators/aroon.py
index 98782d0f6..142135fd7 100644
--- a/backtrader/indicators/aroon.py
+++ b/backtrader/indicators/aroon.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/atr.py b/backtrader/indicators/atr.py
index c6fd72e20..3fa2915ca 100644
--- a/backtrader/indicators/atr.py
+++ b/backtrader/indicators/atr.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/awesomeoscillator.py b/backtrader/indicators/awesomeoscillator.py
index 40b5ac16d..dadb7c791 100644
--- a/backtrader/indicators/awesomeoscillator.py
+++ b/backtrader/indicators/awesomeoscillator.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/basicops.py b/backtrader/indicators/basicops.py
index b4e3c6b24..d2f47cc40 100644
--- a/backtrader/indicators/basicops.py
+++ b/backtrader/indicators/basicops.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/bollinger.py b/backtrader/indicators/bollinger.py
index 8f95474ad..fd0a2c70a 100644
--- a/backtrader/indicators/bollinger.py
+++ b/backtrader/indicators/bollinger.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/cci.py b/backtrader/indicators/cci.py
index ab07f61f8..8b5bcbedf 100644
--- a/backtrader/indicators/cci.py
+++ b/backtrader/indicators/cci.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/contrib/__init__.py b/backtrader/indicators/contrib/__init__.py
index e7bb3d36a..432da94f4 100644
--- a/backtrader/indicators/contrib/__init__.py
+++ b/backtrader/indicators/contrib/__init__.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/contrib/vortex.py b/backtrader/indicators/contrib/vortex.py
index fbeab5c64..803371a23 100644
--- a/backtrader/indicators/contrib/vortex.py
+++ b/backtrader/indicators/contrib/vortex.py
@@ -2,8 +2,8 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/crossover.py b/backtrader/indicators/crossover.py
index 86c0f5de6..6ddb7d044 100644
--- a/backtrader/indicators/crossover.py
+++ b/backtrader/indicators/crossover.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/dema.py b/backtrader/indicators/dema.py
index 4f293a1e8..6c955b7f4 100644
--- a/backtrader/indicators/dema.py
+++ b/backtrader/indicators/dema.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/deviation.py b/backtrader/indicators/deviation.py
index 33ed54826..d92c79ac6 100644
--- a/backtrader/indicators/deviation.py
+++ b/backtrader/indicators/deviation.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/directionalmove.py b/backtrader/indicators/directionalmove.py
index f52cd1468..423e662d5 100644
--- a/backtrader/indicators/directionalmove.py
+++ b/backtrader/indicators/directionalmove.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/dma.py b/backtrader/indicators/dma.py
index 596e17023..6a8231209 100644
--- a/backtrader/indicators/dma.py
+++ b/backtrader/indicators/dma.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/dpo.py b/backtrader/indicators/dpo.py
index f150ace5a..5788dc37b 100644
--- a/backtrader/indicators/dpo.py
+++ b/backtrader/indicators/dpo.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/dv2.py b/backtrader/indicators/dv2.py
index 0bde533ab..be9c3c2c6 100644
--- a/backtrader/indicators/dv2.py
+++ b/backtrader/indicators/dv2.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/ema.py b/backtrader/indicators/ema.py
index a3054c24d..401555705 100644
--- a/backtrader/indicators/ema.py
+++ b/backtrader/indicators/ema.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/envelope.py b/backtrader/indicators/envelope.py
index ba117613b..65e3e71f3 100644
--- a/backtrader/indicators/envelope.py
+++ b/backtrader/indicators/envelope.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/hadelta.py b/backtrader/indicators/hadelta.py
index d2b0a7231..b33acb1ea 100644
--- a/backtrader/indicators/hadelta.py
+++ b/backtrader/indicators/hadelta.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/heikinashi.py b/backtrader/indicators/heikinashi.py
index a58ef2751..509e7a59b 100644
--- a/backtrader/indicators/heikinashi.py
+++ b/backtrader/indicators/heikinashi.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/hma.py b/backtrader/indicators/hma.py
index 5f9185277..12b47b169 100644
--- a/backtrader/indicators/hma.py
+++ b/backtrader/indicators/hma.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/hurst.py b/backtrader/indicators/hurst.py
index 90c57b1b8..62e602a24 100644
--- a/backtrader/indicators/hurst.py
+++ b/backtrader/indicators/hurst.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/ichimoku.py b/backtrader/indicators/ichimoku.py
index c08543212..3f59eb1b4 100644
--- a/backtrader/indicators/ichimoku.py
+++ b/backtrader/indicators/ichimoku.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/kama.py b/backtrader/indicators/kama.py
index 704d6b40f..6dfc612a8 100644
--- a/backtrader/indicators/kama.py
+++ b/backtrader/indicators/kama.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/kst.py b/backtrader/indicators/kst.py
index 5933eda42..957517f7c 100644
--- a/backtrader/indicators/kst.py
+++ b/backtrader/indicators/kst.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/lrsi.py b/backtrader/indicators/lrsi.py
index d6a9817e0..b1bd7a5ba 100644
--- a/backtrader/indicators/lrsi.py
+++ b/backtrader/indicators/lrsi.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/mabase.py b/backtrader/indicators/mabase.py
index c9dc8b437..42d54c61a 100644
--- a/backtrader/indicators/mabase.py
+++ b/backtrader/indicators/mabase.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/macd.py b/backtrader/indicators/macd.py
index e12663fe2..73f5ad5d5 100644
--- a/backtrader/indicators/macd.py
+++ b/backtrader/indicators/macd.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/momentum.py b/backtrader/indicators/momentum.py
index 4f9d9ec40..8edb71306 100644
--- a/backtrader/indicators/momentum.py
+++ b/backtrader/indicators/momentum.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/ols.py b/backtrader/indicators/ols.py
index 639a84502..8481805c7 100644
--- a/backtrader/indicators/ols.py
+++ b/backtrader/indicators/ols.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/oscillator.py b/backtrader/indicators/oscillator.py
index 8155c3296..540c9f6b7 100644
--- a/backtrader/indicators/oscillator.py
+++ b/backtrader/indicators/oscillator.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/percentchange.py b/backtrader/indicators/percentchange.py
index c1013db04..95884bbcd 100644
--- a/backtrader/indicators/percentchange.py
+++ b/backtrader/indicators/percentchange.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/percentrank.py b/backtrader/indicators/percentrank.py
index 3d4f14f9c..629efbf54 100644
--- a/backtrader/indicators/percentrank.py
+++ b/backtrader/indicators/percentrank.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/pivotpoint.py b/backtrader/indicators/pivotpoint.py
index 750b4ab80..1b659ca1d 100644
--- a/backtrader/indicators/pivotpoint.py
+++ b/backtrader/indicators/pivotpoint.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/prettygoodoscillator.py b/backtrader/indicators/prettygoodoscillator.py
index 7db3ef0fa..088fd1d97 100644
--- a/backtrader/indicators/prettygoodoscillator.py
+++ b/backtrader/indicators/prettygoodoscillator.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/priceoscillator.py b/backtrader/indicators/priceoscillator.py
index 083f0ff4c..c345b4201 100644
--- a/backtrader/indicators/priceoscillator.py
+++ b/backtrader/indicators/priceoscillator.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/psar.py b/backtrader/indicators/psar.py
index b03c899e6..58f03b165 100644
--- a/backtrader/indicators/psar.py
+++ b/backtrader/indicators/psar.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/rmi.py b/backtrader/indicators/rmi.py
index e9a950a19..a05322dd1 100644
--- a/backtrader/indicators/rmi.py
+++ b/backtrader/indicators/rmi.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/rsi.py b/backtrader/indicators/rsi.py
index 56cd9210b..8acdf1dfe 100644
--- a/backtrader/indicators/rsi.py
+++ b/backtrader/indicators/rsi.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/sma.py b/backtrader/indicators/sma.py
index 0207131ee..bd600daaf 100644
--- a/backtrader/indicators/sma.py
+++ b/backtrader/indicators/sma.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/smma.py b/backtrader/indicators/smma.py
index 6859f8498..8ecb39a80 100644
--- a/backtrader/indicators/smma.py
+++ b/backtrader/indicators/smma.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/stochastic.py b/backtrader/indicators/stochastic.py
index 1cb5c7caa..74ffbadfd 100644
--- a/backtrader/indicators/stochastic.py
+++ b/backtrader/indicators/stochastic.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/trix.py b/backtrader/indicators/trix.py
index 03964a54e..d6bea4fa7 100644
--- a/backtrader/indicators/trix.py
+++ b/backtrader/indicators/trix.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/tsi.py b/backtrader/indicators/tsi.py
index 8b8025f23..f4a9078f3 100644
--- a/backtrader/indicators/tsi.py
+++ b/backtrader/indicators/tsi.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/ultimateoscillator.py b/backtrader/indicators/ultimateoscillator.py
index cd9a88e6c..5773f0af0 100644
--- a/backtrader/indicators/ultimateoscillator.py
+++ b/backtrader/indicators/ultimateoscillator.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/vortex.py b/backtrader/indicators/vortex.py
index dd369cc40..2fcd4cc20 100644
--- a/backtrader/indicators/vortex.py
+++ b/backtrader/indicators/vortex.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/williams.py b/backtrader/indicators/williams.py
index cafe0a97b..52d92dda7 100644
--- a/backtrader/indicators/williams.py
+++ b/backtrader/indicators/williams.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/wma.py b/backtrader/indicators/wma.py
index 62fecc0a6..0361db679 100644
--- a/backtrader/indicators/wma.py
+++ b/backtrader/indicators/wma.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/zlema.py b/backtrader/indicators/zlema.py
index ef3c57182..6fd21ec77 100644
--- a/backtrader/indicators/zlema.py
+++ b/backtrader/indicators/zlema.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/zlind.py b/backtrader/indicators/zlind.py
index 19ec77e10..6d4fa69d5 100644
--- a/backtrader/indicators/zlind.py
+++ b/backtrader/indicators/zlind.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/linebuffer.py b/backtrader/linebuffer.py
index 0102ddbe0..9a553bc6d 100644
--- a/backtrader/linebuffer.py
+++ b/backtrader/linebuffer.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/lineiterator.py b/backtrader/lineiterator.py
index 2ead478b8..c92b0f3ab 100644
--- a/backtrader/lineiterator.py
+++ b/backtrader/lineiterator.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/lineroot.py b/backtrader/lineroot.py
index ee5d5aabd..0e9155d83 100644
--- a/backtrader/lineroot.py
+++ b/backtrader/lineroot.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/lineseries.py b/backtrader/lineseries.py
index babd10572..88e87a310 100644
--- a/backtrader/lineseries.py
+++ b/backtrader/lineseries.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/mathsupport.py b/backtrader/mathsupport.py
index 0ffec0653..3491bb811 100644
--- a/backtrader/mathsupport.py
+++ b/backtrader/mathsupport.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/metabase.py b/backtrader/metabase.py
index 8f19cbb89..c4e8a2bff 100644
--- a/backtrader/metabase.py
+++ b/backtrader/metabase.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/observer.py b/backtrader/observer.py
index 5b41be65b..0ad515459 100644
--- a/backtrader/observer.py
+++ b/backtrader/observer.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/observers/__init__.py b/backtrader/observers/__init__.py
index 48690e57f..d272b9f34 100644
--- a/backtrader/observers/__init__.py
+++ b/backtrader/observers/__init__.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/observers/benchmark.py b/backtrader/observers/benchmark.py
index 042f8c027..23aa3ae8c 100644
--- a/backtrader/observers/benchmark.py
+++ b/backtrader/observers/benchmark.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/observers/broker.py b/backtrader/observers/broker.py
index 85b42733b..3dae89a04 100644
--- a/backtrader/observers/broker.py
+++ b/backtrader/observers/broker.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/observers/buysell.py b/backtrader/observers/buysell.py
index 2fe067b59..1925e80f3 100644
--- a/backtrader/observers/buysell.py
+++ b/backtrader/observers/buysell.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/observers/drawdown.py b/backtrader/observers/drawdown.py
index e91ba295f..e8c40547a 100644
--- a/backtrader/observers/drawdown.py
+++ b/backtrader/observers/drawdown.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/observers/logreturns.py b/backtrader/observers/logreturns.py
index e4e9e7bd3..4bdd5f12a 100644
--- a/backtrader/observers/logreturns.py
+++ b/backtrader/observers/logreturns.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/observers/timereturn.py b/backtrader/observers/timereturn.py
index 49503d599..d9fc11784 100644
--- a/backtrader/observers/timereturn.py
+++ b/backtrader/observers/timereturn.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/observers/trades.py b/backtrader/observers/trades.py
index 144cf03fb..79e2482d1 100644
--- a/backtrader/observers/trades.py
+++ b/backtrader/observers/trades.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/order.py b/backtrader/order.py
index 4a68346cd..89ad6bb0f 100644
--- a/backtrader/order.py
+++ b/backtrader/order.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/plot/__init__.py b/backtrader/plot/__init__.py
index d949c7fa3..42ed647e9 100644
--- a/backtrader/plot/__init__.py
+++ b/backtrader/plot/__init__.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/plot/finance.py b/backtrader/plot/finance.py
index 9aea06085..9980d164f 100644
--- a/backtrader/plot/finance.py
+++ b/backtrader/plot/finance.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/plot/formatters.py b/backtrader/plot/formatters.py
index 2406d595c..818f15db7 100644
--- a/backtrader/plot/formatters.py
+++ b/backtrader/plot/formatters.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/plot/locator.py b/backtrader/plot/locator.py
index 848e62bb8..aa3e37881 100644
--- a/backtrader/plot/locator.py
+++ b/backtrader/plot/locator.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/plot/plot.py b/backtrader/plot/plot.py
index 6e92e374f..4f1666bd5 100644
--- a/backtrader/plot/plot.py
+++ b/backtrader/plot/plot.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/plot/scheme.py b/backtrader/plot/scheme.py
index e6572a4a7..ab250dcb5 100644
--- a/backtrader/plot/scheme.py
+++ b/backtrader/plot/scheme.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/plot/utils.py b/backtrader/plot/utils.py
index cb187b26e..f8b0ac963 100644
--- a/backtrader/plot/utils.py
+++ b/backtrader/plot/utils.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/position.py b/backtrader/position.py
index f7f2f764f..e2f55db19 100644
--- a/backtrader/position.py
+++ b/backtrader/position.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/resamplerfilter.py b/backtrader/resamplerfilter.py
index 73257fd30..7c65155a4 100644
--- a/backtrader/resamplerfilter.py
+++ b/backtrader/resamplerfilter.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/signal.py b/backtrader/signal.py
index 74e41b2bb..03b05ec41 100644
--- a/backtrader/signal.py
+++ b/backtrader/signal.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/signals/__init__.py b/backtrader/signals/__init__.py
index 1e11f1cd6..9242f32ac 100644
--- a/backtrader/signals/__init__.py
+++ b/backtrader/signals/__init__.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/sizer.py b/backtrader/sizer.py
index c78f837bb..2a6e0a399 100644
--- a/backtrader/sizer.py
+++ b/backtrader/sizer.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/sizers/__init__.py b/backtrader/sizers/__init__.py
index b79ab6cb0..9385675e9 100644
--- a/backtrader/sizers/__init__.py
+++ b/backtrader/sizers/__init__.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/sizers/fixedsize.py b/backtrader/sizers/fixedsize.py
index adf7be18c..60012933f 100644
--- a/backtrader/sizers/fixedsize.py
+++ b/backtrader/sizers/fixedsize.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/sizers/percents_sizer.py b/backtrader/sizers/percents_sizer.py
index d9e3eeeb0..066a2b525 100644
--- a/backtrader/sizers/percents_sizer.py
+++ b/backtrader/sizers/percents_sizer.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/store.py b/backtrader/store.py
index a1352671d..e644435b5 100644
--- a/backtrader/store.py
+++ b/backtrader/store.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/stores/__init__.py b/backtrader/stores/__init__.py
index f60afb6ad..8184b74b1 100644
--- a/backtrader/stores/__init__.py
+++ b/backtrader/stores/__init__.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/stores/ibstore.py b/backtrader/stores/ibstore.py
index 00ba5e11b..2469cb6e9 100644
--- a/backtrader/stores/ibstore.py
+++ b/backtrader/stores/ibstore.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/stores/oandastore.py b/backtrader/stores/oandastore.py
index 15396576e..dd7eb6a27 100644
--- a/backtrader/stores/oandastore.py
+++ b/backtrader/stores/oandastore.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/stores/vchartfile.py b/backtrader/stores/vchartfile.py
index 35ef8ebaf..a4d3b0504 100644
--- a/backtrader/stores/vchartfile.py
+++ b/backtrader/stores/vchartfile.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/stores/vcstore.py b/backtrader/stores/vcstore.py
index 237e0ebc1..19093e2e6 100644
--- a/backtrader/stores/vcstore.py
+++ b/backtrader/stores/vcstore.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/strategies/__init__.py b/backtrader/strategies/__init__.py
index b453b16f3..2a735520b 100644
--- a/backtrader/strategies/__init__.py
+++ b/backtrader/strategies/__init__.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/strategies/sma_crossover.py b/backtrader/strategies/sma_crossover.py
index 3001ee886..54ba0c006 100644
--- a/backtrader/strategies/sma_crossover.py
+++ b/backtrader/strategies/sma_crossover.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/strategy.py b/backtrader/strategy.py
index e5115688d..675fe34c1 100644
--- a/backtrader/strategy.py
+++ b/backtrader/strategy.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/studies/__init__.py b/backtrader/studies/__init__.py
index 83368468b..0bea983f4 100644
--- a/backtrader/studies/__init__.py
+++ b/backtrader/studies/__init__.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/studies/contrib/__init__.py b/backtrader/studies/contrib/__init__.py
index 9e2a10521..0e3c6fb49 100644
--- a/backtrader/studies/contrib/__init__.py
+++ b/backtrader/studies/contrib/__init__.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/studies/contrib/fractal.py b/backtrader/studies/contrib/fractal.py
index 8cb644e80..5ff1438dc 100644
--- a/backtrader/studies/contrib/fractal.py
+++ b/backtrader/studies/contrib/fractal.py
@@ -3,7 +3,7 @@
 
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 # (based on backtrader from Daniel Rodriguez)
 #
 # This program is free software: you can redistribute it and/or modify
diff --git a/backtrader/talib.py b/backtrader/talib.py
index eff5ced30..afc92a8be 100644
--- a/backtrader/talib.py
+++ b/backtrader/talib.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/timer.py b/backtrader/timer.py
index a77706a5b..8c0a06e55 100644
--- a/backtrader/timer.py
+++ b/backtrader/timer.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/trade.py b/backtrader/trade.py
index 8bbf5e380..ba65d9cec 100644
--- a/backtrader/trade.py
+++ b/backtrader/trade.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/tradingcal.py b/backtrader/tradingcal.py
index c2c11b9f8..cf0ab7bf9 100644
--- a/backtrader/tradingcal.py
+++ b/backtrader/tradingcal.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/utils/__init__.py b/backtrader/utils/__init__.py
index 43e45d257..24fd84b3f 100644
--- a/backtrader/utils/__init__.py
+++ b/backtrader/utils/__init__.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/utils/autodict.py b/backtrader/utils/autodict.py
index ff2b101ac..e54e3dd0b 100644
--- a/backtrader/utils/autodict.py
+++ b/backtrader/utils/autodict.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/utils/date.py b/backtrader/utils/date.py
index 24eba07fe..7a9bf51af 100644
--- a/backtrader/utils/date.py
+++ b/backtrader/utils/date.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/utils/dateintern.py b/backtrader/utils/dateintern.py
index a69977c50..1714b29dc 100644
--- a/backtrader/utils/dateintern.py
+++ b/backtrader/utils/dateintern.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/utils/ordereddefaultdict.py b/backtrader/utils/ordereddefaultdict.py
index a2335832f..3fa69b064 100644
--- a/backtrader/utils/ordereddefaultdict.py
+++ b/backtrader/utils/ordereddefaultdict.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/utils/py3.py b/backtrader/utils/py3.py
index 60946b685..57a6dd1c7 100644
--- a/backtrader/utils/py3.py
+++ b/backtrader/utils/py3.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/version.py b/backtrader/version.py
index 52d618f60..d6a34f4b6 100644
--- a/backtrader/version.py
+++ b/backtrader/version.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/backtrader/writer.py b/backtrader/writer.py
index 7a4cecb91..ea3e8ff3e 100644
--- a/backtrader/writer.py
+++ b/backtrader/writer.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/analyzer-annualreturn/analyzer-annualreturn.py b/samples/analyzer-annualreturn/analyzer-annualreturn.py
index 9bcb5224e..d892032b1 100644
--- a/samples/analyzer-annualreturn/analyzer-annualreturn.py
+++ b/samples/analyzer-annualreturn/analyzer-annualreturn.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/bidask-to-ohlc/bidask-to-ohlc.py b/samples/bidask-to-ohlc/bidask-to-ohlc.py
index 92dc8b0ec..aa633473a 100644
--- a/samples/bidask-to-ohlc/bidask-to-ohlc.py
+++ b/samples/bidask-to-ohlc/bidask-to-ohlc.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/bracket/bracket.py b/samples/bracket/bracket.py
index 3df8326ca..22a49b257 100644
--- a/samples/bracket/bracket.py
+++ b/samples/bracket/bracket.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/btfd/btfd.py b/samples/btfd/btfd.py
index 6cf233d48..4995c13e2 100644
--- a/samples/btfd/btfd.py
+++ b/samples/btfd/btfd.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/calendar-days/calendar-days.py b/samples/calendar-days/calendar-days.py
index ab0df70a0..b59550d77 100644
--- a/samples/calendar-days/calendar-days.py
+++ b/samples/calendar-days/calendar-days.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/calmar/calmar-test.py b/samples/calmar/calmar-test.py
index 02ceb7257..93e1fd54b 100644
--- a/samples/calmar/calmar-test.py
+++ b/samples/calmar/calmar-test.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/cheat-on-open/cheat-on-open.py b/samples/cheat-on-open/cheat-on-open.py
index d0b658370..05761c25d 100644
--- a/samples/cheat-on-open/cheat-on-open.py
+++ b/samples/cheat-on-open/cheat-on-open.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/commission-schemes/commission-schemes.py b/samples/commission-schemes/commission-schemes.py
index 36a420006..6566bdeeb 100644
--- a/samples/commission-schemes/commission-schemes.py
+++ b/samples/commission-schemes/commission-schemes.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/credit-interest/credit-interest.py b/samples/credit-interest/credit-interest.py
index b4e005c07..5e31a6792 100644
--- a/samples/credit-interest/credit-interest.py
+++ b/samples/credit-interest/credit-interest.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/data-bid-ask/bidask.py b/samples/data-bid-ask/bidask.py
index 04d790bde..120597c59 100644
--- a/samples/data-bid-ask/bidask.py
+++ b/samples/data-bid-ask/bidask.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/data-filler/data-filler.py b/samples/data-filler/data-filler.py
index eaafb7648..e0010eba6 100644
--- a/samples/data-filler/data-filler.py
+++ b/samples/data-filler/data-filler.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/data-filler/relativevolume.py b/samples/data-filler/relativevolume.py
index 52fba897c..949062c10 100644
--- a/samples/data-filler/relativevolume.py
+++ b/samples/data-filler/relativevolume.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/data-multitimeframe/data-multitimeframe.py b/samples/data-multitimeframe/data-multitimeframe.py
index 22feb6511..6720ec1ff 100644
--- a/samples/data-multitimeframe/data-multitimeframe.py
+++ b/samples/data-multitimeframe/data-multitimeframe.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/data-pandas/data-pandas-optix.py b/samples/data-pandas/data-pandas-optix.py
index 264187ec9..d268e2d16 100644
--- a/samples/data-pandas/data-pandas-optix.py
+++ b/samples/data-pandas/data-pandas-optix.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/data-pandas/data-pandas.py b/samples/data-pandas/data-pandas.py
index cc112a1a8..9a7b655d8 100644
--- a/samples/data-pandas/data-pandas.py
+++ b/samples/data-pandas/data-pandas.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/data-replay/data-replay.py b/samples/data-replay/data-replay.py
index 685ba64ea..faba11e04 100644
--- a/samples/data-replay/data-replay.py
+++ b/samples/data-replay/data-replay.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/data-resample/data-resample.py b/samples/data-resample/data-resample.py
index 228a8b69f..238e7c624 100644
--- a/samples/data-resample/data-resample.py
+++ b/samples/data-resample/data-resample.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/daysteps/daysteps.py b/samples/daysteps/daysteps.py
index 6335c6c37..8f7e0d9b0 100644
--- a/samples/daysteps/daysteps.py
+++ b/samples/daysteps/daysteps.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/future-spot/future-spot.py b/samples/future-spot/future-spot.py
index e1181c497..9eda9de32 100644
--- a/samples/future-spot/future-spot.py
+++ b/samples/future-spot/future-spot.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/gold-vs-sp500/gold-vs-sp500.py b/samples/gold-vs-sp500/gold-vs-sp500.py
index 7b18675da..e12d9906e 100644
--- a/samples/gold-vs-sp500/gold-vs-sp500.py
+++ b/samples/gold-vs-sp500/gold-vs-sp500.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/ib-cash-bid-ask/ib-cash-bid-ask.py b/samples/ib-cash-bid-ask/ib-cash-bid-ask.py
index 3d8df7a86..629f18665 100644
--- a/samples/ib-cash-bid-ask/ib-cash-bid-ask.py
+++ b/samples/ib-cash-bid-ask/ib-cash-bid-ask.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/ibtest/ibtest.py b/samples/ibtest/ibtest.py
index 9951474fb..a90c94490 100644
--- a/samples/ibtest/ibtest.py
+++ b/samples/ibtest/ibtest.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/kselrsi/ksignal.py b/samples/kselrsi/ksignal.py
index 3b3124014..4f633adf0 100644
--- a/samples/kselrsi/ksignal.py
+++ b/samples/kselrsi/ksignal.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/lineplotter/lineplotter.py b/samples/lineplotter/lineplotter.py
index a641824f6..ac741fae7 100644
--- a/samples/lineplotter/lineplotter.py
+++ b/samples/lineplotter/lineplotter.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/lrsi/lrsi-test.py b/samples/lrsi/lrsi-test.py
index 669714312..cfbc43326 100644
--- a/samples/lrsi/lrsi-test.py
+++ b/samples/lrsi/lrsi-test.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/macd-settings/macd-settings.py b/samples/macd-settings/macd-settings.py
index 799f0397a..3db1d94e0 100644
--- a/samples/macd-settings/macd-settings.py
+++ b/samples/macd-settings/macd-settings.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/memory-savings/memory-savings.py b/samples/memory-savings/memory-savings.py
index e5a456a62..d8190ec33 100644
--- a/samples/memory-savings/memory-savings.py
+++ b/samples/memory-savings/memory-savings.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/mixing-timeframes/mixing-timeframes.py b/samples/mixing-timeframes/mixing-timeframes.py
index 0385a685f..924a2e593 100644
--- a/samples/mixing-timeframes/mixing-timeframes.py
+++ b/samples/mixing-timeframes/mixing-timeframes.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/multi-copy/multi-copy.py b/samples/multi-copy/multi-copy.py
index a7dee85b5..f6237bfcc 100644
--- a/samples/multi-copy/multi-copy.py
+++ b/samples/multi-copy/multi-copy.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/multi-example/mult-values.py b/samples/multi-example/mult-values.py
index a0e82f293..c45977b57 100644
--- a/samples/multi-example/mult-values.py
+++ b/samples/multi-example/mult-values.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/multidata-strategy/multidata-strategy-unaligned.py b/samples/multidata-strategy/multidata-strategy-unaligned.py
index 8097eaf9b..6987e6ae4 100644
--- a/samples/multidata-strategy/multidata-strategy-unaligned.py
+++ b/samples/multidata-strategy/multidata-strategy-unaligned.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/multidata-strategy/multidata-strategy.py b/samples/multidata-strategy/multidata-strategy.py
index 0ccb02c3d..16edc9096 100644
--- a/samples/multidata-strategy/multidata-strategy.py
+++ b/samples/multidata-strategy/multidata-strategy.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/multitrades/mtradeobserver.py b/samples/multitrades/mtradeobserver.py
index 9413e9115..9c94d7b65 100644
--- a/samples/multitrades/mtradeobserver.py
+++ b/samples/multitrades/mtradeobserver.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/multitrades/multitrades.py b/samples/multitrades/multitrades.py
index 29eea9599..d3b951455 100644
--- a/samples/multitrades/multitrades.py
+++ b/samples/multitrades/multitrades.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/oandatest/oandatest.py b/samples/oandatest/oandatest.py
index 4dbe5cf98..7587c6d9b 100644
--- a/samples/oandatest/oandatest.py
+++ b/samples/oandatest/oandatest.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/observer-benchmark/observer-benchmark.py b/samples/observer-benchmark/observer-benchmark.py
index 1df01e9ef..c02a6cb4f 100644
--- a/samples/observer-benchmark/observer-benchmark.py
+++ b/samples/observer-benchmark/observer-benchmark.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/observers/observers-default-drawdown.py b/samples/observers/observers-default-drawdown.py
index d053c7014..5b94185cf 100644
--- a/samples/observers/observers-default-drawdown.py
+++ b/samples/observers/observers-default-drawdown.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/observers/observers-default.py b/samples/observers/observers-default.py
index 290756b5d..d956b1c76 100644
--- a/samples/observers/observers-default.py
+++ b/samples/observers/observers-default.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/observers/observers-orderobserver.py b/samples/observers/observers-orderobserver.py
index 5f3d2d864..f7f955a4e 100644
--- a/samples/observers/observers-orderobserver.py
+++ b/samples/observers/observers-orderobserver.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/observers/orderobserver.py b/samples/observers/orderobserver.py
index 379b25dfd..e65860ee0 100644
--- a/samples/observers/orderobserver.py
+++ b/samples/observers/orderobserver.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/oco/oco.py b/samples/oco/oco.py
index 3e49e9f93..8eb800d07 100644
--- a/samples/oco/oco.py
+++ b/samples/oco/oco.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/optimization/optimization.py b/samples/optimization/optimization.py
index 43c80458c..e83bde4d6 100644
--- a/samples/optimization/optimization.py
+++ b/samples/optimization/optimization.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/order-close/close-daily.py b/samples/order-close/close-daily.py
index 9322824bd..9ee6b84ad 100644
--- a/samples/order-close/close-daily.py
+++ b/samples/order-close/close-daily.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/order-close/close-minute.py b/samples/order-close/close-minute.py
index 7367a4344..dce8c12ea 100644
--- a/samples/order-close/close-minute.py
+++ b/samples/order-close/close-minute.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/order-execution/order-execution.py b/samples/order-execution/order-execution.py
index c398dad64..0b16dca22 100644
--- a/samples/order-execution/order-execution.py
+++ b/samples/order-execution/order-execution.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/order-history/order-history.py b/samples/order-history/order-history.py
index e604a1430..11903560e 100644
--- a/samples/order-history/order-history.py
+++ b/samples/order-history/order-history.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/order_target/order_target.py b/samples/order_target/order_target.py
index 3666390a0..201447394 100644
--- a/samples/order_target/order_target.py
+++ b/samples/order_target/order_target.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/partial-plot/partial-plot.py b/samples/partial-plot/partial-plot.py
index 0c67f1097..d6db8110c 100644
--- a/samples/partial-plot/partial-plot.py
+++ b/samples/partial-plot/partial-plot.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/pinkfish-challenge/pinkfish-challenge.py b/samples/pinkfish-challenge/pinkfish-challenge.py
index bf43aee8c..fd2463488 100644
--- a/samples/pinkfish-challenge/pinkfish-challenge.py
+++ b/samples/pinkfish-challenge/pinkfish-challenge.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/pivot-point/pivotpoint.py b/samples/pivot-point/pivotpoint.py
index 09a091f4d..5a757a9fb 100644
--- a/samples/pivot-point/pivotpoint.py
+++ b/samples/pivot-point/pivotpoint.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/pivot-point/ppsample.py b/samples/pivot-point/ppsample.py
index aad3aaf7c..0339db8c9 100644
--- a/samples/pivot-point/ppsample.py
+++ b/samples/pivot-point/ppsample.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/plot-same-axis/plot-same-axis.py b/samples/plot-same-axis/plot-same-axis.py
index c67c88963..14bc26c81 100644
--- a/samples/plot-same-axis/plot-same-axis.py
+++ b/samples/plot-same-axis/plot-same-axis.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/psar/psar-intraday.py b/samples/psar/psar-intraday.py
index f16af16b0..c5dd37ff5 100644
--- a/samples/psar/psar-intraday.py
+++ b/samples/psar/psar-intraday.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/psar/psar.py b/samples/psar/psar.py
index 7140d7e9f..5ce59f392 100644
--- a/samples/psar/psar.py
+++ b/samples/psar/psar.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/pyfolio2/pyfoliotest.py b/samples/pyfolio2/pyfoliotest.py
index 681f94602..32a8ec595 100644
--- a/samples/pyfolio2/pyfoliotest.py
+++ b/samples/pyfolio2/pyfoliotest.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/pyfoliotest/pyfoliotest.py b/samples/pyfoliotest/pyfoliotest.py
index 2ee6701ff..185196cc1 100644
--- a/samples/pyfoliotest/pyfoliotest.py
+++ b/samples/pyfoliotest/pyfoliotest.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/relative-volume/relative-volume.py b/samples/relative-volume/relative-volume.py
index b285735d5..83c051be6 100644
--- a/samples/relative-volume/relative-volume.py
+++ b/samples/relative-volume/relative-volume.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/relative-volume/relvolbybar.py b/samples/relative-volume/relvolbybar.py
index 0ab5c91ca..cb34eff7c 100644
--- a/samples/relative-volume/relvolbybar.py
+++ b/samples/relative-volume/relvolbybar.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/renko/renko.py b/samples/renko/renko.py
index 6a662fffe..49b9c4047 100644
--- a/samples/renko/renko.py
+++ b/samples/renko/renko.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/resample-tickdata/resample-tickdata.py b/samples/resample-tickdata/resample-tickdata.py
index 39f4d2dae..f8471ca36 100644
--- a/samples/resample-tickdata/resample-tickdata.py
+++ b/samples/resample-tickdata/resample-tickdata.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/rollover/rollover.py b/samples/rollover/rollover.py
index d287d5fd3..47593397a 100644
--- a/samples/rollover/rollover.py
+++ b/samples/rollover/rollover.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/sharpe-timereturn/sharpe-timereturn.py b/samples/sharpe-timereturn/sharpe-timereturn.py
index 0922c2302..20ff9d059 100644
--- a/samples/sharpe-timereturn/sharpe-timereturn.py
+++ b/samples/sharpe-timereturn/sharpe-timereturn.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/signals-strategy/signals-strategy.py b/samples/signals-strategy/signals-strategy.py
index a556f3e51..1358823ad 100644
--- a/samples/signals-strategy/signals-strategy.py
+++ b/samples/signals-strategy/signals-strategy.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/sigsmacross/sigsmacross.py b/samples/sigsmacross/sigsmacross.py
index 49026c9d2..b1e956502 100644
--- a/samples/sigsmacross/sigsmacross.py
+++ b/samples/sigsmacross/sigsmacross.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/sigsmacross/sigsmacross2.py b/samples/sigsmacross/sigsmacross2.py
index 15ad68ec3..26c9d6f52 100644
--- a/samples/sigsmacross/sigsmacross2.py
+++ b/samples/sigsmacross/sigsmacross2.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/sizertest/sizertest.py b/samples/sizertest/sizertest.py
index 17ab3610b..9e38e6f50 100644
--- a/samples/sizertest/sizertest.py
+++ b/samples/sizertest/sizertest.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/slippage/slippage.py b/samples/slippage/slippage.py
index 2c9c88a38..76bb10160 100644
--- a/samples/slippage/slippage.py
+++ b/samples/slippage/slippage.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/stop-trading/stop-loss-approaches.py b/samples/stop-trading/stop-loss-approaches.py
index 48d6cd512..497f4da84 100644
--- a/samples/stop-trading/stop-loss-approaches.py
+++ b/samples/stop-trading/stop-loss-approaches.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/stoptrail/trail.py b/samples/stoptrail/trail.py
index e4e7f3fe5..3fa6ca6b7 100644
--- a/samples/stoptrail/trail.py
+++ b/samples/stoptrail/trail.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/strategy-selection/strategy-selection.py b/samples/strategy-selection/strategy-selection.py
index 85d7529a4..4150e8e83 100644
--- a/samples/strategy-selection/strategy-selection.py
+++ b/samples/strategy-selection/strategy-selection.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/talib/tablibsartest.py b/samples/talib/tablibsartest.py
index 701f76ac4..8c1ef60bc 100644
--- a/samples/talib/tablibsartest.py
+++ b/samples/talib/tablibsartest.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/talib/talibtest.py b/samples/talib/talibtest.py
index 1387fdb29..78a1177d0 100644
--- a/samples/talib/talibtest.py
+++ b/samples/talib/talibtest.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/timers/scheduled-min.py b/samples/timers/scheduled-min.py
index 80d2e6633..5a97f79da 100644
--- a/samples/timers/scheduled-min.py
+++ b/samples/timers/scheduled-min.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/timers/scheduled.py b/samples/timers/scheduled.py
index 4030701eb..1a8dbd289 100644
--- a/samples/timers/scheduled.py
+++ b/samples/timers/scheduled.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/tradingcalendar/tcal-intra.py b/samples/tradingcalendar/tcal-intra.py
index 83c35f5f1..0011126d5 100644
--- a/samples/tradingcalendar/tcal-intra.py
+++ b/samples/tradingcalendar/tcal-intra.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/tradingcalendar/tcal.py b/samples/tradingcalendar/tcal.py
index 832b4b499..92755e749 100644
--- a/samples/tradingcalendar/tcal.py
+++ b/samples/tradingcalendar/tcal.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/vctest/vctest.py b/samples/vctest/vctest.py
index 66adf4b26..c6e080d09 100644
--- a/samples/vctest/vctest.py
+++ b/samples/vctest/vctest.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/volumefilling/volumefilling.py b/samples/volumefilling/volumefilling.py
index 04395ab0e..62fdd33ad 100644
--- a/samples/volumefilling/volumefilling.py
+++ b/samples/volumefilling/volumefilling.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/vwr/vwr.py b/samples/vwr/vwr.py
index 0ac9965b8..1642284b8 100644
--- a/samples/vwr/vwr.py
+++ b/samples/vwr/vwr.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/weekdays-filler/weekdaysaligner.py b/samples/weekdays-filler/weekdaysaligner.py
index eaac8be5a..49d00062a 100644
--- a/samples/weekdays-filler/weekdaysaligner.py
+++ b/samples/weekdays-filler/weekdaysaligner.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/weekdays-filler/weekdaysfiller.py b/samples/weekdays-filler/weekdaysfiller.py
index 2dce3da8f..4b0101d25 100644
--- a/samples/weekdays-filler/weekdaysfiller.py
+++ b/samples/weekdays-filler/weekdaysfiller.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/writer-test/writer-test.py b/samples/writer-test/writer-test.py
index c836f9a92..410c446a2 100644
--- a/samples/writer-test/writer-test.py
+++ b/samples/writer-test/writer-test.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/samples/yahoo-test/yahoo-test.py b/samples/yahoo-test/yahoo-test.py
index 12e18f662..255694acb 100644
--- a/samples/yahoo-test/yahoo-test.py
+++ b/samples/yahoo-test/yahoo-test.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/setup.py b/setup.py
index dfd8df0df..2e8e3a0a9 100644
--- a/setup.py
+++ b/setup.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_analyzer-sqn.py b/tests/test_analyzer-sqn.py
index f9efe4cbd..149812427 100644
--- a/tests/test_analyzer-sqn.py
+++ b/tests/test_analyzer-sqn.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_analyzer-timereturn.py b/tests/test_analyzer-timereturn.py
index 6c469b5df..fa19e76f6 100644
--- a/tests/test_analyzer-timereturn.py
+++ b/tests/test_analyzer-timereturn.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_comminfo.py b/tests/test_comminfo.py
index cc66b21b8..2de9088a9 100644
--- a/tests/test_comminfo.py
+++ b/tests/test_comminfo.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_data_multiframe.py b/tests/test_data_multiframe.py
index f977dde72..487ad8766 100644
--- a/tests/test_data_multiframe.py
+++ b/tests/test_data_multiframe.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_data_replay.py b/tests/test_data_replay.py
index e2ed16bb7..b3cc561fb 100644
--- a/tests/test_data_replay.py
+++ b/tests/test_data_replay.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_data_resample.py b/tests/test_data_resample.py
index b8bee55ea..658c5e643 100644
--- a/tests/test_data_resample.py
+++ b/tests/test_data_resample.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_accdecosc.py b/tests/test_ind_accdecosc.py
index 1b0212ae4..27198dbe8 100644
--- a/tests/test_ind_accdecosc.py
+++ b/tests/test_ind_accdecosc.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_aroonoscillator.py b/tests/test_ind_aroonoscillator.py
index d8dd15a44..eb901051b 100644
--- a/tests/test_ind_aroonoscillator.py
+++ b/tests/test_ind_aroonoscillator.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_aroonupdown.py b/tests/test_ind_aroonupdown.py
index 868847ab9..d787975bd 100644
--- a/tests/test_ind_aroonupdown.py
+++ b/tests/test_ind_aroonupdown.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_atr.py b/tests/test_ind_atr.py
index 1246c9d0b..b2bb053eb 100644
--- a/tests/test_ind_atr.py
+++ b/tests/test_ind_atr.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_awesomeoscillator.py b/tests/test_ind_awesomeoscillator.py
index df0616490..ed754069a 100644
--- a/tests/test_ind_awesomeoscillator.py
+++ b/tests/test_ind_awesomeoscillator.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_bbands.py b/tests/test_ind_bbands.py
index e53f85b19..7782a104d 100644
--- a/tests/test_ind_bbands.py
+++ b/tests/test_ind_bbands.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_cci.py b/tests/test_ind_cci.py
index 59f9eb3fe..3e8bc992a 100644
--- a/tests/test_ind_cci.py
+++ b/tests/test_ind_cci.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_dema.py b/tests/test_ind_dema.py
index 42be6b8d6..d9f68b63c 100644
--- a/tests/test_ind_dema.py
+++ b/tests/test_ind_dema.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_demaenvelope.py b/tests/test_ind_demaenvelope.py
index 4982b17c7..f5bf407f7 100644
--- a/tests/test_ind_demaenvelope.py
+++ b/tests/test_ind_demaenvelope.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_demaosc.py b/tests/test_ind_demaosc.py
index 5e5c26321..65a74eeb7 100644
--- a/tests/test_ind_demaosc.py
+++ b/tests/test_ind_demaosc.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_dm.py b/tests/test_ind_dm.py
index 6169a559c..d8d1ea40b 100644
--- a/tests/test_ind_dm.py
+++ b/tests/test_ind_dm.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_dma.py b/tests/test_ind_dma.py
index 868cfceb0..ec1766a85 100644
--- a/tests/test_ind_dma.py
+++ b/tests/test_ind_dma.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_downmove.py b/tests/test_ind_downmove.py
index b915b4aa3..191eb455c 100644
--- a/tests/test_ind_downmove.py
+++ b/tests/test_ind_downmove.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_dpo.py b/tests/test_ind_dpo.py
index 74e98dc5f..a04446d81 100644
--- a/tests/test_ind_dpo.py
+++ b/tests/test_ind_dpo.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_dv2.py b/tests/test_ind_dv2.py
index b5ecd3e75..7904ede15 100644
--- a/tests/test_ind_dv2.py
+++ b/tests/test_ind_dv2.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_ema.py b/tests/test_ind_ema.py
index 207767988..dd0d7445b 100644
--- a/tests/test_ind_ema.py
+++ b/tests/test_ind_ema.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_emaenvelope.py b/tests/test_ind_emaenvelope.py
index 715db3667..b9f5e26ec 100644
--- a/tests/test_ind_emaenvelope.py
+++ b/tests/test_ind_emaenvelope.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_emaosc.py b/tests/test_ind_emaosc.py
index 22a1a347d..1e535fd73 100644
--- a/tests/test_ind_emaosc.py
+++ b/tests/test_ind_emaosc.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_envelope.py b/tests/test_ind_envelope.py
index 87ac9d23b..15a1ce69b 100644
--- a/tests/test_ind_envelope.py
+++ b/tests/test_ind_envelope.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_heikinashi.py b/tests/test_ind_heikinashi.py
index c36d45708..a216c5d4c 100644
--- a/tests/test_ind_heikinashi.py
+++ b/tests/test_ind_heikinashi.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_highest.py b/tests/test_ind_highest.py
index c7755b422..6361e28d8 100644
--- a/tests/test_ind_highest.py
+++ b/tests/test_ind_highest.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_hma.py b/tests/test_ind_hma.py
index 683ea6979..60173e535 100644
--- a/tests/test_ind_hma.py
+++ b/tests/test_ind_hma.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_ichimoku.py b/tests/test_ind_ichimoku.py
index 1e508e6b0..be9d2d296 100644
--- a/tests/test_ind_ichimoku.py
+++ b/tests/test_ind_ichimoku.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_kama.py b/tests/test_ind_kama.py
index 660c280fd..242da13dd 100644
--- a/tests/test_ind_kama.py
+++ b/tests/test_ind_kama.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_kamaenvelope.py b/tests/test_ind_kamaenvelope.py
index 8cca2c27c..970e5a350 100644
--- a/tests/test_ind_kamaenvelope.py
+++ b/tests/test_ind_kamaenvelope.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_kamaosc.py b/tests/test_ind_kamaosc.py
index b12793990..3fc0e8e66 100644
--- a/tests/test_ind_kamaosc.py
+++ b/tests/test_ind_kamaosc.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_kst.py b/tests/test_ind_kst.py
index 07775e499..03b1c1a3c 100644
--- a/tests/test_ind_kst.py
+++ b/tests/test_ind_kst.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_lowest.py b/tests/test_ind_lowest.py
index c8d18528a..84e427c75 100644
--- a/tests/test_ind_lowest.py
+++ b/tests/test_ind_lowest.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_lrsi.py b/tests/test_ind_lrsi.py
index 40381fc27..f0404344e 100644
--- a/tests/test_ind_lrsi.py
+++ b/tests/test_ind_lrsi.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_macdhisto.py b/tests/test_ind_macdhisto.py
index 582681cb7..7d29c12a9 100644
--- a/tests/test_ind_macdhisto.py
+++ b/tests/test_ind_macdhisto.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_minperiod.py b/tests/test_ind_minperiod.py
index b4b7d7f58..cc93392e0 100644
--- a/tests/test_ind_minperiod.py
+++ b/tests/test_ind_minperiod.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_momentum.py b/tests/test_ind_momentum.py
index f8e32a381..aeecf936b 100644
--- a/tests/test_ind_momentum.py
+++ b/tests/test_ind_momentum.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_momentumoscillator.py b/tests/test_ind_momentumoscillator.py
index 7c587ea6d..2690ad4bc 100644
--- a/tests/test_ind_momentumoscillator.py
+++ b/tests/test_ind_momentumoscillator.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_oscillator.py b/tests/test_ind_oscillator.py
index c649e610a..e492a26e8 100644
--- a/tests/test_ind_oscillator.py
+++ b/tests/test_ind_oscillator.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_pctchange.py b/tests/test_ind_pctchange.py
index 9780cb1c9..7101b153e 100644
--- a/tests/test_ind_pctchange.py
+++ b/tests/test_ind_pctchange.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_pctrank.py b/tests/test_ind_pctrank.py
index 2f8e66154..29db0c5a5 100644
--- a/tests/test_ind_pctrank.py
+++ b/tests/test_ind_pctrank.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_pgo.py b/tests/test_ind_pgo.py
index 476a8bb80..6d7556706 100644
--- a/tests/test_ind_pgo.py
+++ b/tests/test_ind_pgo.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_ppo.py b/tests/test_ind_ppo.py
index d32da43ff..32347e883 100644
--- a/tests/test_ind_ppo.py
+++ b/tests/test_ind_ppo.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_pposhort.py b/tests/test_ind_pposhort.py
index 78f323804..e078f974d 100644
--- a/tests/test_ind_pposhort.py
+++ b/tests/test_ind_pposhort.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_priceosc.py b/tests/test_ind_priceosc.py
index 004218b26..0fbc41242 100644
--- a/tests/test_ind_priceosc.py
+++ b/tests/test_ind_priceosc.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_rmi.py b/tests/test_ind_rmi.py
index 22b57d169..4a8e05c06 100644
--- a/tests/test_ind_rmi.py
+++ b/tests/test_ind_rmi.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_roc.py b/tests/test_ind_roc.py
index 384f76e74..78d98d920 100644
--- a/tests/test_ind_roc.py
+++ b/tests/test_ind_roc.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_rsi.py b/tests/test_ind_rsi.py
index ab115ba85..4a7dc49cc 100644
--- a/tests/test_ind_rsi.py
+++ b/tests/test_ind_rsi.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_rsi_safe.py b/tests/test_ind_rsi_safe.py
index 85fd33c06..905d2d609 100644
--- a/tests/test_ind_rsi_safe.py
+++ b/tests/test_ind_rsi_safe.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_sma.py b/tests/test_ind_sma.py
index 41d11ae4c..e12b3ded3 100644
--- a/tests/test_ind_sma.py
+++ b/tests/test_ind_sma.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_smaenvelope.py b/tests/test_ind_smaenvelope.py
index 8cca2c27c..970e5a350 100644
--- a/tests/test_ind_smaenvelope.py
+++ b/tests/test_ind_smaenvelope.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_smaosc.py b/tests/test_ind_smaosc.py
index b5799c33f..188afda6d 100644
--- a/tests/test_ind_smaosc.py
+++ b/tests/test_ind_smaosc.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_smma.py b/tests/test_ind_smma.py
index f827ab2ad..84d4c59c0 100644
--- a/tests/test_ind_smma.py
+++ b/tests/test_ind_smma.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_smmaenvelope.py b/tests/test_ind_smmaenvelope.py
index 190f94b9b..0329b455f 100644
--- a/tests/test_ind_smmaenvelope.py
+++ b/tests/test_ind_smmaenvelope.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_smmaosc.py b/tests/test_ind_smmaosc.py
index 61f14701f..56f7be250 100644
--- a/tests/test_ind_smmaosc.py
+++ b/tests/test_ind_smmaosc.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_stochastic.py b/tests/test_ind_stochastic.py
index d4f28e61f..c6afe43c5 100644
--- a/tests/test_ind_stochastic.py
+++ b/tests/test_ind_stochastic.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_stochasticfull.py b/tests/test_ind_stochasticfull.py
index 06f8fe8d8..1fbe9a0ac 100644
--- a/tests/test_ind_stochasticfull.py
+++ b/tests/test_ind_stochasticfull.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_sumn.py b/tests/test_ind_sumn.py
index 3d218fd63..be483a642 100644
--- a/tests/test_ind_sumn.py
+++ b/tests/test_ind_sumn.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_tema.py b/tests/test_ind_tema.py
index d2a83d31f..aa27ea67f 100644
--- a/tests/test_ind_tema.py
+++ b/tests/test_ind_tema.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_temaenvelope.py b/tests/test_ind_temaenvelope.py
index 4334f290e..1a14e20a5 100644
--- a/tests/test_ind_temaenvelope.py
+++ b/tests/test_ind_temaenvelope.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_temaosc.py b/tests/test_ind_temaosc.py
index f66179ce2..2195cd2df 100644
--- a/tests/test_ind_temaosc.py
+++ b/tests/test_ind_temaosc.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_trix.py b/tests/test_ind_trix.py
index 6058472bf..30cb23eb0 100644
--- a/tests/test_ind_trix.py
+++ b/tests/test_ind_trix.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_tsi.py b/tests/test_ind_tsi.py
index 9cb5d90a3..613135b5a 100644
--- a/tests/test_ind_tsi.py
+++ b/tests/test_ind_tsi.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_ultosc.py b/tests/test_ind_ultosc.py
index 5fd77fe61..87d795623 100644
--- a/tests/test_ind_ultosc.py
+++ b/tests/test_ind_ultosc.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_upmove.py b/tests/test_ind_upmove.py
index a1acc63b1..3baa96736 100644
--- a/tests/test_ind_upmove.py
+++ b/tests/test_ind_upmove.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_vortex.py b/tests/test_ind_vortex.py
index 60450ae38..620d10d92 100644
--- a/tests/test_ind_vortex.py
+++ b/tests/test_ind_vortex.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_williamsad.py b/tests/test_ind_williamsad.py
index c0776260f..69902e775 100644
--- a/tests/test_ind_williamsad.py
+++ b/tests/test_ind_williamsad.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_williamsr.py b/tests/test_ind_williamsr.py
index 919a66a6b..c3a94e2db 100644
--- a/tests/test_ind_williamsr.py
+++ b/tests/test_ind_williamsr.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_wma.py b/tests/test_ind_wma.py
index 28adb18af..3bb52f0e3 100644
--- a/tests/test_ind_wma.py
+++ b/tests/test_ind_wma.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_wmaenvelope.py b/tests/test_ind_wmaenvelope.py
index 0480a4cbc..5ff5e0c70 100644
--- a/tests/test_ind_wmaenvelope.py
+++ b/tests/test_ind_wmaenvelope.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_wmaosc.py b/tests/test_ind_wmaosc.py
index 0d88a00aa..f05a1ec8c 100644
--- a/tests/test_ind_wmaosc.py
+++ b/tests/test_ind_wmaosc.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_zlema.py b/tests/test_ind_zlema.py
index b86e44c66..09042441e 100644
--- a/tests/test_ind_zlema.py
+++ b/tests/test_ind_zlema.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_zlind.py b/tests/test_ind_zlind.py
index 6862d6860..dfc39b212 100644
--- a/tests/test_ind_zlind.py
+++ b/tests/test_ind_zlind.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_metaclass.py b/tests/test_metaclass.py
index 3637e839d..80d09d503 100644
--- a/tests/test_metaclass.py
+++ b/tests/test_metaclass.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_order.py b/tests/test_order.py
index be895184b..b536627c8 100644
--- a/tests/test_order.py
+++ b/tests/test_order.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_position.py b/tests/test_position.py
index ad320d074..0939986a6 100644
--- a/tests/test_position.py
+++ b/tests/test_position.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_strategy_optimized.py b/tests/test_strategy_optimized.py
index 45f6acaca..3859d6e31 100644
--- a/tests/test_strategy_optimized.py
+++ b/tests/test_strategy_optimized.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_strategy_unoptimized.py b/tests/test_strategy_unoptimized.py
index 053a07fc1..2fcbb3ef8 100644
--- a/tests/test_strategy_unoptimized.py
+++ b/tests/test_strategy_unoptimized.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_study_fractal.py b/tests/test_study_fractal.py
index d2d7aec02..9b89408d1 100644
--- a/tests/test_study_fractal.py
+++ b/tests/test_study_fractal.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_trade.py b/tests/test_trade.py
index 8b40fd35f..235c0dacd 100644
--- a/tests/test_trade.py
+++ b/tests/test_trade.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/test_writer.py b/tests/test_writer.py
index f90cdc434..e4ad6f9a8 100644
--- a/tests/test_writer.py
+++ b/tests/test_writer.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/testcommon.py b/tests/testcommon.py
index e052db28f..c35ab8af5 100644
--- a/tests/testcommon.py
+++ b/tests/testcommon.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tools/bt-run.py b/tools/bt-run.py
index a4bb33223..87d9eca5c 100755
--- a/tools/bt-run.py
+++ b/tools/bt-run.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tools/rewrite-data.py b/tools/rewrite-data.py
index f0ab10b7a..09bbce0d2 100755
--- a/tools/rewrite-data.py
+++ b/tools/rewrite-data.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tools/yahoodownload.py b/tools/yahoodownload.py
index e5f8b763c..0c92fe20b 100755
--- a/tools/yahoodownload.py
+++ b/tools/yahoodownload.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8; py-indent-offset:4 -*-
 ###############################################################################
 #
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by

From 260d2c4db6633312405716cac4cbd36aaf00e786 Mon Sep 17 00:00:00 2001
From: baobach <95854748+baobach@users.noreply.github.com>
Date: Tue, 23 Apr 2024 02:06:56 +0700
Subject: [PATCH 02/21] Add Sortino ratio to backtrader analyzers

---
 backtrader/analyzers/__init__.py |   2 +
 backtrader/analyzers/sortino.py  | 191 +++++++++++++++++++++++++++++++
 backtrader/plot/scheme.py        |   2 +-
 3 files changed, 194 insertions(+), 1 deletion(-)
 create mode 100644 backtrader/analyzers/sortino.py

diff --git a/backtrader/analyzers/__init__.py b/backtrader/analyzers/__init__.py
index e0a57f53f..531e4fc87 100644
--- a/backtrader/analyzers/__init__.py
+++ b/backtrader/analyzers/__init__.py
@@ -3,6 +3,7 @@
 ###############################################################################
 #
 # Copyright (C) 2015-2024 Daniel Rodriguez
+# Added by @baobach
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -28,6 +29,7 @@
 from .drawdown import *
 from .timereturn import *
 from .sharpe import *
+from .sortino import *
 from .tradeanalyzer import *
 from .sqn import *
 from .leverage import *
diff --git a/backtrader/analyzers/sortino.py b/backtrader/analyzers/sortino.py
new file mode 100644
index 000000000..5604d4798
--- /dev/null
+++ b/backtrader/analyzers/sortino.py
@@ -0,0 +1,191 @@
+#!/usr/bin/env python
+# -*- coding: utf-8; py-indent-offset:4 -*-
+###############################################################################
+#
+# Added by: @baobach (2024)
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+###############################################################################
+from __future__ import (absolute_import, division, print_function,
+                        unicode_literals)
+
+import math
+
+from backtrader.utils.py3 import itervalues
+
+from backtrader import Analyzer, TimeFrame
+from backtrader.mathsupport import average, standarddev
+from backtrader.analyzers import TimeReturn, AnnualReturn
+
+class SortinoRatio(Analyzer):
+    '''This analyzer calculates the Sortino Ratio of a strategy using a risk free
+    asset which is simply an interest rate
+
+    See also:
+
+      - https://en.wikipedia.org/wiki/Sortino_ratio
+
+    Params:
+
+      - ``timeframe``: (default: ``TimeFrame.Years``)
+
+      - ``compression`` (default: ``1``)
+
+        Only used for sub-day timeframes to for example work on an hourly
+        timeframe by specifying "TimeFrame.Minutes" and 60 as compression
+
+      - ``riskfreerate`` (default: 0.01 -> 1%)
+
+        Expressed in annual terms (see ``convertrate`` below)
+
+      - ``convertrate`` (default: ``True``)
+
+        Convert the ``riskfreerate`` from annual to monthly, weekly or daily
+        rate. Sub-day conversions are not supported
+
+      - ``factor`` (default: ``None``)
+
+        If ``None``, the conversion factor for the riskfree rate from *annual*
+        to the chosen timeframe will be chosen from a predefined table
+
+          Days: 252, Weeks: 52, Months: 12, Years: 1
+
+        Else the specified value will be used
+
+      - ``annualize`` (default: ``False``)
+
+        If ``convertrate`` is ``True``, the *SortinoRatio* will be delivered in
+        the ``timeframe`` of choice.
+
+        In most occasions the SortinoRatio is delivered in annualized form.
+        Convert the ``riskfreerate`` from annual to monthly, weekly or daily
+        rate. Sub-day conversions are not supported
+
+      - ``stddev_sample`` (default: ``False``)
+
+        If this is set to ``True`` the *standard deviation* will be calculated
+        decreasing the denominator in the mean by ``1``. This is used when
+        calculating the *standard deviation* if it's considered that not all
+        samples are used for the calculation. This is known as the *Bessels'
+        correction*
+
+      - ``daysfactor`` (default: ``None``)
+
+        Old naming for ``factor``. If set to anything else than ``None`` and
+        the ``timeframe`` is ``TimeFrame.Days`` it will be assumed this is old
+        code and the value will be used
+
+      - ``legacyannual`` (default: ``False``)
+
+        Use the ``AnnualReturn`` return analyzer, which as the name implies
+        only works on years
+
+      - ``fund`` (default: ``None``)
+
+        If ``None`` the actual mode of the broker (fundmode - True/False) will
+        be autodetected to decide if the returns are based on the total net
+        asset value or on the fund value. See ``set_fundmode`` in the broker
+        documentation
+
+        Set it to ``True`` or ``False`` for a specific behavior
+
+    Methods:
+
+      - get_analysis
+
+        Returns a dictionary with key "sortinoratio" holding the ratio
+
+    '''
+
+    params = (
+        ('timeframe', TimeFrame.Years),
+        ('compression', 1),
+        ('riskfreerate', 0.01),
+        ('factor', None),
+        ('convertrate', True),
+        ('annualize', False),
+        ('stddev_sample', False),
+        ('daysfactor', None),
+        ('legacyannual', False),
+        ('fund', None),
+    )
+
+    RATEFACTORS = {
+        TimeFrame.Days: 252,
+        TimeFrame.Weeks: 52,
+        TimeFrame.Months: 12,
+        TimeFrame.Years: 1,
+    }
+
+    def __init__(self):
+        self.timereturn = TimeReturn(
+            timeframe=self.p.timeframe,
+            compression=self.p.compression,
+            fund=self.p.fund)
+
+    def stop(self):
+        super(SortinoRatio, self).stop()
+
+        # Get the returns from the subanalyzer
+        returns = list(itervalues(self.timereturn.get_analysis()))
+
+        rate = self.p.riskfreerate  
+
+        factor = None
+
+        if self.p.factor is not None:
+            factor = self.p.factor  # user specified factor
+        elif self.p.timeframe in self.RATEFACTORS:
+            # Get the conversion factor from the default table
+            factor = self.RATEFACTORS[self.p.timeframe]
+
+        if factor is not None:
+            # A factor was found
+
+            if self.p.convertrate:
+                # Standard: downgrade annual returns to timeframe factor
+                rate = pow(1.0 + rate, 1.0 / factor) - 1.0
+            else:
+                # Else upgrade returns to yearly returns
+                returns = [pow(1.0 + x, factor) - 1.0 for x in returns]
+
+        lrets = len(returns) - self.p.stddev_sample
+        # Check if the ratio can be calculated
+        if lrets:
+            # Get the excess returns 
+            ret_free = [r - rate for r in returns]
+            ret_free_avg = average(ret_free)
+
+            # Calculate downside deviation
+            downside_returns = [x for x in ret_free if x < 0]
+            retdev = standarddev(downside_returns, avgx=ret_free_avg,
+                                 bessel=self.p.stddev_sample)
+
+            try:
+                ratio = ret_free_avg / retdev
+
+                if factor is not None and \
+                   self.p.convertrate and self.p.annualize:
+
+                    ratio = math.sqrt(factor) * ratio
+            except (ValueError, TypeError, ZeroDivisionError):
+                ratio = None
+        else:
+            # no returns or stddev_sample was active and 1 return
+            ratio = None
+
+        self.ratio = ratio
+
+        self.rets['sortinoratio'] = self.ratio
\ No newline at end of file
diff --git a/backtrader/plot/scheme.py b/backtrader/plot/scheme.py
index ab250dcb5..e1e74600f 100644
--- a/backtrader/plot/scheme.py
+++ b/backtrader/plot/scheme.py
@@ -130,7 +130,7 @@ def __init__(self):
 
         # Wether to plot volume or not. Note: if the data in question has no
         # volume values, volume plotting will be skipped even if this is True
-        self.volume = True
+        self.volume = False
 
         # Wether to overlay the volume on the data or use a separate subchart
         self.voloverlay = True

From 1f0b72fd4068152a4380be2dd871a7c62bac0e0e Mon Sep 17 00:00:00 2001
From: syswalrus <jonathan.borduas@outlook.com>
Date: Tue, 23 Jul 2024 09:09:47 -0700
Subject: [PATCH 03/21] Update vwr - added 0 <= sdev_p <= sdev_max check

In order for the formula to make sense, we must enforce that sdev_p is between 0 and sdev_max. Otherwise, we can have negative rnorm100 giving positive VWR when their sdev is higher than sdev_max.

The author of the VWR had that condition defined in the summary:
https://www.crystalbull.com/sharpe-ratio-better-with-log-returns/
---
 backtrader/analyzers/vwr.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/backtrader/analyzers/vwr.py b/backtrader/analyzers/vwr.py
index 2bd758aed..8744b11ea 100644
--- a/backtrader/analyzers/vwr.py
+++ b/backtrader/analyzers/vwr.py
@@ -156,7 +156,11 @@ def stop(self):
 
         sdev_p = standarddev(dts, bessel=True)
 
-        vwr = rnorm100 * (1.0 - pow(sdev_p / self.p.sdev_max, self.p.tau))
+        if 0 <= sdev_p <= self.p.sdev_max:
+            vwr = rnorm100 * (1.0 - pow(sdev_p / self.p.sdev_max, self.p.tau))
+        else:
+            vwr = 0
+          
         self.rets['vwr'] = vwr
 
     def notify_fund(self, cash, value, fundvalue, shares):

From 4dbae167aad2db7d8ed88110a295f6d08b985c46 Mon Sep 17 00:00:00 2001
From: syswalrus <jonathan.borduas@outlook.com>
Date: Mon, 5 Aug 2024 07:41:54 -0700
Subject: [PATCH 04/21] Update sharpe.py to add more outputs for debugging.

---
 backtrader/analyzers/sharpe.py | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/backtrader/analyzers/sharpe.py b/backtrader/analyzers/sharpe.py
index 6988d21dd..bc51f3803 100644
--- a/backtrader/analyzers/sharpe.py
+++ b/backtrader/analyzers/sharpe.py
@@ -204,6 +204,8 @@ def stop(self):
             self.ratio = ratio
 
         self.rets['sharperatio'] = self.ratio
+        self.rets['ret_free_avg'] = ret_free_avg
+        self.rets['retdev'] = retdev
 
 
 class SharpeRatio_A(SharpeRatio):

From 9b68507aa230ec556dc44fb4bf04d32e4a6cfbb7 Mon Sep 17 00:00:00 2001
From: syswalrus <jonathan.borduas@outlook.com>
Date: Mon, 5 Aug 2024 07:42:27 -0700
Subject: [PATCH 05/21] Update sortino.py - add more output for debugging.

---
 backtrader/analyzers/sortino.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/backtrader/analyzers/sortino.py b/backtrader/analyzers/sortino.py
index 5604d4798..ccf9402fe 100644
--- a/backtrader/analyzers/sortino.py
+++ b/backtrader/analyzers/sortino.py
@@ -188,4 +188,6 @@ def stop(self):
 
         self.ratio = ratio
 
-        self.rets['sortinoratio'] = self.ratio
\ No newline at end of file
+        self.rets['sortinoratio'] = self.ratio
+        self.rets['ret_free_avg'] = ret_free_avg
+        self.rets['retdev'] = retdev

From 3dc80a45e51b6e1bc6549c285f32f547fc5991c4 Mon Sep 17 00:00:00 2001
From: syswalrus <jonathan.borduas@outlook.com>
Date: Mon, 5 Aug 2024 07:47:37 -0700
Subject: [PATCH 06/21] Update vwr.py - added output for debugging - set
 default sdev_max to 10.

---
 backtrader/analyzers/vwr.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/backtrader/analyzers/vwr.py b/backtrader/analyzers/vwr.py
index f99d66412..addbcced4 100644
--- a/backtrader/analyzers/vwr.py
+++ b/backtrader/analyzers/vwr.py
@@ -100,7 +100,7 @@ class VWR(TimeFrameAnalyzerBase):
     params = (
         ('tann', None),
         ('tau', 0.20),
-        ('sdev_max', 2.0),
+        ('sdev_max', 10.0),
         ('fund', None),
     )
 
@@ -162,6 +162,7 @@ def stop(self):
             vwr = 0
           
         self.rets['vwr'] = vwr
+        self.rets['sdev_p'] = sdev_p
 
     def notify_fund(self, cash, value, fundvalue, shares):
         if not self._fundmode:

From ae1eed27846a74013917ddbc3513239d429c4a22 Mon Sep 17 00:00:00 2001
From: syswalrus <jonathan.borduas@outlook.com>
Date: Mon, 5 Aug 2024 08:20:29 -0700
Subject: [PATCH 07/21] Update vwr.py - modified vwr to add vwrs (use
 sortino-like deviation)

---
 backtrader/analyzers/vwr.py | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/backtrader/analyzers/vwr.py b/backtrader/analyzers/vwr.py
index addbcced4..3fff2bc62 100644
--- a/backtrader/analyzers/vwr.py
+++ b/backtrader/analyzers/vwr.py
@@ -148,21 +148,33 @@ def stop(self):
         # make n 1 based in enumerate (number of periods and not index)
         # skip initial placeholders for synchronization
         dts = []
+        dts_downside = []
+        
         for n, pipn in enumerate(zip(self._pis, self._pns), 1):
             pi, pn = pipn
 
             dt = pn / (pi * math.exp(ravg * n)) - 1.0
+            if dt < 0 
+              dts_downside.append(dt)
             dts.append(dt)
 
         sdev_p = standarddev(dts, bessel=True)
+        sdev_p_downside = standarddev(dts_downside, bessel=True)
 
         if 0 <= sdev_p <= self.p.sdev_max:
             vwr = rnorm100 * (1.0 - pow(sdev_p / self.p.sdev_max, self.p.tau))
         else:
             vwr = 0
-          
+
+        if 0 <= sdev_p_downside <= self.p.sdev_max:
+            vwrs = rnorm100 * (1.0 - pow(sdev_p_downside / self.p.sdev_max, self.p.tau))
+        else:
+            vwrs = 0 
+                      
         self.rets['vwr'] = vwr
+        self.rets['vwrs'] = vwrs
         self.rets['sdev_p'] = sdev_p
+        self.rets['sdev_p_downside'] = sdev_p_downside
 
     def notify_fund(self, cash, value, fundvalue, shares):
         if not self._fundmode:

From 51bd37f84ec076604c7f36b4c7ade497a919336d Mon Sep 17 00:00:00 2001
From: syswalrus <jonathan.borduas@outlook.com>
Date: Mon, 5 Aug 2024 09:04:25 -0700
Subject: [PATCH 08/21] Update vwr.py - fix typo

---
 backtrader/analyzers/vwr.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/backtrader/analyzers/vwr.py b/backtrader/analyzers/vwr.py
index 3fff2bc62..2c4e59dbf 100644
--- a/backtrader/analyzers/vwr.py
+++ b/backtrader/analyzers/vwr.py
@@ -154,7 +154,7 @@ def stop(self):
             pi, pn = pipn
 
             dt = pn / (pi * math.exp(ravg * n)) - 1.0
-            if dt < 0 
+            if dt < 0:
               dts_downside.append(dt)
             dts.append(dt)
 

From 4e3ba74deeb472af3d81e821557fa4865168e247 Mon Sep 17 00:00:00 2001
From: syswalrus <jonathan.borduas@outlook.com>
Date: Mon, 5 Aug 2024 10:09:25 -0700
Subject: [PATCH 09/21] Update vwr.py - better handling if no downside

---
 backtrader/analyzers/vwr.py | 25 +++++++++++++++----------
 1 file changed, 15 insertions(+), 10 deletions(-)

diff --git a/backtrader/analyzers/vwr.py b/backtrader/analyzers/vwr.py
index 2c4e59dbf..74f5c4cd7 100644
--- a/backtrader/analyzers/vwr.py
+++ b/backtrader/analyzers/vwr.py
@@ -148,33 +148,38 @@ def stop(self):
         # make n 1 based in enumerate (number of periods and not index)
         # skip initial placeholders for synchronization
         dts = []
-        dts_downside = []
-        
+        downsides = []
+
+        # Collect deviations and downside deviations
         for n, pipn in enumerate(zip(self._pis, self._pns), 1):
             pi, pn = pipn
-
             dt = pn / (pi * math.exp(ravg * n)) - 1.0
-            if dt < 0:
-              dts_downside.append(dt)
             dts.append(dt)
+            if dt < 0:  # Collect only downside deviations
+                downsides.append(dt)
 
+        # Calculate standard deviation of all deviations
         sdev_p = standarddev(dts, bessel=True)
-        sdev_p_downside = standarddev(dts_downside, bessel=True)
 
+        # Calculate downside deviation (Sortino's deviation)
+        sdev_sortino = standarddev(downsides, bessel=True) if downsides else 0
+
+        # Calculate normal VWR
         if 0 <= sdev_p <= self.p.sdev_max:
             vwr = rnorm100 * (1.0 - pow(sdev_p / self.p.sdev_max, self.p.tau))
         else:
             vwr = 0
 
-        if 0 <= sdev_p_downside <= self.p.sdev_max:
-            vwrs = rnorm100 * (1.0 - pow(sdev_p_downside / self.p.sdev_max, self.p.tau))
+        # Calculate VWR using Sortino's deviation
+        if 0 <= sdev_sortino <= self.p.sdev_max:
+            vwrs = rnorm100 * (1.0 - pow(sdev_sortino / self.p.sdev_max, self.p.tau))
         else:
-            vwrs = 0 
+            vwrs = 0
                       
         self.rets['vwr'] = vwr
         self.rets['vwrs'] = vwrs
         self.rets['sdev_p'] = sdev_p
-        self.rets['sdev_p_downside'] = sdev_p_downside
+        self.rets['sdev_sortino'] = sdev_sortino
 
     def notify_fund(self, cash, value, fundvalue, shares):
         if not self._fundmode:

From 5feab8e92e26f5bcffb3ef7c9c90ec00b99461a9 Mon Sep 17 00:00:00 2001
From: syswalrus <jonathan.borduas@outlook.com>
Date: Mon, 5 Aug 2024 10:18:33 -0700
Subject: [PATCH 10/21] Update vwr.py -  len(downsides) must be > 1

---
 backtrader/analyzers/vwr.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/backtrader/analyzers/vwr.py b/backtrader/analyzers/vwr.py
index 74f5c4cd7..709ca0c17 100644
--- a/backtrader/analyzers/vwr.py
+++ b/backtrader/analyzers/vwr.py
@@ -162,7 +162,10 @@ def stop(self):
         sdev_p = standarddev(dts, bessel=True)
 
         # Calculate downside deviation (Sortino's deviation)
-        sdev_sortino = standarddev(downsides, bessel=True) if downsides else 0
+        if len(downsides) > 1:
+            sdev_sortino = standarddev(downsides, bessel=True)
+        else:
+            sdev_sortino = 0
 
         # Calculate normal VWR
         if 0 <= sdev_p <= self.p.sdev_max:

From bbbd004c33fbab1f199dc44ef839692638f0efb7 Mon Sep 17 00:00:00 2001
From: syswalrus <jonathan.borduas@outlook.com>
Date: Mon, 19 Aug 2024 10:27:20 -0700
Subject: [PATCH 11/21] Update vwr.py - need 2 downside samples for vwrs

---
 backtrader/analyzers/vwr.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/backtrader/analyzers/vwr.py b/backtrader/analyzers/vwr.py
index 709ca0c17..65e7e441f 100644
--- a/backtrader/analyzers/vwr.py
+++ b/backtrader/analyzers/vwr.py
@@ -162,7 +162,7 @@ def stop(self):
         sdev_p = standarddev(dts, bessel=True)
 
         # Calculate downside deviation (Sortino's deviation)
-        if len(downsides) > 1:
+        if len(downsides) > 2:
             sdev_sortino = standarddev(downsides, bessel=True)
         else:
             sdev_sortino = 0

From 553a5922a044426c06167918c79d381e005f775b Mon Sep 17 00:00:00 2001
From: syswalrus <jonathan.borduas@outlook.com>
Date: Mon, 19 Aug 2024 10:46:42 -0700
Subject: [PATCH 12/21] Update sortino.py - standarddev within the try: except:

---
 backtrader/analyzers/sortino.py | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/backtrader/analyzers/sortino.py b/backtrader/analyzers/sortino.py
index ccf9402fe..5bfeb31e0 100644
--- a/backtrader/analyzers/sortino.py
+++ b/backtrader/analyzers/sortino.py
@@ -167,13 +167,13 @@ def stop(self):
             # Get the excess returns 
             ret_free = [r - rate for r in returns]
             ret_free_avg = average(ret_free)
+            try:
 
-            # Calculate downside deviation
-            downside_returns = [x for x in ret_free if x < 0]
-            retdev = standarddev(downside_returns, avgx=ret_free_avg,
+                # Calculate downside deviation
+                downside_returns = [x for x in ret_free if x < 0]
+                retdev = standarddev(downside_returns, avgx=ret_free_avg,
                                  bessel=self.p.stddev_sample)
-
-            try:
+          
                 ratio = ret_free_avg / retdev
 
                 if factor is not None and \

From 1ca006aef783afc88b37ab0b48fa2eda643302d4 Mon Sep 17 00:00:00 2001
From: syswalrus <jonathan.borduas@outlook.com>
Date: Mon, 19 Aug 2024 10:47:33 -0700
Subject: [PATCH 13/21] Update sortino.py : retdev = None by default

---
 backtrader/analyzers/sortino.py | 1 +
 1 file changed, 1 insertion(+)

diff --git a/backtrader/analyzers/sortino.py b/backtrader/analyzers/sortino.py
index 5bfeb31e0..7a972ab6c 100644
--- a/backtrader/analyzers/sortino.py
+++ b/backtrader/analyzers/sortino.py
@@ -185,6 +185,7 @@ def stop(self):
         else:
             # no returns or stddev_sample was active and 1 return
             ratio = None
+            retdev = None
 
         self.ratio = ratio
 

From 35a6740b8cd1b4e8d72ca3b611ea7bc76d7fae28 Mon Sep 17 00:00:00 2001
From: syswalrus <jonathan.borduas@outlook.com>
Date: Mon, 26 Aug 2024 10:51:57 -0700
Subject: [PATCH 14/21] Update sharpe.py

---
 backtrader/analyzers/sharpe.py | 1 +
 1 file changed, 1 insertion(+)

diff --git a/backtrader/analyzers/sharpe.py b/backtrader/analyzers/sharpe.py
index bc51f3803..7cbb89958 100644
--- a/backtrader/analyzers/sharpe.py
+++ b/backtrader/analyzers/sharpe.py
@@ -200,6 +200,7 @@ def stop(self):
             else:
                 # no returns or stddev_sample was active and 1 return
                 ratio = None
+                retdev = None
 
             self.ratio = ratio
 

From 413049800984b0bc33062667c654f0442a89a5b6 Mon Sep 17 00:00:00 2001
From: syswalrus <jonathan.borduas@outlook.com>
Date: Mon, 26 Aug 2024 11:05:02 -0700
Subject: [PATCH 15/21] Update sortino.py

---
 backtrader/analyzers/sortino.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/backtrader/analyzers/sortino.py b/backtrader/analyzers/sortino.py
index 7a972ab6c..fd162defc 100644
--- a/backtrader/analyzers/sortino.py
+++ b/backtrader/analyzers/sortino.py
@@ -137,7 +137,9 @@ def __init__(self):
 
     def stop(self):
         super(SortinoRatio, self).stop()
-
+        ret_free_avg = None
+        retdev = None
+      
         # Get the returns from the subanalyzer
         returns = list(itervalues(self.timereturn.get_analysis()))
 
@@ -185,7 +187,6 @@ def stop(self):
         else:
             # no returns or stddev_sample was active and 1 return
             ratio = None
-            retdev = None
 
         self.ratio = ratio
 

From cb6eb1f0b4316d863a87bce34a0151980c64efc8 Mon Sep 17 00:00:00 2001
From: syswalrus <jonathan.borduas@outlook.com>
Date: Mon, 26 Aug 2024 11:05:41 -0700
Subject: [PATCH 16/21] Update sharpe.py

---
 backtrader/analyzers/sharpe.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/backtrader/analyzers/sharpe.py b/backtrader/analyzers/sharpe.py
index 7cbb89958..08aa6a9a0 100644
--- a/backtrader/analyzers/sharpe.py
+++ b/backtrader/analyzers/sharpe.py
@@ -142,6 +142,9 @@ def __init__(self):
 
     def stop(self):
         super(SharpeRatio, self).stop()
+        ret_free_avg = None
+        retdev = None
+      
         if self.p.legacyannual:
             rate = self.p.riskfreerate
             retavg = average([r - rate for r in self.anret.rets])
@@ -200,7 +203,6 @@ def stop(self):
             else:
                 # no returns or stddev_sample was active and 1 return
                 ratio = None
-                retdev = None
 
             self.ratio = ratio
 

From b806ca882c29ce08446d2349ec8cf01be2fdbf7f Mon Sep 17 00:00:00 2001
From: syswalrus <jonathan.borduas@outlook.com>
Date: Wed, 16 Oct 2024 11:39:00 -0700
Subject: [PATCH 17/21] Update vwr.py

---
 backtrader/analyzers/vwr.py | 94 ++++++++++++++++++++++---------------
 1 file changed, 57 insertions(+), 37 deletions(-)

diff --git a/backtrader/analyzers/vwr.py b/backtrader/analyzers/vwr.py
index 65e7e441f..6feec28bc 100644
--- a/backtrader/analyzers/vwr.py
+++ b/backtrader/analyzers/vwr.py
@@ -18,6 +18,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 ###############################################################################
+
 from __future__ import (absolute_import, division, print_function,
                         unicode_literals)
 
@@ -50,15 +51,13 @@ class VWR(TimeFrameAnalyzerBase):
         time constraints
 
       - ``compression`` (default: ``None``)
-
-        Only used for sub-day timeframes to for example work on an hourly
-        timeframe by specifying "TimeFrame.Minutes" and 60 as compression
+        Only used for sub-day timeframes to, for example, work on an hourly
+        timeframe by specifying ``TimeFrame.Minutes`` and 60 as compression
 
         If ``None`` then the compression of the 1st data of the system will be
         used
 
       - ``tann`` (default: ``None``)
-
         Number of periods to use for the annualization (normalization) of the
         average returns. If ``None``, then standard ``t`` values will be used,
         namely:
@@ -69,39 +68,47 @@ class VWR(TimeFrameAnalyzerBase):
           - ``years: 1``
 
       - ``tau`` (default: ``2.0``)
+        Factor for the calculation (see the literature)
 
-        factor for the calculation (see the literature)
-
-      - ``sdev_max`` (default: ``0.20``)
-
-        max standard deviation (see the literature)
+      - ``sdev_max`` (default: ``0.3``)
+        Max standard deviation (see the literature)
 
       - ``fund`` (default: ``None``)
-
-        If ``None`` the actual mode of the broker (fundmode - True/False) will
+        If ``None``, the actual mode of the broker (fundmode - True/False) will
         be autodetected to decide if the returns are based on the total net
         asset value or on the fund value. See ``set_fundmode`` in the broker
         documentation
 
         Set it to ``True`` or ``False`` for a specific behavior
 
-    Methods:
+      - ``riskfreerate`` (default: ``0.01``)
+        The risk-free rate used in the calculation of excess returns
 
-      - get_analysis
+      - ``stddev_sample`` (default: ``False``)
+        If ``True``, use the sample standard deviation (Bessel's correction).
+        If ``False``, use the population standard deviation.
 
+    Methods:
+
+      - ``get_analysis``
         Returns a dictionary with returns as values and the datetime points for
         each return as keys
 
         The returned dict contains the following keys:
 
-          - ``vwr``: Variability-Weighted Return
+          - ``vwr``: Variability-Weighted Return using total standard deviation
+          - ``vwrs``: Variability-Weighted Return using downside deviation
+          - ``sdev_p``: Total standard deviation of deviations
+          - ``sdev_sortino``: Downside standard deviation (Sortino's deviation)
     '''
 
     params = (
         ('tann', None),
-        ('tau', 0.20),
-        ('sdev_max', 10.0),
+        ('tau', 2.0),
+        ('sdev_max', 0.3),
         ('fund', None),
+        ('riskfreerate', 0.01),  # Risk-free rate parameter
+        ('stddev_sample', False),  # Use sample standard deviation if True
     )
 
     _TANN = {
@@ -112,10 +119,12 @@ class VWR(TimeFrameAnalyzerBase):
     }
 
     def __init__(self):
-        # Children log return analyzer
-        self._returns = Returns(timeframe=self.p.timeframe,
-                                compression=self.p.compression,
-                                tann=self.p.tann)
+        # Child log return analyzer
+        self._returns = Returns(
+            timeframe=self.p.timeframe,
+            compression=self.p.compression,
+            tann=self.p.tann
+        )
 
     def start(self):
         super(VWR, self).start()
@@ -126,11 +135,11 @@ def start(self):
             self._fundmode = self.p.fund
 
         if not self._fundmode:
-            self._pis = [self.strategy.broker.getvalue()]  # keep initial value
+            self._pis = [self.strategy.broker.getvalue()]  # Keep initial value
         else:
-            self._pis = [self.strategy.broker.fundvalue]  # keep initial value
+            self._pis = [self.strategy.broker.fundvalue]  # Keep initial value
 
-        self._pns = [None]  # keep final prices (value)
+        self._pns = [None]  # Keep final prices (value)
 
     def stop(self):
         super(VWR, self).stop()
@@ -140,45 +149,56 @@ def stop(self):
             self._pis.pop()
             self._pns.pop()
 
-        # Get results from children
+        # Get results from child analyzer
         rs = self._returns.get_analysis()
         ravg = rs['ravg']
-        rnorm100 = rs['rnorm100']
 
-        # make n 1 based in enumerate (number of periods and not index)
-        # skip initial placeholders for synchronization
+        # Adjust average return for risk-free rate
+        ravg_excess = ravg - self.p.riskfreerate
+
+        # Get annualization factor
+        tann = self.p.tann
+        if tann is None:
+            tframe = self._returns.get_timeframe()
+            tann = self._TANN.get(tframe, 252.0)  # Default to 252
+
+        # Recalculate normalized return
+        rnorm_excess = ravg_excess * tann * 100
+
+        # Make n 1-based in enumerate (number of periods and not index)
+        # Skip initial placeholders for synchronization
         dts = []
         downsides = []
 
         # Collect deviations and downside deviations
         for n, pipn in enumerate(zip(self._pis, self._pns), 1):
             pi, pn = pipn
-            dt = pn / (pi * math.exp(ravg * n)) - 1.0
+            dt = pn / (pi * math.exp(ravg_excess * n)) - 1.0
             dts.append(dt)
             if dt < 0:  # Collect only downside deviations
                 downsides.append(dt)
 
         # Calculate standard deviation of all deviations
-        sdev_p = standarddev(dts, bessel=True)
+        sdev_p = standarddev(dts, bessel=self.p.stddev_sample)
 
         # Calculate downside deviation (Sortino's deviation)
         if len(downsides) > 2:
-            sdev_sortino = standarddev(downsides, bessel=True)
+            sdev_sortino = standarddev(downsides, bessel=self.p.stddev_sample)
         else:
             sdev_sortino = 0
 
         # Calculate normal VWR
         if 0 <= sdev_p <= self.p.sdev_max:
-            vwr = rnorm100 * (1.0 - pow(sdev_p / self.p.sdev_max, self.p.tau))
+            vwr = rnorm_excess * (1.0 - pow(sdev_p / self.p.sdev_max, self.p.tau))
         else:
             vwr = 0
 
         # Calculate VWR using Sortino's deviation
         if 0 <= sdev_sortino <= self.p.sdev_max:
-            vwrs = rnorm100 * (1.0 - pow(sdev_sortino / self.p.sdev_max, self.p.tau))
+            vwrs = rnorm_excess * (1.0 - pow(sdev_sortino / self.p.sdev_max, self.p.tau))
         else:
             vwrs = 0
-                      
+
         self.rets['vwr'] = vwr
         self.rets['vwrs'] = vwrs
         self.rets['sdev_p'] = sdev_p
@@ -186,13 +206,13 @@ def stop(self):
 
     def notify_fund(self, cash, value, fundvalue, shares):
         if not self._fundmode:
-            self._pns[-1] = value  # annotate last seen pn for current period
+            self._pns[-1] = value  # Annotate last seen pn for current period
         else:
-            self._pns[-1] = fundvalue  # annotate last pn for current period
+            self._pns[-1] = fundvalue  # Annotate last pn for current period
 
     def _on_dt_over(self):
-        self._pis.append(self._pns[-1])  # last pn is pi in next period
-        self._pns.append(None)  # placeholder for [-1] operation
+        self._pis.append(self._pns[-1])  # Last pn is pi in next period
+        self._pns.append(None)  # Placeholder for [-1] operation
 
 
 VariabilityWeightedReturn = VWR

From 70c6b11081e0aed9825d547bac4bd1439b1981e9 Mon Sep 17 00:00:00 2001
From: syswalrus <jonathan.borduas@outlook.com>
Date: Wed, 16 Oct 2024 13:48:56 -0700
Subject: [PATCH 18/21] Update vwr.py

---
 backtrader/analyzers/vwr.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/backtrader/analyzers/vwr.py b/backtrader/analyzers/vwr.py
index 6feec28bc..19fd9c5c1 100644
--- a/backtrader/analyzers/vwr.py
+++ b/backtrader/analyzers/vwr.py
@@ -107,7 +107,7 @@ class VWR(TimeFrameAnalyzerBase):
         ('tau', 2.0),
         ('sdev_max', 0.3),
         ('fund', None),
-        ('riskfreerate', 0.01),  # Risk-free rate parameter
+        ('riskfreerate', 0.00),  # Risk-free rate parameter
         ('stddev_sample', False),  # Use sample standard deviation if True
     )
 

From 7883136fde53720ef099b0c892debd5b30ba8e73 Mon Sep 17 00:00:00 2001
From: syswalrus <jonathan.borduas@outlook.com>
Date: Wed, 16 Oct 2024 13:49:16 -0700
Subject: [PATCH 19/21] Update sortino.py

---
 backtrader/analyzers/sortino.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/backtrader/analyzers/sortino.py b/backtrader/analyzers/sortino.py
index fd162defc..25c7e9fc5 100644
--- a/backtrader/analyzers/sortino.py
+++ b/backtrader/analyzers/sortino.py
@@ -112,7 +112,7 @@ class SortinoRatio(Analyzer):
     params = (
         ('timeframe', TimeFrame.Years),
         ('compression', 1),
-        ('riskfreerate', 0.01),
+        ('riskfreerate', 0.00),
         ('factor', None),
         ('convertrate', True),
         ('annualize', False),

From aec47a59290c3de490e902d1201563b12589f550 Mon Sep 17 00:00:00 2001
From: syswalrus <jonathan.borduas@outlook.com>
Date: Wed, 16 Oct 2024 13:49:40 -0700
Subject: [PATCH 20/21] Update sharpe.py

---
 backtrader/analyzers/sharpe.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/backtrader/analyzers/sharpe.py b/backtrader/analyzers/sharpe.py
index 08aa6a9a0..b66b65399 100644
--- a/backtrader/analyzers/sharpe.py
+++ b/backtrader/analyzers/sharpe.py
@@ -112,7 +112,7 @@ class SharpeRatio(Analyzer):
     params = (
         ('timeframe', TimeFrame.Years),
         ('compression', 1),
-        ('riskfreerate', 0.01),
+        ('riskfreerate', 0.00),
         ('factor', None),
         ('convertrate', True),
         ('annualize', False),

From f6f3e56fce50e687bae96e821b51c6fd4d5edad1 Mon Sep 17 00:00:00 2001
From: syswalrus <jonathan.borduas@outlook.com>
Date: Wed, 16 Oct 2024 14:01:40 -0700
Subject: [PATCH 21/21] Update vwr.py

---
 backtrader/analyzers/vwr.py | 97 +++++--------------------------------
 1 file changed, 13 insertions(+), 84 deletions(-)

diff --git a/backtrader/analyzers/vwr.py b/backtrader/analyzers/vwr.py
index 19fd9c5c1..e5287d623 100644
--- a/backtrader/analyzers/vwr.py
+++ b/backtrader/analyzers/vwr.py
@@ -18,7 +18,6 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 ###############################################################################
-
 from __future__ import (absolute_import, division, print_function,
                         unicode_literals)
 
@@ -31,84 +30,17 @@
 
 
 class VWR(TimeFrameAnalyzerBase):
-    '''Variability-Weighted Return: Better SharpeRatio with Log Returns
-
-    Alias:
-
-      - VariabilityWeightedReturn
-
-    See:
-
-      - https://www.crystalbull.com/sharpe-ratio-better-with-log-returns/
-
-    Params:
-
-      - ``timeframe`` (default: ``None``)
-        If ``None`` then the complete return over the entire backtested period
-        will be reported
-
-        Pass ``TimeFrame.NoTimeFrame`` to consider the entire dataset with no
-        time constraints
-
-      - ``compression`` (default: ``None``)
-        Only used for sub-day timeframes to, for example, work on an hourly
-        timeframe by specifying ``TimeFrame.Minutes`` and 60 as compression
-
-        If ``None`` then the compression of the 1st data of the system will be
-        used
-
-      - ``tann`` (default: ``None``)
-        Number of periods to use for the annualization (normalization) of the
-        average returns. If ``None``, then standard ``t`` values will be used,
-        namely:
-
-          - ``days: 252``
-          - ``weeks: 52``
-          - ``months: 12``
-          - ``years: 1``
-
-      - ``tau`` (default: ``2.0``)
-        Factor for the calculation (see the literature)
-
-      - ``sdev_max`` (default: ``0.3``)
-        Max standard deviation (see the literature)
-
-      - ``fund`` (default: ``None``)
-        If ``None``, the actual mode of the broker (fundmode - True/False) will
-        be autodetected to decide if the returns are based on the total net
-        asset value or on the fund value. See ``set_fundmode`` in the broker
-        documentation
-
-        Set it to ``True`` or ``False`` for a specific behavior
-
-      - ``riskfreerate`` (default: ``0.01``)
-        The risk-free rate used in the calculation of excess returns
-
-      - ``stddev_sample`` (default: ``False``)
-        If ``True``, use the sample standard deviation (Bessel's correction).
-        If ``False``, use the population standard deviation.
-
-    Methods:
-
-      - ``get_analysis``
-        Returns a dictionary with returns as values and the datetime points for
-        each return as keys
-
-        The returned dict contains the following keys:
-
-          - ``vwr``: Variability-Weighted Return using total standard deviation
-          - ``vwrs``: Variability-Weighted Return using downside deviation
-          - ``sdev_p``: Total standard deviation of deviations
-          - ``sdev_sortino``: Downside standard deviation (Sortino's deviation)
-    '''
+    '''Variability-Weighted Return Analyzer'''
 
     params = (
+        ('timeframe', bt.TimeFrame.Days),  # Default to Days
+        ('compression', None),
         ('tann', None),
         ('tau', 2.0),
         ('sdev_max', 0.3),
         ('fund', None),
-        ('riskfreerate', 0.00),  # Risk-free rate parameter
-        ('stddev_sample', False),  # Use sample standard deviation if True
+        ('riskfreerate', 0.01),
+        ('stddev_sample', False),
     )
 
     _TANN = {
@@ -123,7 +55,7 @@ def __init__(self):
         self._returns = Returns(
             timeframe=self.p.timeframe,
             compression=self.p.compression,
-            tann=self.p.tann
+            tann=self.p.tann,
         )
 
     def start(self):
@@ -144,7 +76,6 @@ def start(self):
     def stop(self):
         super(VWR, self).stop()
         # Check if no value has been seen after the last 'dt_over'
-        # If so, there is one 'pi' out of place and a None 'pn'. Purge
         if self._pns[-1] is None:
             self._pis.pop()
             self._pns.pop()
@@ -159,41 +90,39 @@ def stop(self):
         # Get annualization factor
         tann = self.p.tann
         if tann is None:
-            tframe = self._returns.get_timeframe()
+            tframe = self._returns.p.timeframe  # Access timeframe from parameters
+            if tframe is None:
+                tframe = bt.TimeFrame.Days  # Default to Days if not set
             tann = self._TANN.get(tframe, 252.0)  # Default to 252
 
         # Recalculate normalized return
         rnorm_excess = ravg_excess * tann * 100
 
         # Make n 1-based in enumerate (number of periods and not index)
-        # Skip initial placeholders for synchronization
         dts = []
         downsides = []
 
         # Collect deviations and downside deviations
-        for n, pipn in enumerate(zip(self._pis, self._pns), 1):
-            pi, pn = pipn
+        for n, (pi, pn) in enumerate(zip(self._pis, self._pns), 1):
             dt = pn / (pi * math.exp(ravg_excess * n)) - 1.0
             dts.append(dt)
-            if dt < 0:  # Collect only downside deviations
+            if dt < 0:
                 downsides.append(dt)
 
-        # Calculate standard deviation of all deviations
+        # Calculate standard deviations
         sdev_p = standarddev(dts, bessel=self.p.stddev_sample)
 
-        # Calculate downside deviation (Sortino's deviation)
         if len(downsides) > 2:
             sdev_sortino = standarddev(downsides, bessel=self.p.stddev_sample)
         else:
             sdev_sortino = 0
 
-        # Calculate normal VWR
+        # Calculate VWRs
         if 0 <= sdev_p <= self.p.sdev_max:
             vwr = rnorm_excess * (1.0 - pow(sdev_p / self.p.sdev_max, self.p.tau))
         else:
             vwr = 0
 
-        # Calculate VWR using Sortino's deviation
         if 0 <= sdev_sortino <= self.p.sdev_max:
             vwrs = rnorm_excess * (1.0 - pow(sdev_sortino / self.p.sdev_max, self.p.tau))
         else: