Ich schreibe ein Skript, um eine Reihe von Daten zu durchlaufen, überprüfe, ob jedes Datum ein gültiger Handelstag ist und überprüfe, dass für jedes Datum ein entsprechender Ordner- und Dateiname existiert.C# Zeichen geändert beim Zurückgeben von Zip-Ordner- und Dateinamen
Quantconnect/Lean Githib repo for classes
Das Problem, das ich habe, ist, dass meine File.Exists(dataFile)
Methode ist falsch jedes Mal kommen. Grund ist, dass die Namen der Ordner, die in formattedFolderName
gespeichert werden, ihre Zeichen geändert haben.
Die Zielordner selbst sind gezippt, also frage ich mich, ob das vielleicht das Problem ist?
Intended Dateipfad: C:\Users\richa_000\Desktop\exporter\forex\fxcm\minute\audjpy\20070401_quote\20070401_audjpy_minute_quote
tatsächlicher Dateipfad: C:\Users\richa_000\Desktop\exporter\forex\fxcm\minute\audjpy\20070401_quoAe\20070401_au1jp7_0inuAe_quoAe
Ich denke, es Zip-Ordner sein könnte, 20070401_quote
mit dieser Unordnung, aber ich bin mir nicht sicher.
Program.cs
using System;
using System.IO;
using QuantConnect;
using QuantConnect.Securities;
using QuantConnect.Securities.Forex;
namespace TradingDaysFileChecker
{
class Program
{
static void Main(string[] args)
{
var startDate = new DateTime(2007, 04, 01);
var endDate = new DateTime(2016, 07, 25);
var dataFilePath = @"C:\Users\richa_000\Desktop\exporter\forex\fxcm\minute\";
var securityType = SecurityType.Forex;
var ticker = TickType.Trade;
var marketHoursDatabase = MarketHoursDatabase.FromDataFolder();
var market = Market.FXCM;
var symbol = Symbol.Create(ticker.ToString(), securityType, market);
var marketHoursDbEntry = marketHoursDatabase.GetEntry(symbol.ID.Market, symbol.Value, symbol.ID.SecurityType);
var exchange = new ForexExchange(marketHoursDbEntry.ExchangeHours);
var validTradingDays = new DateHandler(startDate, endDate, dataFilePath).IterateOverDateRange(exchange);
var forexSecuritiesFolders = Directory.GetDirectories(dataFilePath);
foreach (var validDay in validTradingDays)
{
foreach (var forexSecurity in forexSecuritiesFolders)
{
var securityName = new DirectoryInfo(forexSecurity).Name.ToString();
var formattedFolderName = validDay.ToString("yyyyMMdd_quote");
var formattedFileName = validDay.ToString($"yyyyMMdd_{securityName}_minute_quote");
var dataFile = dataFilePath + securityName + @"\" + formattedFolderName + @"\" + formattedFileName;
if (!File.Exists(dataFile))
{
Console.WriteLine(dataFile);
Console.ReadLine(); // Stopping after the first run while troubleshooting
}
}
}
Console.ReadLine();
}
}
}
DateHandler.cs
using System;
using System.Collections.Generic;
using QuantConnect.Securities.Forex;
namespace TradingDaysFileChecker
{
public class DateHandler
{
private DateTime _startDate;
private DateTime _endDate;
public DateHandler(DateTime startDate, DateTime endDate, string filePath)
{
_startDate = startDate;
_endDate = endDate;
}
public IEnumerable<DateTime> IterateOverDateRange(ForexExchange exchange)
{
for (var day = _startDate.Date; day.Date <= _endDate.Date; day = day.AddDays(1))
if (exchange.IsOpenDuringBar(day.Date, day.Date.AddDays(1), false))
{
yield return day;
}
}
}
}
Haben Sie versucht, Ihre \ Flucht anstatt wörtlich Strings zu verwenden? Also "\\" statt @ "\"? –
@EricWalker Ja ich habe, es wird das gleiche Ergebnis –