public static double CalcTrueRange(XCandle prevDay, XCandle currentDay)
        {
            var d = new double[3];

            d[0] = (double)(prevDay.HighPrice - prevDay.ClosePrice);
            d[1] = Math.Abs((double)(prevDay.ClosePrice - currentDay.HighPrice));
            d[2] = Math.Abs((double)(prevDay.ClosePrice - currentDay.LowPrice));
            return(d.Max());
        }
 public void Add(XCandle candle, T res)
 {
     /*if (m_results.ContainsKey(candle))
      * {
      *      var x = m_results[candle];
      *      Console.WriteLine(candle.Timestamp);
      *      return;
      * }*/
     m_results[candle] = res;
     //m_results.Add(candle, res);
 }
 public int Compare(XCandle x, XCandle y)
 {
     if (x.Timestamp < y.Timestamp)
     {
         return(-1);
     }
     else if (x.Timestamp > y.Timestamp)
     {
         return(+1);
     }
     else
     {
         return(0);
     }
 }
        public List <XCandle> ReadCandles(string exchange, string symbol, int minutes)
        {
            var    result   = new List <XCandle>();
            string filename = string.Format("candles_{0}_{1}_{2}", exchange, symbol, GetBarPeriod(minutes * 60));
            var    fin      = new InputFile <XCandle>(filename, Folder.crypto_folder, false);
            string line;

            while ((line = fin.ReadLine()) != null)
            {
                var candle = new XCandle();
                Reflection.SetPropertyValues <XCandle>(candle, line);
                result.Add(candle);
                //Console.WriteLine(candle);
            }
            fin.Close();
            return(result);
        }
 public BacktestTrade(OrderSide side, decimal price, XCandle candle)
 {
     Side   = side;
     Price  = price;
     Candle = candle;
 }