| 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.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using QuantConnect.Data;
using QuantConnect.Data.Market;
using System.Diagnostics;
using QuantConnect.Data.UniverseSelection;
namespace QuantConnect.Algorithm.CSharp
{
class Quantithmar : QCAlgorithm
{
//private Symbol _spy = QuantConnect.Symbol.Create("SPY", SecurityType.Equity, Market.USA);
private int _universeSize = 500, _trackerCount = 5;
private List<QuantConnect.Securities.Security> _dailyTrackers = new List<QuantConnect.Securities.Security>();
/// <summary>
/// Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized.
/// </summary>
public override void Initialize()
{
SetStartDate(2017, 08, 01);
SetCash(100000);
Schedule.On(DateRules.EveryDay(), TimeRules.At(9, 31), SelectStocks);
//SetRunMode(RunMode.Parallel);
UniverseSettings.Resolution = Resolution.Daily;
AddUniverse(Universe.DollarVolume.Top(_universeSize));
Debug(Time.ToString());
}
private void SelectStocks()
{
Dictionary<QuantConnect.Securities.Security, decimal> changes = new Dictionary<QuantConnect.Securities.Security, decimal>();
IEnumerable<Slice> slices = History(TimeSpan.FromDays(1), Resolution.Daily);
foreach (var s in Securities)
{
var symbol = s.Value.Symbol;
if (slices.Count() > 0 && s.Value.Price > 0)
{
IEnumerable<decimal> closingPrices = slices.Get(symbol, Field.Close);
var previous = closingPrices.FirstOrDefault();
var change = previous == 0 ? 0 : (s.Value.Price - previous) / previous;
changes.Add(s.Value, change);
}
//Securities.Remove(symbol);
//RemoveSecurity(symbol);
//SubscriptionManager.Subscriptions.RemoveWhere(x => x.Symbol == symbol);
}
if (changes.Count > 0)
{
_dailyTrackers = changes.OrderByDescending(x => x.Value).Take(_trackerCount).Select(x => x.Key).ToList();
Debug(Time.ToShortDateString() + ": " + String.Join(", ", _dailyTrackers.Select(x => x.Symbol)));
//AddEquity(_dailyTrackers.First().Symbol.Value, Resolution.Minute);
}
}
/// <summary>
/// OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.
/// </summary>
/// <param name="data">Slice object keyed by symbol containing the stock data</param>
public override void OnData(Slice data)
{
if (!Portfolio.Invested)
{
}
}
}
}