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 { public class ResistanceNadionCoreWave : QCAlgorithm { private Dictionary<Symbol, TradeBar> MyStocks = new Dictionary<Symbol, TradeBar>(); public override void Initialize() { SetStartDate(2018, 1, 1); //Set Start Date SetCash(5000); //Set Strategy Cash // AddEquity("SPY", Resolution.Minute); AddUniverse(CoarseSelectionFilter); UniverseSettings.Resolution = Resolution.Minute; UniverseSettings.Leverage = 2; Schedule.On(DateRules.Every(DayOfWeek.Friday), TimeRules.At(11,30), CloseAllPositions); } /// OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here. /// Slice object keyed by symbol containing the stock data public override void OnData(Slice data) { foreach(var security in MyStocks) { var symbol = security.Key; if(data.ContainsKey(symbol) && Portfolio.ContainsKey(symbol) && !Portfolio[symbol].Invested) { Log("Not invested in " + security.Key + " and Consolidator set"); continue; // Your MyStocks doesn't actually contain a TradeBar, so you're trying to access .High of a non-existent object if(data[symbol].Close > security.Value.High) { SetHoldings(symbol, 0.1m); Log("Long: " + symbol); } if(data[symbol].Close < security.Value.Low) { SetHoldings(symbol, -0.1m); Log("Short: " + symbol); } } } } public override void OnSecuritiesChanged(SecurityChanges changes) { foreach(var security in changes.AddedSecurities) { var symbol = security.Symbol; if(!MyStocks.ContainsKey(symbol)) { MyStocks.Add(symbol, null); Consolidate(security.Symbol, TimeSpan.FromMinutes(30), OnDataConsolidation); } } foreach(var security in changes.RemovedSecurities) { MyStocks.Remove(security.Symbol); } } private void OnDataConsolidation(TradeBar bar) { if(bar.Time.Hour == 9 && bar.Time.Minute == 30) { MyStocks[bar.Symbol] = bar; } } private void CloseAllPositions() { foreach(var security in Securities) { Liquidate(security.Key); MyStocks[security.Key] =null; } } public IEnumerable<Symbol> CoarseSelectionFilter(IEnumerable<CoarseFundamental> coarse) { var sortedByDollarVolume = coarse.OrderByDescending(x => x.DollarVolume); var filteredByPrice = sortedByDollarVolume.Where(x => x.Price > 10).Select(x => x.Symbol); filteredByPrice = filteredByPrice.Take(10); return filteredByPrice; } } }