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 |
namespace QuantConnect.Algorithm.CSharp { /// <summary> /// Basic template algorithm simply initializes the date range and cash. This is a skeleton /// framework you can use for designing an algorithm. /// </summary> public class ConsolidatorIssue : QCAlgorithm { private Symbol _ej = QuantConnect.Symbol.Create("EURJPY", SecurityType.Forex, Market.Oanda); public override void Initialize() { SetStartDate(new DateTime(2018, 5, 1, 12, 0, 0)); SetEndDate(new DateTime(2018, 5, 1, 23, 59, 0)); SetCash(100000); SetBrokerageModel(BrokerageName.OandaBrokerage); AddForex("EURJPY", Resolution.Minute); // hourly consolidator var hourly = new QuoteBarConsolidator(TimeSpan.FromHours(1)); // bind an event hourly.DataConsolidated += OnNewHour; // Register consolidator to get data SubscriptionManager.AddConsolidator(_ej, hourly); } public void OnNewHour(object sender, QuoteBar bar) { Debug("We got a new HOUR"); Debug($"{Time.ToString("s")} new HOURLY bar from {bar.Time.ToString("s")} to {bar.EndTime.ToString("s")} : {bar.Open} {bar.High} {bar.Low} {bar.Close}"); } public override void OnData(Slice data) { var bars = data.Bars[Symbol("EURJPY")]; if (bars.Time.Second == 0 && bars.Time.Minute == 0) { Debug(". "); Debug(".. "); Debug("... "); Debug($"Start of hour --> {bars.Time.ToString("s")} - {bars.EndTime.ToString("s")} : o {bars.Open}, c {bars.Close}"); } if (bars.Time.Second == 0 && bars.Time.Minute == 1) { Debug($"Next bar --> {bars.Time.ToString("s")} - {bars.EndTime.ToString("s")} : o {bars.Open}, c {bars.Close}"); } if (bars.Time.Second == 0 && bars.Time.Minute == 59) { Debug($"End of hour --> {bars.Time.ToString("s")} - {bars.EndTime.ToString("s")} : o {bars.Close}, c {bars.Close}"); } } } }