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 { public class ConsolidationAlgorithm : QCAlgorithm { private const decimal stop_loss = 0.25m; private const decimal take_profit = 0.50m; // Tradebar quoteBar; private const string RootSP500 = Futures.Indices.SP500EMini; private readonly HashSet<Symbol> _futureContracts = new HashSet<Symbol>(); // private decimal new_SL = 0.0m ; // private decimal new_TP = 0.0m ; // int quantity = 1; // int count = 0; // int loss= 0 ; private TradeBar _spyMinutes; public Symbol _symbol = QuantConnect.Symbol.Create(RootSP500, SecurityType.Future, Market.USA); private Dictionary<FuturesContract, WilliamsPercentR> _williamsRs; public override void Initialize() { SetStartDate(year: 2013, month: 10, day: 8); SetEndDate(year: 2014, month: 6, day: 11); SetCash(startingCash: 25000); var futureSP500 = AddFuture(RootSP500); futureSP500.SetFilter(TimeSpan.Zero, TimeSpan.FromDays(value: 91)); SetBenchmark(x => 0); _williamsRs = _williamsRs = new Dictionary<FuturesContract, WilliamsPercentR>(); } public override void OnData(Slice slice) { foreach (var chain in slice.FutureChains) { foreach (var contract in chain.Value) { if (!_futureContracts.Contains(contract.Symbol)) { _futureContracts.Add(contract.Symbol); var consolidator = new TradeBarConsolidator(TimeSpan.FromHours(12)); consolidator.DataConsolidated += OnDataConsolidated; SubscriptionManager.AddConsolidator(contract.Symbol, consolidator); _williamsRs[contract] = (new WilliamsPercentR(14)); RegisterIndicator(contract.Symbol, _williamsRs[contract], consolidator); Log("|||||Added new consolidator for " + contract.Symbol.Value); } } } } private void OnDataConsolidated(object sender, TradeBar quoteBar) { Log("OnDataConsolidated called"); var indicators = _williamsRs.Where(x => x.Key.Symbol == quoteBar.Symbol).ToList(); foreach (var willR in indicators) { if (willR.Key.Expiry < Time) { // Drop expired indicators var msg = string.Format("Drop Williams R for {0} at expiration.", willR.Key.Symbol); Log(msg); _williamsRs.Remove(willR.Key); } else { var msg = string.Format("Williams R for {0} is {1:F4}", willR.Key.Symbol, willR.Value.Current.Value); Log(msg); if (willR.Value.IsReady) { // Implement your logic here Log("Strategy Logic run. "); } } } } } }