def create_objects(self) -> None: self.objects = [Contract.create(**s) for s in self.symbols] self.non_futures = [ obj for obj in self.objects if not isinstance(obj, Future)] log.debug(f'non-futures: {self.non_futures}') self.futures = [obj for obj in self.objects if isinstance(obj, Future)] log.debug(f'futures: {self.futures}') # converting Futures to ContFutures self.contFutures = [] for obj in self.futures: params = obj.nonDefaults() del params['secType'] self.contFutures.append(ContFuture(**params)) log.debug(f'contfutures: {self.contFutures}')
def request_future_instrument( self, symbol: str, dt: datetime.datetime, what_to_show: str, contract_date: Optional[str] = None, ) -> pd.DataFrame: exchange_name = self.select_exchange_by_symbol(symbol).value if contract_date: raise NotImplementedError else: contract = ContFuture(symbol, exchange_name, currency=Currency.USD.value) duration = "1 D" bar_size_setting = "1 min" use_rth = False return self._execute_req_historical( contract, dt, duration, bar_size_setting, what_to_show, use_rth )
trades_per_day: int = 0 alloc: float = 0 # fraction of capital to be allocated to instrument # candle volume to be calculated as average of x periods avg_periods: Optional[int] = None volume: Optional[int] = None # candle volume given directly min_atr: float = 0 # minimum atr threshold used for for calculations lock_periods_multiple: float = 2 tp_multiple: float = 2 lock_filter: float = 0.005 def __post_init__(self) -> None: self.lock_periods = int(self.periods / self.lock_periods_multiple) nq = Params( contract=ContFuture('NQ', 'GLOBEX'), micro_contract=ContFuture('MNQ', 'GLOBEX'), trades_per_day=3.8, volume=13000, min_atr=14, lock_filter=0.004, tp_multiple=8, ) es = Params( contract=ContFuture('ES', 'GLOBEX'), micro_contract=ContFuture('MES', 'GLOBEX'), trades_per_day=.5, ema_fast=120, ema_slow=320, atr_periods=180,
trades_per_day: int = 0 alloc: float = 0 # fraction of capital to be allocated to instrument # candle volume to be calculated as average of x periods avg_periods: Optional[int] = None volume: Optional[int] = None # candle volume given directly min_atr: float = 0 lock_periods_multiple: float = 2 tp_multiple: float = 2 lock_filter: float = 0.005 def __post_init__(self) -> None: self.lock_periods = int(self.periods / self.lock_periods_multiple) nq = Params( contract=ContFuture('NQ', 'GLOBEX'), micro_contract=ContFuture('MNQ', 'GLOBEX'), trades_per_day=3.8, volume=13000, min_atr=14, lock_filter=0.004, tp_multiple=8, ) es = Params(contract=ContFuture('ES', 'GLOBEX'), micro_contract=ContFuture('MES', 'GLOBEX'), trades_per_day=.5, atr_periods=180, ema_fast=120, ema_slow=320, sl_atr=3,