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.Drawing; using QuantConnect.Data.Consolidators; using QuantConnect.Data.Market; namespace QuantConnect.Algorithm.CSharp { /// <summary> /// Demonstration of how to initialize and use the RenkoConsolidator /// </summary> /// <meta name="tag" content="renko" /> /// <meta name="tag" content="indicators" /> /// <meta name="tag" content="using data" /> /// <meta name="tag" content="consolidating data" /> public class RenkoConsolidatorAlgorithm : QCAlgorithm { protected DateTime iBarTime; protected string iSymbol = "SPY"; protected string iChartName = "Deals"; /// <summary> /// Initializes the algorithm state. /// </summary> public override void Initialize() { SetStartDate(2012, 01, 01); SetEndDate(2013, 01, 01); AddSecurity(SecurityType.Equity, iSymbol); // this is the simple constructor that will perform the renko logic to the Value // property of the data it receives. // break SPY into $2.5 renko bricks and send that data to our 'OnRenkoBar' method var renkoClose = new RenkoConsolidator(10m); renkoClose.DataConsolidated += (sender, consolidated) => { HandleRenkoClose(consolidated); }; SubscriptionManager.AddConsolidator(iSymbol, renkoClose); var chart = new Chart(iChartName); var seriesStock = new Series("Stock", SeriesType.Line, 0); var seriesBuy = new Series("Buy", SeriesType.Scatter, 0) { Color = Color.Blue, ScatterMarkerSymbol = ScatterMarkerSymbol.Triangle }; var seriesSell = new Series("Sell", SeriesType.Scatter, 0) { Color = Color.Red, ScatterMarkerSymbol = ScatterMarkerSymbol.TriangleDown }; var seriesVolume = new Series("Volume", SeriesType.Line, 1); var seriesBalance = new Series("Balance", SeriesType.Line, 2); var seriesEquity = new Series("Equity", SeriesType.Line, 2); var seriesRenko = new Series("Renko", SeriesType.Line, 3); var seriesRenkoVolume = new Series("Renko Volume", SeriesType.Line, 4); chart.AddSeries(seriesStock); chart.AddSeries(seriesVolume); chart.AddSeries(seriesBuy); chart.AddSeries(seriesSell); chart.AddSeries(seriesBalance); chart.AddSeries(seriesEquity); chart.AddSeries(seriesRenko); chart.AddSeries(seriesRenkoVolume); AddChart(chart); } /// <summary> /// We're doing our analysis in the OnRenkoBar method, but the framework verifies that this method exists, so we define it. /// </summary> public void OnData(TradeBars data) { if (Securities[iSymbol].LocalTime > iBarTime.AddHours(1)) { iBarTime = Securities[iSymbol].LocalTime; Plot(iChartName, "Stock", data[iSymbol].Close); Plot(iChartName, "Volume", data[iSymbol].Volume); } } /// <summary> /// This function is called by our renkoClose consolidator defined in Initialize() /// </summary> /// <param name="data">The new renko bar produced by the consolidator</param> public void HandleRenkoClose(RenkoBar data) { Plot(iChartName, "Renko", data.Close); Plot(iChartName, "Renko Volume", data.Volume); if (!Portfolio.Invested) { //SetHoldings(data.Symbol, 1.0); } } } }