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 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 RelativeStrengthIndex _rsi; public override void Initialize() { SetStartDate(2019, 8, 2); SetEndDate(2019, 8, 2); security = AddData<CustomData>(symbol, Resolution.Minute); security.Subscriptions.SetDataNormalizationMode(DataNormalizationMode.Raw); //Sample data with RSI Calulation //backtest RSI value not match with source data //https://docs.google.com/spreadsheets/d/1IjqODKsDB6kwp-vjY7xefD_sNgCQyjNY4TPFOTbngyg/edit?usp=sharing _rsi = RSI(security.Symbol, 14, MovingAverageType.Exponential, Resolution.Minute,Field.Close); } public override void OnData(Slice slice) { if (!_rsi.IsReady) { return; } Log($"{Time} | {symbol}: O:{slice[symbol].Open} H:{slice[symbol].High} L:{slice[symbol].Low} C: {slice[symbol].Close} | RSI: { _rsi }"); } } }
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/gtapm0oos2z8kfn/4082019HAVELLS.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; } } }