def remove_parameter(self, param_id=None, name=None, ref_id=None, ):
l = []<EOL>if param_id:<EOL><INDENT>l.append('<STR_LIT>')<EOL><DEDENT>if name:<EOL><INDENT>l.append('<STR_LIT:name>')<EOL><DEDENT>if ref_id:<EOL><INDENT>l.append('<STR_LIT>')<EOL><DEDENT>if len(l) > <NUM_LIT:1>:<EOL><INDENT>raise IOCParseError('<STR_LIT>'.format(str(l)))<EOL><DEDENT>elif len(l) < <NUM_LIT:1>:<EOL><INDENT>raise IOCParseError('<STR_LIT>')<EOL><DEDENT>counter = <NUM_LIT:0><EOL>parameters_node = self.parameters<EOL>if param_id:<EOL><INDENT>params = parameters_node.xpath('<STR_LIT>'.format(param_id))<EOL>for param in params:<EOL><INDENT>parameters_node.remove(param)<EOL>counter += <NUM_LIT:1><EOL><DEDENT><DEDENT>elif name:<EOL><INDENT>params = parameters_node.xpath('<STR_LIT>'.format(name))<EOL>for param in params:<EOL><INDENT>parameters_node.remove(param)<EOL>counter += <NUM_LIT:1><EOL><DEDENT><DEDENT>elif ref_id:<EOL><INDENT>params = parameters_node.xpath('<STR_LIT>'.format(ref_id))<EOL>for param in params:<EOL><INDENT>parameters_node.remove(param)<EOL>counter += <NUM_LIT:1><EOL><DEDENT><DEDENT>return counter<EOL>
Removes parameters based on function arguments.

This can remove parameters based on the following param values:
    param/@id
    param/@name
    param/@ref_id

Each input is mutually exclusive.  Calling this function with multiple values set will cause an IOCParseError
 exception. Calling this function without setting one value will raise an exception.

:param param_id: The id of the parameter to remove.
:param name: The name of the parameter to remove.
:param ref_id: The IndicatorItem/Indicator id of the parameter to remove.
:return: Number of parameters removed.