IHyperopt: all methods static, somef ixes for mypy

This commit is contained in:
Matthias 2018-11-20 19:41:07 +01:00
parent 7757c53b06
commit a3b6004115
4 changed files with 20 additions and 11 deletions

View File

@ -36,7 +36,8 @@ class DefaultHyperOpts(IHyperOpt):
dataframe['sar'] = ta.SAR(dataframe)
return dataframe
def buy_strategy_generator(self, params: Dict[str, Any]) -> Callable:
@staticmethod
def buy_strategy_generator(params: Dict[str, Any]) -> Callable:
"""
Define the buy strategy parameters to be used by hyperopt
"""

View File

@ -4,9 +4,10 @@ This module defines the interface to apply for hyperopts
"""
from abc import ABC, abstractmethod
from typing import Dict, Any, Callable
from typing import Dict, Any, Callable, List
from pandas import DataFrame
from skopt.space import Dimension
class IHyperOpt(ABC):
@ -20,40 +21,46 @@ class IHyperOpt(ABC):
ticker_interval -> int: value of the ticker interval to use for the strategy
"""
@staticmethod
@abstractmethod
def populate_indicators(self, dataframe: DataFrame) -> DataFrame:
def populate_indicators(dataframe: DataFrame, metadata: dict) -> DataFrame:
"""
Populate indicators that will be used in the Buy and Sell strategy
:param dataframe: Raw data from the exchange and parsed by parse_ticker_dataframe()
:return: a Dataframe with all mandatory indicators for the strategies
"""
@staticmethod
@abstractmethod
def buy_strategy_generator(self, params: Dict[str, Any]) -> Callable:
def buy_strategy_generator(params: Dict[str, Any]) -> Callable:
"""
Create a buy strategy generator
"""
@staticmethod
@abstractmethod
def indicator_space(self) -> Dict[str, Any]:
def indicator_space() -> List[Dimension]:
"""
Create an indicator space
"""
@staticmethod
@abstractmethod
def generate_roi_table(self, params: Dict) -> Dict[int, float]:
def generate_roi_table(params: Dict) -> Dict[int, float]:
"""
Create an roi table
"""
@staticmethod
@abstractmethod
def stoploss_space(self) -> Dict[str, Any]:
def stoploss_space() -> List[Dimension]:
"""
Create a stoploss space
"""
@staticmethod
@abstractmethod
def roi_space(self) -> Dict[str, Any]:
def roi_space() -> List[Dimension]:
"""
Create a roi space
"""

View File

@ -35,7 +35,7 @@ class HyperOptResolver(object):
self.hyperopt = self._load_hyperopt(hyperopt_name, extra_dir=config.get('hyperopt_path'))
def _load_hyperopt(
self, hyperopt_name: str, extra_dir: Optional[str] = None) -> Optional[IHyperOpt]:
self, hyperopt_name: str, extra_dir: Optional[str] = None) -> IHyperOpt:
"""
Search and loads the specified hyperopt.
:param hyperopt_name: name of the module to import
@ -75,7 +75,7 @@ class HyperOptResolver(object):
# Generate spec based on absolute path
spec = importlib.util.spec_from_file_location('user_data.hyperopts', module_path)
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
spec.loader.exec_module(module) # type: ignore # importlib does not use typehints
valid_hyperopts_gen = (
obj for name, obj in inspect.getmembers(module, inspect.isclass)

View File

@ -45,7 +45,8 @@ class SampleHyperOpts(IHyperOpt):
dataframe['sar'] = ta.SAR(dataframe)
return dataframe
def buy_strategy_generator(self, params: Dict[str, Any]) -> Callable:
@staticmethod
def buy_strategy_generator(params: Dict[str, Any]) -> Callable:
"""
Define the buy strategy parameters to be used by hyperopt
"""