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 System.Globalization; using QuantConnect.Data; using QuantConnect.Data.Market; using QuantConnect.Indicators; using QuantConnect.Indicators.CandlestickPatterns; namespace QuantConnect.Algorithm.CSharp { public class CandlestickCloseMarPriorVol5minESData : QCAlgorithm { private string _symbol = "ES"; private ClosingMarubozu _pattern = new ClosingMarubozu(); public RollingWindow<CloseMaribos1> history = new RollingWindow<CloseMaribos1>(2); /// <summary> /// Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must be initialized. /// </summary> public override void Initialize() { SetStartDate(2016, 01, 04); //Set Start Date SetEndDate(2016, 01, 04); //Set End Date SetCash(100000); //Set Strategy Cash AddData<CloseMaribos1>(_symbol); _pattern = CandlestickPatterns.ClosingMarubozu(_symbol); } /// <summary> /// OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here. /// </summary> public void OnData(CloseMaribos1 data) { history.Add(data); if (data.Time.TimeOfDay < new TimeSpan(9, 35, 00) || data.Time.TimeOfDay > new TimeSpan(12, 00, 00)) { return; } else { if (_pattern == 1)// Bullish ClosingMarubozu { Debug(Time + " -> found Bullish ClosingMarubozu"); Debug("Vol = " + data.Volume); Debug("Prior Vol = " + history[1].Volume); } } } } public class CloseMaribos1 : TradeBar { public decimal UpperShadow { get; set; } public decimal LowerShadow { get; set; } public decimal HighLow { get; set; } public decimal RealBody { get; set; } public decimal UpperShadowPercent { get; set; } public decimal LowerShadowPercent { get; set; } /// <summary> /// Return the URL external source for the data: QuantConnect will download it an read it line by line automatically: /// </summary> public override SubscriptionDataSource GetSource(SubscriptionDataConfig config, DateTime date, bool isLiveMode) { return new SubscriptionDataSource("https://www.dropbox.com/s/nybrjl87y877flp/ES%202016-01-04%20-%202016-12-19%20-%20EST.csv?dl=1", SubscriptionTransportMedium.RemoteFile); } /// <summary> /// Convert each line of the file above into an object. /// </summary> public override BaseData Reader(SubscriptionDataConfig config, string line, DateTime date, bool isLiveMode) { CloseMaribos1 cmBar = new CloseMaribos1(); try { var data = line.Split(','); //Required. cmBar.Symbol = "ES"; cmBar.Time = DateTime.ParseExact(data[0] + data[1], "yyyyMMddhhmmss", CultureInfo.InvariantCulture); //User configured / optional data on each bar: cmBar.Open = Convert.ToDecimal(data[2], CultureInfo.InvariantCulture); cmBar.High = Convert.ToDecimal(data[3], CultureInfo.InvariantCulture); cmBar.Low = Convert.ToDecimal(data[4], CultureInfo.InvariantCulture); cmBar.Close = Convert.ToDecimal(data[5], CultureInfo.InvariantCulture); cmBar.Volume = Convert.ToInt32(data[6], CultureInfo.InvariantCulture); //This is the value the engine uses for portfolio calculations cmBar.Value = cmBar.Close; if (cmBar.Close > cmBar.Open) { cmBar.UpperShadow = (cmBar.High - cmBar.Close); cmBar.LowerShadow = (cmBar.Open - cmBar.Low); cmBar.RealBody = (cmBar.Close - cmBar.Open); } else { cmBar.UpperShadow = (cmBar.High - cmBar.Open); cmBar.LowerShadow = (cmBar.Close - cmBar.Low); cmBar.RealBody = (cmBar.Open - cmBar.Close); } cmBar.HighLow = (cmBar.High - cmBar.Low); cmBar.UpperShadowPercent = (cmBar.UpperShadow / cmBar.HighLow * 100); cmBar.LowerShadowPercent = (cmBar.LowerShadow / cmBar.HighLow * 100); } catch (Exception exception) { Console.WriteLine(exception.Message); } return cmBar; } } }