siruku6/fx_alarm_py

View on GitHub
src/lib/instance_builder.py

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
from typing import Any, Dict, Optional

from oanda_accessor_pyv20 import OandaInterface

from src.candle_loader import CandleLoader
from src.result_processor import ResultProcessor
from src.trader_config import TraderConfig


class InstanceBuilder:
    @classmethod
    def build(cls, operation: str, days: int, instrument: Optional[str] = None) -> Dict[str, Any]:
        config: "TraderConfig" = TraderConfig(operation, instrument)
        o_interface: "OandaInterface" = OandaInterface(
            instrument=config.get_instrument(),
            test=operation in ("backtest", "forward_test"),
        )
        candle_loader: "CandleLoader" = CandleLoader(config, o_interface, days)
        result_processor: "ResultProcessor" = ResultProcessor(operation, config)
        return {
            "config": config,
            "o_interface": o_interface,
            "candle_loader": candle_loader,
            "result_processor": result_processor,
        }