Overall Statistics
Total Trades
0
Average Win
0%
Average Loss
0%
Compounding Annual Return
0%
Drawdown
0%
Expectancy
0
Net Profit
0%
Sharpe Ratio
0
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
0
Beta
0
Annual Standard Deviation
0
Annual Variance
0
Information Ratio
0
Tracking Error
0
Treynor Ratio
0
Total Fees
$0.00
using QuantConnect.Data;
using System;
using System.Globalization;

namespace QuantConnect.Algorithm.CSharp
{
    public class CustomData : BaseData
    {
        /// <summary>
        /// Opening Price
        /// </summary>
        public decimal Open;
        /// <summary>
        /// High Price
        /// </summary>
        public decimal High;
        /// <summary>
        /// Low Price
        /// </summary>
        public decimal Low;
        /// <summary>
        /// Closing Price
        /// </summary>
        public decimal Close;
        /// <summary>
        /// Volume
        /// </summary>
        public decimal Volume;

        /// <summary>
        /// Return the URL string source of the file. This will be converted to a stream
        /// </summary>
        public override SubscriptionDataSource GetSource(SubscriptionDataConfig config, DateTime date, bool isLiveMode)
        {            
            return new SubscriptionDataSource($"https://www.dropbox.com/s/j98rg1hp903l3a8/SampleData.csv?dl=1", SubscriptionTransportMedium.RemoteFile);
        }

        /// <summary>
        /// Reader converts each line of the data source into BaseData objects. Each data type creates its own factory method, and returns a new instance of the object
        /// each time it is called.
        /// </summary>
        public override BaseData Reader(SubscriptionDataConfig config, string line, DateTime date, bool isLiveMode)
        {
            //New Nifty object
            var index = new CustomData();

            try
            {
                //Example File Format:
                //Date,       Time      Open       High        Low       Close     Volume      Turnover
                //19-Jul-2019   09:15:00   7792.9    7799.9     7722.65    7748.7    116534670    6107.78
                var data = line.Split(',');
                var strDate = data[0] + " " + data[1];
            
                index.Time = DateTime.Parse(strDate, CultureInfo.InvariantCulture);
                index.Open = Convert.ToDecimal(data[2], CultureInfo.InvariantCulture);
                index.High = Convert.ToDecimal(data[3], CultureInfo.InvariantCulture);
                index.Low = Convert.ToDecimal(data[4], CultureInfo.InvariantCulture);
                index.Close = Convert.ToDecimal(data[5], CultureInfo.InvariantCulture);
                index.Symbol = config.Symbol.Value;
                index.Value = index.Close;
            }
            catch (Exception e)
            {
                Console.WriteLine("ERROR: " + e.ToString());
            }
            return index;
        }
    }
}
using System;
using QuantConnect.Data;
using QuantConnect.Indicators;
using QuantConnect.Orders;
using QuantConnect.Securities;

namespace QuantConnect.Algorithm.CSharp
{
    public class BacktestingData : QCAlgorithm
    {
        string symbol = "HAVELLS";
        Security security;

        private MovingAverageConvergenceDivergence _macd;

        public override void Initialize()
        {
            SetStartDate(2019, 7, 19);
            SetEndDate(2019, 7, 26);
            //SetTimeZone("Asia/Kolkata");

            security = AddData<CustomData>(symbol, Resolution.Minute);            
            // security.Subscriptions.SetDataNormalizationMode(DataNormalizationMode.Raw);
            
            _macd = MACD(security.Symbol, 12, 26, 9, MovingAverageType.Exponential, Resolution.Minute);
        }

        public override void OnData(Slice slice)
        {
            // if (!_macd.IsReady) { return; }
            Log($"{Time} |  {symbol}: O:{slice[symbol].Open} H:{slice[symbol].High} L:{slice[symbol].Low} C: {slice[symbol].Close}");            
        }

        public override void OnOrderEvent(OrderEvent orderEvent)
        {
            base.OnOrderEvent(orderEvent);
        }
    }
}