Skip to content

Commit f55fbe6

Browse files
committed
add renko_params arg and _renko_params_validator
1 parent 3b9ae79 commit f55fbe6

File tree

2 files changed

+47
-1
lines changed

2 files changed

+47
-1
lines changed

src/mplfinance/_arg_validators.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,48 @@ def _mav_validator(mav_value):
5656
return False
5757
return True
5858

59+
def _renko_params_validator(params_dict):
60+
'''
61+
Ranko params may not have > 3 parameters, their values may be:
62+
type: must be either 'pmove' or 'pclose'
63+
brick_size: must be either an int/float greater than 0 or 'atr'
64+
atr_length: must only exist if brick_size is 'atr', must be an int greater than 0
65+
'''
66+
if len(params_dict) > 3:
67+
return False
68+
69+
# Validate type
70+
if 'type' in params_dict:
71+
if params_dict['type'] not in ['pmove', 'pclose']:
72+
return False
73+
else:
74+
params_dict['type'] = 'pmove' # Set default value of type to price movement
75+
76+
# Validate brick_size and atr_length
77+
if 'brick_size' in params_dict:
78+
brick_size = params_dict['brick_size']
79+
if not isinstance(brick_size, int) and not isinstance(brick_size, float):
80+
if brick_size != 'atr':
81+
return False
82+
else:
83+
if 'atr_length' not in params_dict:
84+
params_dict['atr_length'] = 14 # Set default value of atr_length to 14
85+
else:
86+
if not isinstance(params_dict['atr_length'], int) or params_dict['atr_length'] < 1:
87+
return False
88+
else:
89+
if brick_size < 0 or 'atr_length' in params_dict:
90+
return False
91+
else:
92+
params_dict['brick_size'] = 'atr'
93+
params_dict['atr_length'] = 14
94+
95+
return True
96+
97+
98+
99+
100+
59101
def _bypass_kwarg_validation(value):
60102
''' For some kwargs, we either don't know enough, or
61103
the validation is too complex to make it worth while,

src/mplfinance/plotting.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,13 @@
1414

1515
from mplfinance._utils import _construct_ohlc_collections
1616
from mplfinance._utils import _construct_candlestick_collections
17+
1718
from mplfinance._utils import _updown_colors
1819
from mplfinance._utils import IntegerIndexDateTimeFormatter
1920

2021
from mplfinance import _styles
2122

22-
from mplfinance._arg_validators import _check_and_prepare_data, _mav_validator
23+
from mplfinance._arg_validators import _check_and_prepare_data, _mav_validator, _renko_params_validator
2324
from mplfinance._arg_validators import _process_kwargs, _validate_vkwargs_dict
2425
from mplfinance._arg_validators import _kwarg_not_implemented, _bypass_kwarg_validation
2526

@@ -72,6 +73,9 @@ def _valid_plot_kwargs():
7273

7374
'mav' : { 'Default' : None,
7475
'Validator' : _mav_validator },
76+
77+
'renko_params': { 'Default' : dict(type='pmove', brick_size='atr', atr_length=14),
78+
'Validator' : _renko_params_validator },
7579

7680
'study' : { 'Default' : None,
7781
#'Validator' : lambda value: isinstance(value,dict) }, #{'studyname': {study parms}} example: {'TE':{'mav':20,'upper':2,'lower':2}}

0 commit comments

Comments
 (0)