def __str__(self): _today = datetime.date.today() def print_month(date): if date.year != _today.year: return '{0}.{1}'.format(str(date.year)[-2:], Option.MONTH[date.month - 1]) else: return Option.MONTH[date.month - 1] output = io.StringIO() print(*[makebold(print_month(date)) for date in self._serial_months], end=' ', file=output) for date in month_range(_next_month(self._serial_months[-1]), _next_month(self._quarterly_months[-1])): if date in self._quarterly_months: print(makebold(print_month(date)), end=' ', file=output) else: print(print_month(date), end=' ', file=output) return output.getvalue()
def _date(string): if '.' not in string or 2 != string.count('.'): raise ValueError('date format YYYY.MM.DD') return datetime.date(*[int(x) for x in string.split('.')]) def _parse_args(): parser = argparse.ArgumentParser("Days between dates") parser.add_argument('-f', '--from', dest='start', type=_date, default=datetime.date.today(), help='From date. Format: YYYY.MM.DD') parser.add_argument('stop', type=_date, default=None, nargs='+', help='Until date(s). Format: YYYY.MM.DD') return parser.parse_args() def _makeblue(string): return tty._bold(34) + string + tty.reset if "__main__" == __name__: args = _parse_args() print('Days between', args.start, 'and:') for d in args.stop: print(d, makebold(str((d - args.start if d >= args.start else args.start - d).days)))
------------------- 0 -1 -2 -3 -4 -5 -6 -m.weekday() 11 10 9 8 7 6 5 11 - m.weekday() 4 3 2 1 0 6 5 (11 - m.weekday()) % 7 ------------------- ''' return m + datetime.timedelta(days=((11 - m.weekday()) % 7 + 14)) def _date(string): if '.' not in string or 1 != string.count('.'): raise ValueError('date format YYYY.MM') return datetime.date(*[int(x) for x in (string + '.1').split('.')]) def _parse_args(): parser = argparse.ArgumentParser("Expiration Day") parser.add_argument('month', type=_date, default=[datetime.date.today().replace(day=1)], nargs='*', help='Expiration month(s). Format: YYYY.MM') return parser.parse_args() if "__main__" == __name__: args = _parse_args() for m in args.month: print(m.strftime("%Y %b"), makebold(str(expiration(m).day)))
def _makered(string): return tty._bold(31) + string + tty.reset def _makegreen(string): return tty._bold(32) + string + tty.reset def _makeblue(string): return tty._bold(34) + string + tty.reset if "__main__" == __name__: args = _parse_args() _help(max_strike=args.max_strike) for i in range(1, args.contracts + 1): type_ = random.choice(Option.TYPE) month = random.choice(Option.MONTH) strike = (5 * random.choice(range(1, args.max_strike // 5)) + random.choice((0, 2.5))) option = Option(type_, month, strike) strike_string = "{0:>5}".format(strike) print(makebold("{0:>{1}}".format(i, len(str(args.contracts)))), option, _makeblue(strike_string) if strike % 1 else strike_string, 'STOCK', month, _makered(type_) if type_ == 'put' else _makegreen(type_))
for m in range(len(Option.MONTH)))) print() if "__main__" == __name__: args = _parse_args() _help() max_id_len = len(str(args.contracts)) output = io.StringIO() print('{0:>{1}}'.format('ID', max_id_len), '{0:>5}'.format('TYPE'), 'MONTH', 'TRADED MONTHS', end=' ', file=output) print(output.getvalue()) print('-' * 70) for i in range(args.contracts): type_ = args.type if args.type else random.choice(Option.TYPE) month = args.month if args.month else random.choice(Option.MONTH) option = Option(type_, month) print(makebold("{0:>{1}}".format(i + 1, max_id_len)), "{0:>5}".format(type_), _makeblue('{0:>5}'.format(month)), option)