Пример #1
0
        public static void RandomDataGenerator(
            string startDateString,
            string endDateString,
            string symbolCountString,
            string market,
            string securityTypeString,
            string resolutionString,
            string dataDensityString,
            string includeCoarseString,
            string quoteTradeRatioString,
            string randomSeed,
            string hasIpoPercentageString,
            string hasRenamePercentageString,
            string hasSplitsPercentageString,
            string hasDividendsPercentageString,
            string dividendEveryQuarterPercentageString
            )
        {
            var output   = new ConsoleLeveledOutput();
            var settings = RandomDataGeneratorSettings.FromCommandLineArguments(
                startDateString,
                endDateString,
                symbolCountString,
                market,
                securityTypeString,
                resolutionString,
                dataDensityString,
                includeCoarseString,
                quoteTradeRatioString,
                randomSeed,
                hasIpoPercentageString,
                hasRenamePercentageString,
                hasSplitsPercentageString,
                hasDividendsPercentageString,
                dividendEveryQuarterPercentageString,

                output
                );

            if (settings.Start.Year < 1998)
            {
                output.Error.WriteLine($"Required parameter --start must be at least 19980101");
                Environment.Exit(1);
            }

            GenerateRandomData(settings, output);

            if (settings.IncludeCoarse && settings.SecurityType == SecurityType.Equity)
            {
                output.Info.WriteLine("Launching coarse data generator...");

                CoarseUniverseGeneratorProgram.CoarseUniverseGenerator();
            }

            if (!Console.IsInputRedirected)
            {
                output.Info.WriteLine("Press any key to exit...");
                Console.ReadKey();
            }
        }
Пример #2
0
        public static void RandomDataGenerator(
            string startDateString,
            string endDateString,
            string symbolCountString,
            string market,
            string securityTypeString,
            string resolutionString,
            string dataDensityString,
            string includeCoarseString,
            string quoteTradeRatioString,
            string randomSeed,
            string hasIpoPercentageString,
            string hasRenamePercentageString,
            string hasSplitsPercentageString,
            string hasDividendsPercentageString,
            string dividendEveryQuarterPercentageString
            )
        {
            var output   = new ConsoleLeveledOutput();
            var settings = RandomDataGeneratorSettings.FromCommandLineArguments(
                startDateString,
                endDateString,
                symbolCountString,
                market,
                securityTypeString,
                resolutionString,
                dataDensityString,
                includeCoarseString,
                quoteTradeRatioString,
                randomSeed,
                hasIpoPercentageString,
                hasRenamePercentageString,
                hasSplitsPercentageString,
                hasDividendsPercentageString,
                dividendEveryQuarterPercentageString,

                output
                );

            GenerateRandomData(settings, output);

            if (settings.IncludeCoarse && settings.SecurityType == SecurityType.Equity)
            {
                output.Info.WriteLine("Launching coarse data generator...");

                CoarseUniverseGeneratorProgram.CoarseUniverseGenerator();
            }

            output.Info.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
Пример #3
0
        public static void Main(string[] args)
        {
            Log.DebuggingEnabled = Config.GetBool("debug-mode");
            Log.FilePath         = Path.Combine(Config.Get("results-destination-folder"), "log.txt");
            Log.LogHandler       = Composer.Instance.GetExportedValueByTypeName <ILogHandler>(Config.Get("log-handler", "CompositeLogHandler"));

            var optionsObject = ToolboxArgumentParser.ParseArguments(args);

            if (optionsObject.Count == 0)
            {
                PrintMessageAndExit();
            }

            var targetApp = GetParameterOrExit(optionsObject, "app").ToLowerInvariant();

            if (targetApp.Contains("download") || targetApp.EndsWith("dl"))
            {
                var fromDate     = Parse.DateTimeExact(GetParameterOrExit(optionsObject, "from-date"), "yyyyMMdd-HH:mm:ss");
                var resolution   = optionsObject.ContainsKey("resolution") ? optionsObject["resolution"].ToString() : "";
                var market       = optionsObject.ContainsKey("market") ? optionsObject["market"].ToString() : "";
                var securityType = optionsObject.ContainsKey("security-type") ? optionsObject["security-type"].ToString() : "";
                var tickers      = ToolboxArgumentParser.GetTickers(optionsObject);
                var toDate       = optionsObject.ContainsKey("to-date")
                    ? Parse.DateTimeExact(optionsObject["to-date"].ToString(), "yyyyMMdd-HH:mm:ss")
                    : DateTime.UtcNow;
                switch (targetApp)
                {
                case "zdl":
                case "zerodhadownloader":
                    ZerodhaDataDownloaderProgram.ZerodhaDataDownloader(tickers, market, resolution, securityType, fromDate, toDate);
                    break;

                case "gdaxdl":
                case "gdaxdownloader":
                    GDAXDownloaderProgram.GDAXDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "cdl":
                case "cryptoiqdownloader":
                    CryptoiqDownloaderProgram.CryptoiqDownloader(tickers, GetParameterOrExit(optionsObject, "exchange"), fromDate, toDate);
                    break;

                case "ddl":
                case "dukascopydownloader":
                    DukascopyDownloaderProgram.DukascopyDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "fdl":
                case "fxcmdownloader":
                    FxcmDownloaderProgram.FxcmDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "fvdl":
                case "fxcmvolumedownload":
                    FxcmVolumeDownloadProgram.FxcmVolumeDownload(tickers, resolution, fromDate, toDate);
                    break;

                case "ibdl":
                case "ibdownloader":
                    IBDownloaderProgram.IBDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "iexdl":
                case "iexdownloader":
                    IEXDownloaderProgram.IEXDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "iqfdl":
                case "iqfeeddownloader":
                    IQFeedDownloaderProgram.IQFeedDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "kdl":
                case "krakendownloader":
                    KrakenDownloaderProgram.KrakenDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "odl":
                case "oandadownloader":
                    OandaDownloaderProgram.OandaDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "qbdl":
                case "quandlbitfinexdownloader":
                    QuandlBitfinexDownloaderProgram.QuandlBitfinexDownloader(fromDate, GetParameterOrExit(optionsObject, "api-key"));
                    break;

                case "ydl":
                case "yahoodownloader":
                    YahooDownloaderProgram.YahooDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "bfxdl":
                case "bitfinexdownloader":
                    BitfinexDownloaderProgram.BitfinexDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "mbxdl":
                case "binancedownloader":
                    BinanceDownloaderProgram.DataDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "secdl":
                case "secdownloader":
                    SECDataDownloaderProgram.SECDataDownloader(
                        GetParameterOrExit(optionsObject, "destination-dir"),
                        fromDate,
                        toDate
                        );
                    break;

                case "ecdl":
                case "estimizeconsensusdownloader":
                    EstimizeConsensusDataDownloaderProgram.EstimizeConsensusDataDownloader();
                    break;

                case "eedl":
                case "estimizeestimatedownloader":
                    EstimizeEstimateDataDownloaderProgram.EstimizeEstimateDataDownloader();
                    break;

                case "erdl":
                case "estimizereleasedownloader":
                    EstimizeReleaseDataDownloaderProgram.EstimizeReleaseDataDownloader();
                    break;

                case "ustycdl":
                case "ustreasuryyieldcurvedownloader":
                    USTreasuryYieldCurveProgram.USTreasuryYieldCurveRateDownloader(
                        fromDate,
                        toDate,
                        GetParameterOrExit(optionsObject, "destination-dir")
                        );
                    break;

                case "bzndl":
                case "benzinganewsdownloader":
                    BenzingaProgram.BenzingaNewsDataDownloader(
                        fromDate,
                        toDate,
                        GetParameterOrExit(optionsObject, "destination-dir"),
                        GetParameterOrExit(optionsObject, "api-key")
                        );
                    break;

                case "tecdl":
                case "tradingeconomicscalendardownloader":
                    TradingEconomicsDataDownloader.TradingEconomicsCalendarDownloaderProgram.TradingEconomicsCalendarDownloader();
                    break;

                case "pdl":
                case "polygondownloader":
                    PolygonDownloaderProgram.PolygonDownloader(
                        tickers,
                        GetParameterOrExit(optionsObject, "security-type"),
                        GetParameterOrExit(optionsObject, "market"),
                        resolution,
                        fromDate,
                        toDate);
                    break;

                default:
                    PrintMessageAndExit(1, "ERROR: Unrecognized --app value");
                    break;
                }
            }
            else if (targetApp.Contains("updater") || targetApp.EndsWith("spu"))
            {
                switch (targetApp)
                {
                case "mbxspu":
                case "binancesymbolpropertiesupdater":
                    BinanceDownloaderProgram.ExchangeInfoDownloader();
                    break;

                default:
                    PrintMessageAndExit(1, "ERROR: Unrecognized --app value");
                    break;
                }
            }
            else
            {
                switch (targetApp)
                {
                case "asfc":
                case "algoseekfuturesconverter":
                    AlgoSeekFuturesProgram.AlgoSeekFuturesConverter(GetParameterOrExit(optionsObject, "date"));
                    break;

                case "asoc":
                case "algoseekoptionsconverter":
                    AlgoSeekOptionsConverterProgram.AlgoSeekOptionsConverter(GetParameterOrExit(optionsObject, "date"));
                    break;

                case "ivec":
                case "ivolatilityequityconverter":
                    IVolatilityEquityConverterProgram.IVolatilityEquityConverter(GetParameterOrExit(optionsObject, "source-dir"),
                                                                                 GetParameterOrExit(optionsObject, "source-meta-dir"),
                                                                                 GetParameterOrExit(optionsObject, "destination-dir"),
                                                                                 GetParameterOrExit(optionsObject, "resolution"));
                    break;

                case "kdc":
                case "kaikodataconverter":
                    KaikoDataConverterProgram.KaikoDataConverter(GetParameterOrExit(optionsObject, "source-dir"),
                                                                 GetParameterOrExit(optionsObject, "date"),
                                                                 GetParameterOrDefault(optionsObject, "exchange", string.Empty));
                    break;

                case "cadc":
                case "coinapidataconverter":
                    CoinApiDataConverterProgram.CoinApiDataProgram(GetParameterOrExit(optionsObject, "date"), GetParameterOrExit(optionsObject, "market"),
                                                                   GetParameterOrExit(optionsObject, "source-dir"), GetParameterOrExit(optionsObject, "destination-dir"));
                    break;

                case "nmdc":
                case "nsemarketdataconverter":
                    NseMarketDataConverterProgram.NseMarketDataConverter(GetParameterOrExit(optionsObject, "source-dir"),
                                                                         GetParameterOrExit(optionsObject, "destination-dir"));
                    break;

                case "qqc":
                case "quantquoteconverter":
                    QuantQuoteConverterProgram.QuantQuoteConverter(GetParameterOrExit(optionsObject, "destination-dir"),
                                                                   GetParameterOrExit(optionsObject, "source-dir"),
                                                                   GetParameterOrExit(optionsObject, "resolution"));
                    break;

                case "cug":
                case "coarseuniversegenerator":
                    CoarseUniverseGeneratorProgram.CoarseUniverseGenerator();
                    break;

                case "rdg":
                case "randomdatagenerator":
                    RandomDataGeneratorProgram.RandomDataGenerator(
                        GetParameterOrExit(optionsObject, "start"),
                        GetParameterOrExit(optionsObject, "end"),
                        GetParameterOrExit(optionsObject, "symbol-count"),
                        GetParameterOrDefault(optionsObject, "market", null),
                        GetParameterOrDefault(optionsObject, "security-type", "Equity"),
                        GetParameterOrDefault(optionsObject, "resolution", "Minute"),
                        GetParameterOrDefault(optionsObject, "data-density", "Dense"),
                        GetParameterOrDefault(optionsObject, "include-coarse", "true"),
                        GetParameterOrDefault(optionsObject, "quote-trade-ratio", "1"),
                        GetParameterOrDefault(optionsObject, "random-seed", null),
                        GetParameterOrDefault(optionsObject, "ipo-percentage", "5.0"),
                        GetParameterOrDefault(optionsObject, "rename-percentage", "30.0"),
                        GetParameterOrDefault(optionsObject, "splits-percentage", "15.0"),
                        GetParameterOrDefault(optionsObject, "dividends-percentage", "60.0"),
                        GetParameterOrDefault(optionsObject, "dividend-every-quarter-percentage", "30.0")
                        );
                    break;

                case "seccv":
                case "secconverter":
                    var start = Parse.DateTimeExact(GetParameterOrExit(optionsObject, "date"), "yyyyMMdd");
                    SECDataDownloaderProgram.SECDataConverter(
                        GetParameterOrExit(optionsObject, "source-dir"),
                        GetParameterOrDefault(optionsObject, "destination-dir", Globals.DataFolder),
                        start);
                    break;

                case "ustyccv":
                case "ustreasuryyieldcurveconverter":
                    USTreasuryYieldCurveProgram.USTreasuryYieldCurveConverter(
                        GetParameterOrExit(optionsObject, "source-dir"),
                        GetParameterOrExit(optionsObject, "destination-dir"));
                    break;

                case "sidc":
                case "smartinsiderconverter":
                    SmartInsiderProgram.SmartInsiderConverter(
                        DateTime.ParseExact(GetParameterOrExit(optionsObject, "date"), "yyyyMMdd", CultureInfo.InvariantCulture),
                        GetParameterOrExit(optionsObject, "source-dir"),
                        GetParameterOrExit(optionsObject, "destination-dir"),
                        GetParameterOrDefault(optionsObject, "source-meta-dir", null));
                    break;

                case "tiinc":
                case "tiingonewsconverter":
                    var date = GetParameterOrDefault(optionsObject, "date", null);
                    TiingoNewsConverterProgram.TiingoNewsConverter(
                        GetParameterOrExit(optionsObject, "source-dir"),
                        GetParameterOrExit(optionsObject, "destination-dir"),
                        date != null ? DateTime.ParseExact(date, "yyyyMMdd", CultureInfo.InvariantCulture) : (DateTime?)null);
                    break;

                case "bzncv":
                case "benzinganewsconverter":
                    BenzingaProgram.BenzingaNewsDataConverter(
                        GetParameterOrExit(optionsObject, "source-dir"),
                        GetParameterOrExit(optionsObject, "destination-dir"),
                        GetParameterOrDefault(optionsObject, "source-meta-dir", Path.Combine(Globals.DataFolder, "alternative", "benzinga")),
                        GetParameterOrExit(optionsObject, "date"));
                    break;

                default:
                    PrintMessageAndExit(1, "ERROR: Unrecognized --app value");
                    break;
                }
            }
        }
Пример #4
0
        public static void Main(string[] args)
        {
            var optionsObject = ToolboxArgumentParser.ParseArguments(args);

            if (optionsObject.Count == 0)
            {
                PrintMessageAndExit();
            }

            var targetApp = GetParameterOrExit(optionsObject, "app").ToLower();

            if (targetApp.Contains("download") || targetApp.EndsWith("dl"))
            {
                var fromDate   = DateTime.ParseExact(GetParameterOrExit(optionsObject, "from-date"), "yyyyMMdd-HH:mm:ss", CultureInfo.InvariantCulture);
                var resolution = optionsObject.ContainsKey("resolution") ? optionsObject["resolution"].ToString() : "";
                var tickers    = optionsObject.ContainsKey("tickers")
                    ? (optionsObject["tickers"] as Dictionary <string, object>)?.Keys.ToList()
                    : new List <string>();
                var toDate = optionsObject.ContainsKey("to-date")
                    ? DateTime.ParseExact(optionsObject["to-date"].ToString(), "yyyyMMdd-HH:mm:ss", CultureInfo.InvariantCulture)
                    : DateTime.UtcNow;
                switch (targetApp)
                {
                case "gdaxdl":
                case "gdaxdownloader":
                    GDAXDownloaderProgram.GDAXDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "cdl":
                case "cryptoiqdownloader":
                    CryptoiqDownloaderProgram.CryptoiqDownloader(tickers, GetParameterOrExit(optionsObject, "exchange"), fromDate, toDate);
                    break;

                case "ddl":
                case "dukascopydownloader":
                    DukascopyDownloaderProgram.DukascopyDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "fdl":
                case "fxcmdownloader":
                    FxcmDownloaderProgram.FxcmDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "fvdl":
                case "fxcmvolumedownload":
                    FxcmVolumeDownloadProgram.FxcmVolumeDownload(tickers, resolution, fromDate, toDate);
                    break;

                case "ibdl":
                case "ibdownloader":
                    IBDownloaderProgram.IBDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "iexdl":
                case "iexdownloader":
                    IEXDownloaderProgram.IEXDownloader(tickers, resolution, fromDate, toDate, GetParameterOrExit(optionsObject, "api-key"));
                    break;

                case "iqfdl":
                case "iqfeeddownloader":
                    IQFeedDownloaderProgram.IQFeedDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "kdl":
                case "krakendownloader":
                    KrakenDownloaderProgram.KrakenDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "odl":
                case "oandadownloader":
                    OandaDownloaderProgram.OandaDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "qbdl":
                case "quandlbitfinexdownloader":
                    QuandlBitfinexDownloaderProgram.QuandlBitfinexDownloader(fromDate, GetParameterOrExit(optionsObject, "api-key"));
                    break;

                case "ydl":
                case "yahoodownloader":
                    YahooDownloaderProgram.YahooDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "bfxdl":
                case "bitfinexdownloader":
                    BitfinexDownloaderProgram.BitfinexDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "secdl":
                case "secdownloader":
                    var equityFolder = Path.Combine(Globals.DataFolder, "equity", Market.USA);
                    var secFolder    = Path.Combine(Globals.DataFolder, "alternative", "sec");

                    SECDataDownloaderProgram.SECDataDownloader(
                        GetParameterOrDefault(optionsObject, "source-dir", Path.Combine(secFolder, "raw-sec")),
                        GetParameterOrDefault(optionsObject, "destination-dir", secFolder),
                        fromDate,
                        toDate,
                        GetParameterOrDefault(
                            optionsObject,
                            "source-meta-dir",
                            Path.Combine(equityFolder, "daily")
                            )
                        );
                    break;

                case "ecdl":
                case "estimizeconsensusdownloader":
                    EstimizeConsensusDataDownloaderProgram.EstimizeConsensusDataDownloader();
                    break;

                case "eedl":
                case "estimizeestimatedownloader":
                    EstimizeEstimateDataDownloaderProgram.EstimizeEstimateDataDownloader();
                    break;

                case "erdl":
                case "estimizereleasedownloader":
                    EstimizeReleaseDataDownloaderProgram.EstimizeReleaseDataDownloader();
                    break;

                default:
                    PrintMessageAndExit(1, "ERROR: Unrecognized --app value");
                    break;
                }
            }
            else
            {
                switch (targetApp)
                {
                case "asfc":
                case "algoseekfuturesconverter":
                    AlgoSeekFuturesProgram.AlgoSeekFuturesConverter(GetParameterOrExit(optionsObject, "date"));
                    break;

                case "asoc":
                case "algoseekoptionsconverter":
                    AlgoSeekOptionsConverterProgram.AlgoSeekOptionsConverter(GetParameterOrExit(optionsObject, "date"));
                    break;

                case "ivec":
                case "ivolatilityequityconverter":
                    IVolatilityEquityConverterProgram.IVolatilityEquityConverter(GetParameterOrExit(optionsObject, "source-dir"),
                                                                                 GetParameterOrExit(optionsObject, "source-meta-dir"),
                                                                                 GetParameterOrExit(optionsObject, "destination-dir"),
                                                                                 GetParameterOrExit(optionsObject, "resolution"));
                    break;

                case "kdc":
                case "kaikodataconverter":
                    KaikoDataConverterProgram.KaikoDataConverter(GetParameterOrExit(optionsObject, "source-dir"),
                                                                 GetParameterOrExit(optionsObject, "date"),
                                                                 GetParameterOrDefault(optionsObject, "exchange", string.Empty));
                    break;

                case "cadc":
                case "coinapidataconverter":
                    CoinApiDataConverterProgram.CoinApiDataProgram(GetParameterOrExit(optionsObject, "date"), GetParameterOrExit(optionsObject, "market"),
                                                                   GetParameterOrExit(optionsObject, "source-dir"), GetParameterOrExit(optionsObject, "destination-dir"));
                    break;

                case "nmdc":
                case "nsemarketdataconverter":
                    NseMarketDataConverterProgram.NseMarketDataConverter(GetParameterOrExit(optionsObject, "source-dir"),
                                                                         GetParameterOrExit(optionsObject, "destination-dir"));
                    break;

                case "qqc":
                case "quantquoteconverter":
                    QuantQuoteConverterProgram.QuantQuoteConverter(GetParameterOrExit(optionsObject, "destination-dir"),
                                                                   GetParameterOrExit(optionsObject, "source-dir"),
                                                                   GetParameterOrExit(optionsObject, "resolution"));
                    break;

                case "cug":
                case "coarseuniversegenerator":
                    CoarseUniverseGeneratorProgram.CoarseUniverseGenerator();
                    break;

                case "rdg":
                case "randomdatagenerator":
                    RandomDataGeneratorProgram.RandomDataGenerator(
                        GetParameterOrExit(optionsObject, "start"),
                        GetParameterOrExit(optionsObject, "end"),
                        GetParameterOrExit(optionsObject, "symbol-count"),
                        GetParameterOrDefault(optionsObject, "market", null),
                        GetParameterOrDefault(optionsObject, "security-type", "Equity"),
                        GetParameterOrDefault(optionsObject, "resolution", "Minute"),
                        GetParameterOrDefault(optionsObject, "data-density", "Dense"),
                        GetParameterOrDefault(optionsObject, "include-coarse", "true"),
                        GetParameterOrDefault(optionsObject, "quote-trade-ratio", "1"),
                        GetParameterOrDefault(optionsObject, "random-seed", null),
                        GetParameterOrDefault(optionsObject, "ipo-percentage", "5.0"),
                        GetParameterOrDefault(optionsObject, "rename-percentage", "30.0"),
                        GetParameterOrDefault(optionsObject, "splits-percentage", "15.0"),
                        GetParameterOrDefault(optionsObject, "dividends-percentage", "60.0"),
                        GetParameterOrDefault(optionsObject, "dividend-every-quarter-percentage", "30.0")
                        );
                    break;

                default:
                    PrintMessageAndExit(1, "ERROR: Unrecognized --app value");
                    break;
                }
            }
        }
Пример #5
0
        public static void Main(string[] args)
        {
            Log.DebuggingEnabled = Config.GetBool("debug-mode");
            var destinationDir = Config.Get("results-destination-folder");

            if (!string.IsNullOrEmpty(destinationDir))
            {
                Directory.CreateDirectory(destinationDir);
                Log.FilePath = Path.Combine(destinationDir, "log.txt");
            }
            Log.LogHandler = Composer.Instance.GetExportedValueByTypeName <ILogHandler>(Config.Get("log-handler", "CompositeLogHandler"));

            var optionsObject = ToolboxArgumentParser.ParseArguments(args);

            if (optionsObject.Count == 0)
            {
                PrintMessageAndExit();
            }

            var targetApp = GetParameterOrExit(optionsObject, "app").ToLowerInvariant();

            if (targetApp.Contains("download") || targetApp.EndsWith("dl"))
            {
                var fromDate     = Parse.DateTimeExact(GetParameterOrExit(optionsObject, "from-date"), "yyyyMMdd-HH:mm:ss");
                var resolution   = optionsObject.ContainsKey("resolution") ? optionsObject["resolution"].ToString() : "";
                var market       = optionsObject.ContainsKey("market") ? optionsObject["market"].ToString() : "";
                var securityType = optionsObject.ContainsKey("security-type") ? optionsObject["security-type"].ToString() : "";
                var tickers      = ToolboxArgumentParser.GetTickers(optionsObject);
                var toDate       = optionsObject.ContainsKey("to-date")
                    ? Parse.DateTimeExact(optionsObject["to-date"].ToString(), "yyyyMMdd-HH:mm:ss")
                    : DateTime.UtcNow;
                switch (targetApp)
                {
                case "zdl":
                case "zerodhadownloader":
                    ZerodhaDataDownloaderProgram.ZerodhaDataDownloader(tickers, market, resolution, securityType, fromDate, toDate);
                    break;

                case "gdaxdl":
                case "gdaxdownloader":
                    GDAXDownloaderProgram.GDAXDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "cdl":
                case "cryptoiqdownloader":
                    CryptoiqDownloaderProgram.CryptoiqDownloader(tickers, GetParameterOrExit(optionsObject, "exchange"), fromDate, toDate);
                    break;

                case "ddl":
                case "dukascopydownloader":
                    DukascopyDownloaderProgram.DukascopyDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "ibdl":
                case "ibdownloader":
                    IBDownloaderProgram.IBDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "iexdl":
                case "iexdownloader":
                    IEXDownloaderProgram.IEXDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "iqfdl":
                case "iqfeeddownloader":
                    IQFeedDownloaderProgram.IQFeedDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "kdl":
                case "krakendownloader":
                    KrakenDownloaderProgram.KrakenDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "odl":
                case "oandadownloader":
                    OandaDownloaderProgram.OandaDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "qbdl":
                case "quandlbitfinexdownloader":
                    QuandlBitfinexDownloaderProgram.QuandlBitfinexDownloader(fromDate, GetParameterOrExit(optionsObject, "api-key"));
                    break;

                case "ydl":
                case "yahoodownloader":
                    YahooDownloaderProgram.YahooDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "bfxdl":
                case "bitfinexdownloader":
                    BitfinexDownloaderProgram.BitfinexDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "mbxdl":
                case "binancedownloader":
                    BinanceDownloaderProgram.DataDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "pdl":
                case "polygondownloader":
                    PolygonDownloaderProgram.PolygonDownloader(
                        tickers,
                        GetParameterOrExit(optionsObject, "security-type"),
                        GetParameterOrExit(optionsObject, "market"),
                        resolution,
                        fromDate,
                        toDate);
                    break;

                case "avdl":
                case "alphavantagedownloader":
                    AlphaVantageDownloaderProgram.AlphaVantageDownloader(
                        tickers,
                        resolution,
                        fromDate,
                        toDate,
                        GetParameterOrExit(optionsObject, "api-key")
                        );
                    break;

                default:
                    PrintMessageAndExit(1, "ERROR: Unrecognized --app value");
                    break;
                }
            }
            else if (targetApp.Contains("updater") || targetApp.EndsWith("spu"))
            {
                switch (targetApp)
                {
                case "mbxspu":
                case "binancesymbolpropertiesupdater":
                    BinanceDownloaderProgram.ExchangeInfoDownloader();
                    break;

                default:
                    PrintMessageAndExit(1, "ERROR: Unrecognized --app value");
                    break;
                }
            }
            else
            {
                switch (targetApp)
                {
                case "asfc":
                case "algoseekfuturesconverter":
                    AlgoSeekFuturesProgram.AlgoSeekFuturesConverter(GetParameterOrExit(optionsObject, "date"));
                    break;

                case "asoc":
                case "algoseekoptionsconverter":
                    AlgoSeekOptionsConverterProgram.AlgoSeekOptionsConverter(GetParameterOrExit(optionsObject, "date"));
                    break;

                case "ivec":
                case "ivolatilityequityconverter":
                    IVolatilityEquityConverterProgram.IVolatilityEquityConverter(GetParameterOrExit(optionsObject, "source-dir"),
                                                                                 GetParameterOrExit(optionsObject, "source-meta-dir"),
                                                                                 GetParameterOrExit(optionsObject, "destination-dir"),
                                                                                 GetParameterOrExit(optionsObject, "resolution"));
                    break;

                case "kdc":
                case "kaikodataconverter":
                    KaikoDataConverterProgram.KaikoDataConverter(GetParameterOrExit(optionsObject, "source-dir"),
                                                                 GetParameterOrExit(optionsObject, "date"),
                                                                 GetParameterOrDefault(optionsObject, "exchange", string.Empty));
                    break;

                case "cadc":
                case "coinapidataconverter":
                    CoinApiDataConverterProgram.CoinApiDataProgram(GetParameterOrExit(optionsObject, "date"),
                                                                   GetParameterOrExit(optionsObject, "source-dir"), GetParameterOrExit(optionsObject, "destination-dir"));
                    break;

                case "nmdc":
                case "nsemarketdataconverter":
                    NseMarketDataConverterProgram.NseMarketDataConverter(GetParameterOrExit(optionsObject, "source-dir"),
                                                                         GetParameterOrExit(optionsObject, "destination-dir"));
                    break;

                case "qqc":
                case "quantquoteconverter":
                    QuantQuoteConverterProgram.QuantQuoteConverter(GetParameterOrExit(optionsObject, "destination-dir"),
                                                                   GetParameterOrExit(optionsObject, "source-dir"),
                                                                   GetParameterOrExit(optionsObject, "resolution"));
                    break;

                case "cug":
                case "coarseuniversegenerator":
                    CoarseUniverseGeneratorProgram.CoarseUniverseGenerator();
                    break;

                case "rdg":
                case "randomdatagenerator":
                    RandomDataGeneratorProgram.RandomDataGenerator(
                        GetParameterOrExit(optionsObject, "start"),
                        GetParameterOrExit(optionsObject, "end"),
                        GetParameterOrExit(optionsObject, "symbol-count"),
                        GetParameterOrDefault(optionsObject, "market", null),
                        GetParameterOrDefault(optionsObject, "security-type", "Equity"),
                        GetParameterOrDefault(optionsObject, "resolution", "Minute"),
                        GetParameterOrDefault(optionsObject, "data-density", "Dense"),
                        GetParameterOrDefault(optionsObject, "include-coarse", "true"),
                        GetParameterOrDefault(optionsObject, "quote-trade-ratio", "1"),
                        GetParameterOrDefault(optionsObject, "random-seed", null),
                        GetParameterOrDefault(optionsObject, "ipo-percentage", "5.0"),
                        GetParameterOrDefault(optionsObject, "rename-percentage", "30.0"),
                        GetParameterOrDefault(optionsObject, "splits-percentage", "15.0"),
                        GetParameterOrDefault(optionsObject, "dividends-percentage", "60.0"),
                        GetParameterOrDefault(optionsObject, "dividend-every-quarter-percentage", "30.0")
                        );
                    break;

                default:
                    PrintMessageAndExit(1, "ERROR: Unrecognized --app value");
                    break;
                }
            }
        }
Пример #6
0
        public static void Main(string[] args)
        {
            var optionsObject = ToolboxArgumentParser.ParseArguments(args);

            if (optionsObject.Count == 0)
            {
                PrintMessageAndExit();
            }

            var targetApp = GetParameterOrExit(optionsObject, "app").ToLower();

            if (targetApp.Contains("download") || targetApp.EndsWith("dl"))
            {
                var fromDate   = DateTime.ParseExact(GetParameterOrExit(optionsObject, "from-date"), "yyyyMMdd-HH:mm:ss", CultureInfo.InvariantCulture);
                var resolution = optionsObject.ContainsKey("resolution") ? optionsObject["resolution"].ToString() : "";
                var tickers    = optionsObject.ContainsKey("tickers")
                    ? (optionsObject["tickers"] as Dictionary <string, object>)?.Keys.ToList()
                    : new List <string>();
                var toDate = optionsObject.ContainsKey("to-date")
                    ? DateTime.ParseExact(optionsObject["to-date"].ToString(), "yyyyMMdd-HH:mm:ss", CultureInfo.InvariantCulture)
                    : DateTime.UtcNow;
                switch (targetApp)
                {
                case "gdaxdl":
                case "gdaxdownloader":
                    GDAXDownloaderProgram.GDAXDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "cdl":
                case "cryptoiqdownloader":
                    CryptoiqDownloaderProgram.CryptoiqDownloader(tickers, GetParameterOrExit(optionsObject, "exchange"), fromDate, toDate);
                    break;

                case "ddl":
                case "dukascopydownloader":
                    DukascopyDownloaderProgram.DukascopyDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "fdl":
                case "fxcmdownloader":
                    FxcmDownloaderProgram.FxcmDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "fvdl":
                case "fxcmvolumedownload":
                    FxcmVolumeDownloadProgram.FxcmVolumeDownload(tickers, resolution, fromDate, toDate);
                    break;

                case "gdl":
                case "googledownloader":
                    GoogleDownloaderProgram.GoogleDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "ibdl":
                case "ibdownloader":
                    IBDownloaderProgram.IBDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "iexdl":
                case "iexdownloader":
                    IEXDownloaderProgram.IEXDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "kdl":
                case "krakendownloader":
                    KrakenDownloaderProgram.KrakenDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "odl":
                case "oandadownloader":
                    OandaDownloaderProgram.OandaDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "qbdl":
                case "quandlbitfinexdownloader":
                    QuandlBitfinexDownloaderProgram.QuandlBitfinexDownloader(fromDate, GetParameterOrExit(optionsObject, "api-key"));
                    break;

                case "ydl":
                case "yahoodownloader":
                    YahooDownloaderProgram.YahooDownloader(tickers, resolution, fromDate, toDate);
                    break;

                case "bfxdl":
                case "bitfinexdownloader":
                    BitfinexDownloaderProgram.BitfinexDownloader(tickers, resolution, fromDate, toDate);
                    break;

                default:
                    PrintMessageAndExit(1, "ERROR: Unrecognized --app value");
                    break;
                }
            }
            else
            {
                switch (targetApp)
                {
                case "asfc":
                case "algoseekfuturesconverter":
                    AlgoSeekFuturesProgram.AlgoSeekFuturesConverter(GetParameterOrExit(optionsObject, "date"));
                    break;

                case "asoc":
                case "algoseekoptionsconverter":
                    AlgoSeekOptionsConverterProgram.AlgoSeekOptionsConverter(GetParameterOrExit(optionsObject, "date"));
                    break;

                case "ivec":
                case "ivolatilityequityconverter":
                    IVolatilityEquityConverterProgram.IVolatilityEquityConverter(GetParameterOrExit(optionsObject, "source-dir"),
                                                                                 GetParameterOrExit(optionsObject, "source-meta-dir"),
                                                                                 GetParameterOrExit(optionsObject, "destination-dir"),
                                                                                 GetParameterOrExit(optionsObject, "resolution"));
                    break;

                case "kdc":
                case "kaikodataconverter":
                    KaikoDataConverterProgram.KaikoDataConverter(GetParameterOrExit(optionsObject, "market"),
                                                                 GetParameterOrExit(optionsObject, "tick-type"),
                                                                 GetParameterOrExit(optionsObject, "source-dir"));
                    break;

                case "nmdc":
                case "nsemarketdataconverter":
                    NseMarketDataConverterProgram.NseMarketDataConverter(GetParameterOrExit(optionsObject, "source-dir"),
                                                                         GetParameterOrExit(optionsObject, "destination-dir"));
                    break;

                case "qqc":
                case "quantquoteconverter":
                    QuantQuoteConverterProgram.QuantQuoteConverter(GetParameterOrExit(optionsObject, "destination-dir"),
                                                                   GetParameterOrExit(optionsObject, "source-dir"),
                                                                   GetParameterOrExit(optionsObject, "resolution"));
                    break;

                case "cug":
                case "coarseuniversegenerator":
                    CoarseUniverseGeneratorProgram.CoarseUniverseGenerator();
                    break;

                default:
                    PrintMessageAndExit(1, "ERROR: Unrecognized --app value");
                    break;
                }
            }
        }
Пример #7
0
        public static void RandomDataGenerator(
            string startDateString,
            string endDateString,
            string symbolCountString,
            string market,
            string securityTypeString,
            string resolutionString,
            string dataDensityString,
            string includeCoarseString,
            string quoteTradeRatioString,
            string randomSeed,
            string hasIpoPercentageString,
            string hasRenamePercentageString,
            string hasSplitsPercentageString,
            string hasDividendsPercentageString,
            string dividendEveryQuarterPercentageString,
            string optionPriceEngineName,
            string volatilityModelResolutionString,
            string chainSymbolCountString,
            List <string> tickers
            )
        {
            var settings = RandomDataGeneratorSettings.FromCommandLineArguments(
                startDateString,
                endDateString,
                symbolCountString,
                market,
                securityTypeString,
                resolutionString,
                dataDensityString,
                includeCoarseString,
                quoteTradeRatioString,
                randomSeed,
                hasIpoPercentageString,
                hasRenamePercentageString,
                hasSplitsPercentageString,
                hasDividendsPercentageString,
                dividendEveryQuarterPercentageString,
                optionPriceEngineName,
                volatilityModelResolutionString,
                chainSymbolCountString,
                tickers
                );

            if (settings.Start.Year < 1998)
            {
                Log.Error($"RandomDataGeneratorProgram(): Required parameter --start must be at least 19980101");
                Environment.Exit(1);
            }

            var securityManager = new SecurityManager(new TimeKeeper(settings.Start, new[] { TimeZones.Utc }));
            var securityService = new SecurityService(
                new CashBook(),
                MarketHoursDatabase.FromDataFolder(),
                SymbolPropertiesDatabase.FromDataFolder(),
                new SecurityInitializerProvider(new FuncSecurityInitializer(security =>
            {
                // init price
                security.SetMarketPrice(new Tick(settings.Start, security.Symbol, 100, 100));
                security.SetMarketPrice(new OpenInterest(settings.Start, security.Symbol, 10000));

                // from settings
                security.VolatilityModel = new StandardDeviationOfReturnsVolatilityModel(settings.VolatilityModelResolution);

                // from settings
                if (security is Option option)
                {
                    option.PriceModel = OptionPriceModels.Create(settings.OptionPriceEngineName, Statistics.PortfolioStatistics.GetRiskFreeRate());
                }
            })),
                RegisteredSecurityDataTypesProvider.Null,
                new SecurityCacheProvider(
                    new SecurityPortfolioManager(securityManager, new SecurityTransactionManager(null, securityManager))),
                new MapFilePrimaryExchangeProvider(Composer.Instance.GetExportedValueByTypeName <IMapFileProvider>(Config.Get("map-file-provider", "LocalDiskMapFileProvider")))
                );

            securityManager.SetSecurityService(securityService);

            var generator = new RandomDataGenerator();

            generator.Init(settings, securityManager);
            generator.Run();

            if (settings.IncludeCoarse && settings.SecurityType == SecurityType.Equity)
            {
                Log.Trace("RandomDataGeneratorProgram(): Launching coarse data generator...");

                CoarseUniverseGeneratorProgram.CoarseUniverseGenerator();
            }

            if (!Console.IsInputRedirected)
            {
                Log.Trace("RandomDataGeneratorProgram(): Press any key to exit...");
                Console.ReadKey();
            }
        }