from vectorbt.utils.figure import make_figure from vectorbt.indicators.configs import flex_col_param_config, flex_elem_param_config from vectorbt.signals.enums import StopType from vectorbt.signals.factory import SignalFactory from vectorbt.signals.nb import (rand_enex_apply_nb, rand_by_prob_choice_nb, stop_choice_nb, ohlc_stop_choice_nb) # ############# Random signals ############# # RAND = SignalFactory( class_name='RAND', module_name=__name__, short_name='rand', param_names=[ 'n' ]).from_apply_func( # apply_func since function is (almost) vectorized rand_enex_apply_nb, require_input_shape=True, param_settings=dict(n=flex_col_param_config), kwargs_to_args=['entry_wait', 'exit_wait'], entry_wait=1, exit_wait=1, seed=None) class _RAND(RAND): """Random entry and exit signal generator based on the number of signals. Generates `entries` and `exits` based on `vectorbt.signals.nb.rand_enex_apply_nb`. !!! hint Parameter `n` can be either a single value (per frame) or a NumPy array (per column).
from vectorbt.indicators.configs import flex_col_param_config, flex_elem_param_config from vectorbt.signals.enums import StopType from vectorbt.signals.factory import SignalFactory from vectorbt.signals.nb import (rand_enex_apply_nb, rand_by_prob_choice_nb, stop_choice_nb, ohlc_stop_choice_nb, rand_choice_nb) from vectorbt.utils.config import Config from vectorbt.utils.figure import make_figure # ############# RAND ############# # RAND = SignalFactory(class_name='RAND', module_name=__name__, short_name='rand', mode='entries', param_names=['n']).from_choice_func( entry_choice_func=rand_choice_nb, entry_settings=dict(pass_params=['n']), param_settings=dict(n=flex_col_param_config), seed=None) class _RAND(RAND): """Random entry signal generator based on the number of signals. Generates `entries` based on `vectorbt.signals.nb.rand_choice_nb`. !!! hint Parameter `n` can be either a single value (per frame) or a NumPy array (per column). To generate multiple combinations, pass it as a list.