private static ThreeMarketsDataProviderModel[] Join(ThreeMarketsDatasetModel model) => model.Coin12CoinKlines.AsParallel() .Join(model.Coin22CoinKlines.AsParallel(), B2AKline => B2AKline.Date, C2AKline => C2AKline.Date, (B2AKline, C2AKline) => new { B2AKline, C2AKline }) .Join(model.Coin22Coin1Klines.AsParallel(), item => item.B2AKline.Date, C2BKline => C2BKline.Date, (item, C2BKline) => new ThreeMarketsDataProviderModel { Coin12CoinKline = item.B2AKline, Coin22CoinKline = item.C2AKline, Coin22Coin1Kline = C2BKline }) .OrderBy(item => item.Coin12CoinKline.Date).ToArray();
public async Task TestLoadDataAsync() { ThreeMarketsDatasetModel dataset = await ThreeMarketsDataLoader.LoadCsvDataAsync(Utils.btc_usdtPath, Utils.eth_usdtPath, Utils.eth_btcPath); Assert.AreEqual("BTCUSDT-Spot", dataset.Coin12CoinKlines[0].StockCode); Assert.AreEqual(309559, dataset.Coin12CoinKlines.Length); Assert.AreEqual("ETHUSDT-Spot", dataset.Coin22CoinKlines[0].StockCode); Assert.AreEqual(309559, dataset.Coin22CoinKlines.Length); Assert.AreEqual("ETHBTC-Spot", dataset.Coin22Coin1Klines[0].StockCode); Assert.AreEqual(309559, dataset.Coin22Coin1Klines.Length); }
static async Task Main(string[] args) { int[] observationTimes = new int[] { 3, 5, 15, 30, 60, 120, 240, 360, 480, 720, 1440, 4320, 10080, 20160, 30240, 40320 }; int[] tradingIntervals = new int[] { 1, 3, 5, 15, 30, 60, 120, 240, 360, 480, 720, 1440 }; ThreeMarketsDatasetModel dataset = await ThreeMarketsDataLoader.LoadCsvDataAsync(Path.Combine(datasetPath, "BTCUSDT-Spot.csv"), Path.Combine(datasetPath, "ETHUSDT-Spot.csv"), Path.Combine(datasetPath, "ETHBTC-Spot.csv")); ThreeMarketsDataProvider dataProvider = new(dataset); EnvironmentParams environmentParams = new(20000, 10000, 0.1m, 3); await RunAllParams.RunCloseChangeAllParams(dataProvider, environmentParams, observationTimes, tradingIntervals, savePath); }
public ThreeMarketsDataProvider(ThreeMarketsDatasetModel model) => models = Join(model);