Exemplo n.º 1
0
 public CandleByTicker(CandleByTicker history)
 {
     Ticker = history.Ticker;
     Timeframe = history.Timeframe;
     candles.AddRange(history.candles.Select(c => new CandleData(c)));
     StartTime = history.StartTime;
 }
Exemplo n.º 2
0
        public bool ReadCandlesFromFile(CandleByTicker candles, string path, out int timeframe)
        {
            timeframe = 0;
            using (var sr = new FileStream(path, FileMode.Open, FileAccess.Read))
            {
                var header = sr.ReadStruct<HstFileHeader>();
                if (!header.HasValue)
                    return false;
                var mt4StartDate = new DateTime(1970, 1, 1);
                timeframe = header.Value.period;

                while (true)
                {
                    var record = sr.ReadStruct<HstFileRecord>();
                    if (!record.HasValue) break;

                    var candle = new CandleData
                    {
                        timeOpen = mt4StartDate.AddSeconds(record.Value.ctm),
                        open = (float)record.Value.open,
                        high = (float)record.Value.high,
                        low = (float)record.Value.low,
                        close = (float)record.Value.close
                    };
                    candle.timeClose = candle.timeOpen.AddMinutes(candles.Timeframe);
                    candles.candles.Add(candle);
                }
            }
            if (candles.candles.Count > 0)
                candles.StartTime = candles.candles.Min(c => c.timeOpen);

            return true;
        }
Exemplo n.º 3
0
 public CandleByTicker(CandleByTicker history)
 {
     Ticker    = history.Ticker;
     Timeframe = history.Timeframe;
     candles.AddRange(history.candles.Select(c => new CandleData(c)));
     StartTime = history.StartTime;
 }
        private void ReadCandles()
        {
            var fileExtension   = Path.GetExtension(QuoteFilePath).Trim('.');
            var candlesByTicker = new CandleByTicker();

            if (fileExtension == "fxh")
            {
                var reader = new Mt4CandleReader();
                reader.ReadCandlesFromFile(candlesByTicker, QuoteFilePath, out timeframe);
            }
            if (fileExtension == "hst")
            {
                var reader = new HstFileReader();
                reader.ReadCandlesFromFile(candlesByTicker, QuoteFilePath, out timeframe);
            }
            candles = candlesByTicker.candles;
            LogMessage("Прочитано {0} свечей", candles.Count);
        }
Exemplo n.º 5
0
        public bool ReadCandlesFromFile(CandleByTicker candles, string path, out int timeframe)
        {
            timeframe = 0;
            using (var sr = new FileStream(path, FileMode.Open, FileAccess.Read))
            {
                var header = sr.ReadStruct <DataBaseHeader>();
                if (!header.HasValue)
                {
                    return(false);
                }
                var denominator  = (float)Math.Pow(10, -header.Value.digits);
                var mt4StartDate = new DateTime(1970, 1, 1);
                timeframe = header.Value.period;

                while (true)
                {
                    var record = sr.ReadStruct <RateInfo>();
                    if (!record.HasValue)
                    {
                        break;
                    }

                    var candle = new CandleData
                    {
                        timeOpen = mt4StartDate.AddSeconds(record.Value.ctm),
                        open     = record.Value.open * denominator
                    };
                    candle.high      = candle.open + record.Value.high * denominator;
                    candle.low       = candle.open + record.Value.low * denominator;
                    candle.close     = candle.open + record.Value.close * denominator;
                    candle.timeClose = candle.timeOpen.AddMinutes(candles.Timeframe);
                    candles.candles.Add(candle);
                }
            }
            if (candles.candles.Count > 0)
            {
                candles.StartTime = candles.candles.Min(c => c.timeOpen);
            }

            return(true);
        }
Exemplo n.º 6
0
        public bool ReadCandlesFromFile(CandleByTicker candles, string path, out int timeframe)
        {
            timeframe = 0;
            using (var sr = new FileStream(path, FileMode.Open, FileAccess.Read))
            {
                var header = sr.ReadStruct <HstFileHeader>();
                if (!header.HasValue)
                {
                    return(false);
                }
                var mt4StartDate = new DateTime(1970, 1, 1);
                timeframe = header.Value.period;

                while (true)
                {
                    var record = sr.ReadStruct <HstFileRecord>();
                    if (!record.HasValue)
                    {
                        break;
                    }

                    var candle = new CandleData
                    {
                        timeOpen = mt4StartDate.AddSeconds(record.Value.ctm),
                        open     = (float)record.Value.open,
                        high     = (float)record.Value.high,
                        low      = (float)record.Value.low,
                        close    = (float)record.Value.close
                    };
                    candle.timeClose = candle.timeOpen.AddMinutes(candles.Timeframe);
                    candles.candles.Add(candle);
                }
            }
            if (candles.candles.Count > 0)
            {
                candles.StartTime = candles.candles.Min(c => c.timeOpen);
            }

            return(true);
        }
Exemplo n.º 7
0
        public List <CandleByTicker> ReadCandles()
        {
            var allCandles = new List <CandleByTicker>();
            int fileTimeframe;

            foreach (var ticker in tickers)
            {
                foreach (var timeframe in timeframes)
                {
                    var candles = new CandleByTicker(ticker, timeframe);
                    allCandles.Add(candles);
                    var path = Path.Combine(mt4QuotePath, ticker + timeframe + ".fxh");
                    if (!File.Exists(path))
                    {
                        continue;
                    }
                    ReadCandlesFromFile(candles, path, out fileTimeframe);
                }
            }

            return(allCandles);
        }
 private void ReadCandles()
 {
     var fileExtension = Path.GetExtension(QuoteFilePath).Trim('.');
     var candlesByTicker = new CandleByTicker();
     if (fileExtension == "fxh")
     {
         var reader = new Mt4CandleReader();
         reader.ReadCandlesFromFile(candlesByTicker, QuoteFilePath, out timeframe);
     }
     if (fileExtension == "hst")
     {
         var reader = new HstFileReader();
         reader.ReadCandlesFromFile(candlesByTicker, QuoteFilePath, out timeframe);
     }
     candles = candlesByTicker.candles;
     LogMessage("Прочитано {0} свечей", candles.Count);
 }