package ru.tinkoff.invest.openapi.example; import org.jetbrains.annotations.NotNull; import ru.tinkoff.invest.openapi.models.market.CandleInterval; import java.util.Arrays; public class TradingParameters { @NotNull public final String ssoToken; @NotNull public final String[] tickers; @NotNull public final CandleInterval[] candleIntervals; public final boolean sandboxMode; public TradingParameters(@NotNull final String ssoToken, @NotNull final String[] tickers, @NotNull final CandleInterval[] candleIntervals, final boolean sandboxMode) { this.ssoToken = ssoToken; this.tickers = tickers; this.candleIntervals = candleIntervals; this.sandboxMode = sandboxMode; } @NotNull public static TradingParameters fromProgramArgs(@NotNull final String ssoTokenArg, @NotNull final String tickersArg, @NotNull final String candleIntervalsArg, @NotNull final String sandboxModeArg) { final var tickers = tickersArg.split(","); final var candleIntervals = Arrays.stream(candleIntervalsArg.split(",")) .map(TradingParameters::parseCandleInterval) .toArray(CandleInterval[]::new); if (candleIntervals.length != tickers.length) throw new IllegalArgumentException("Количество переданных разрешающих интервалов свечей не совпадает с переданным количеством тикеров."); final var useSandbox = Boolean.parseBoolean(sandboxModeArg); return new TradingParameters(ssoTokenArg, tickers, candleIntervals, useSandbox); } private static CandleInterval parseCandleInterval(final String str) { switch (str) { case "1min": return CandleInterval.ONE_MIN; case "2min": return CandleInterval.TWO_MIN; case "3min": return CandleInterval.THREE_MIN; case "5min": return CandleInterval.FIVE_MIN; case "10min": return CandleInterval.TEN_MIN; default: throw new IllegalArgumentException("Не распознан разрешающий интервал!"); } } }